From 9191d585133e16968354e86fd189fc7c9aea79dc Mon Sep 17 00:00:00 2001 From: Li ZongYing Date: Mon, 18 Dec 2023 10:12:52 +0800 Subject: [PATCH] backup source --- .github/workflows/build.yml | 2 +- app/build.gradle | 3 +- app/src/main/cpp/armeabi-v7a/libnative.so | Bin 31696 -> 34184 bytes .../java/com/lizongying/mytv/MainFragment.kt | 13 +++-- .../main/java/com/lizongying/mytv/Request.kt | 33 ++++++----- .../main/java/com/lizongying/mytv/TVList.kt | 37 +++++------- .../com/lizongying/mytv/models/TVViewModel.kt | 55 +++++++++++++----- 7 files changed, 88 insertions(+), 55 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 89aaa83..a7a8da6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: distribution: 'temurin' - name: Run build with Gradle wrapper - run: ./gradlew assembleRelease + run: ./gradlew assembleRelease -PIS_SO_BUILD=false - name: Sign app APK id: sign_app diff --git a/app/build.gradle b/app/build.gradle index 6d2470e..0194a1e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,8 +24,7 @@ android { // For ndk-build, instead use the ndkBuild block. cmake { -// arguments "-DIS_SO_BUILD=${project.hasProperty('IS_SO_BUILD') ? project.IS_SO_BUILD : false}" - arguments "-DIS_SO_BUILD=${false}" + arguments "-DIS_SO_BUILD=${project.hasProperty('IS_SO_BUILD') ? project.IS_SO_BUILD : true}" abiFilters "armeabi-v7a", "arm64-v8a" } diff --git a/app/src/main/cpp/armeabi-v7a/libnative.so b/app/src/main/cpp/armeabi-v7a/libnative.so index e586369826ecbe2e3aff78ced166192a2209becb..31d1ee4b9f6f9ae1411204a3f53214725be68139 100755 GIT binary patch literal 34184 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

2qOGEuJ?k^ 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 C%UksT diff --git a/app/src/main/java/com/lizongying/mytv/MainFragment.kt b/app/src/main/java/com/lizongying/mytv/MainFragment.kt index 7bbd215..5bb1e60 100644 --- a/app/src/main/java/com/lizongying/mytv/MainFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/MainFragment.kt @@ -61,11 +61,12 @@ class MainFragment : BrowseSupportFragment() { } tvListViewModel.getListLiveData().value?.forEach { tvViewModel -> - tvViewModel.videoUrl.observe(viewLifecycleOwner) { _ -> -// Log.i(TAG, "tv ${tvViewModel.getTV()}") - if (tvViewModel.updateByYSP()) { + tvViewModel.videoIndex.observe(viewLifecycleOwner) { videoIndex -> + if (tvViewModel.getIsFirstTime()) { + tvViewModel.isFirstTime(false) + } else { val tv = tvViewModel.getTV() - if (tv.id == itemPosition) { + if (tvViewModel.id.value == itemPosition) { (activity as? MainActivity)?.play(tv) // (activity as? MainActivity)?.switchInfoFragment(tv) } @@ -129,7 +130,6 @@ class MainFragment : BrowseSupportFragment() { val tvModel = tvListViewModel.getTVModel(itemPosition) if (tvModel?.ysp() != null) { - Log.i(TAG, "ysp ${tvModel.getTV()}") lifecycleScope.launch(Dispatchers.IO) { tvModel.let { request?.fetchData(it) } } @@ -171,6 +171,7 @@ class MainFragment : BrowseSupportFragment() { val tvModel = tvListViewModel.getTVModel(itemPosition) if (tvModel?.ysp() != null) { + Log.i(TAG, "${tvModel.title} to get ysp") lifecycleScope.launch(Dispatchers.IO) { tvModel.let { request?.fetchData(it) } } @@ -202,6 +203,7 @@ class MainFragment : BrowseSupportFragment() { val tvModel = tvListViewModel.getTVModel(itemPosition) if (tvModel?.ysp() != null) { + Log.i(TAG, "${tvModel.title} to get ysp") lifecycleScope.launch(Dispatchers.IO) { tvModel.let { request?.fetchData(it) } } @@ -270,6 +272,7 @@ class MainFragment : BrowseSupportFragment() { val tvModel = tvListViewModel.getTVModel(itemPosition) if (tvModel?.ysp() != null) { + Log.i(TAG, "${tvModel.title} to get ysp") lifecycleScope.launch(Dispatchers.IO) { tvModel.let { request?.fetchData(it) } } diff --git a/app/src/main/java/com/lizongying/mytv/Request.kt b/app/src/main/java/com/lizongying/mytv/Request.kt index 9de7715..8f11894 100644 --- a/app/src/main/java/com/lizongying/mytv/Request.kt +++ b/app/src/main/java/com/lizongying/mytv/Request.kt @@ -37,17 +37,17 @@ class Request(var context: Context) { "CCTV10" to "CCTV10 科教", "CCTV11" to "CCTV11 戏曲", "CCTV12" to "CCTV12 社会与法", -// "CCTV13" to "CCTV13", + "CCTV13" to "CCTV13 新闻", "CCTV14" to "CCTV14 少儿", "CCTV15" to "CCTV15 音乐", "CCTV16-HD" to "CCTV16 奥林匹克", "CCTV17" to "CCTV17 农业农村", "CGTN" to "CGTN", + "CGTN外语纪录频道" to "CGTN 纪录频道", "CGTN法语频道" to "CGTN 法语频道", "CGTN俄语频道" to "CGTN 俄语频道", "CGTN阿拉伯语频道" to "CGTN 阿拉伯语频道", "CGTN西班牙语频道" to "CGTN 西班牙语频道", -// "CGTN外语纪录频道" to "CGTN外语纪录频道", "东方卫视" to "东方卫视", "湖南卫视" to "湖南卫视", @@ -82,6 +82,7 @@ class Request(var context: Context) { fun fetchData(tvModel: TVViewModel) { val data = ysp?.switch(tvModel) + val title = tvModel.getTV().title val request = data?.let { LiveInfoRequest(it) } request?.let { yspApiService?.getLiveInfo(it) } @@ -89,7 +90,6 @@ class Request(var context: Context) { override fun onResponse(call: Call, response: Response) { if (response.isSuccessful) { val liveInfo = response.body() - Log.i(TAG, "liveInfo $liveInfo") if (liveInfo?.data?.playurl != null) { val chanll = liveInfo.data.chanll val decodedBytes = Base64.decode( @@ -99,26 +99,33 @@ class Request(var context: Context) { val decodedString = String(decodedBytes) val regex = Regex("""des_key = "([^"]+).+var des_iv = "([^"]+)""") val matchResult = regex.find(decodedString) - var keyBytes = byteArrayOf() - var ivBytes = byteArrayOf() - if (matchResult != null) { val (key, iv) = matchResult.destructured - keyBytes = Base64.decode(key, Base64.DEFAULT) - ivBytes = Base64.decode(iv, Base64.DEFAULT) - } - tvModel.updateVideoUrlByYSP( - liveInfo.data.playurl + "&revoi=" + encryptTripleDES( + val keyBytes = Base64.decode(key, Base64.DEFAULT) + val ivBytes = Base64.decode(iv, Base64.DEFAULT) + val url = liveInfo.data.playurl + "&revoi=" + encryptTripleDES( keyBytes + byteArrayOf(0, 0, 0, 0, 0, 0, 0, 0), ivBytes ).uppercase() - ) + Log.i(TAG, "$title url $url") + tvModel.addVideoUrl(url) + } else { + Log.e(TAG, "$title key error") + tvModel.firstSource() + } + } else { + Log.e(TAG, "$title url error") + tvModel.firstSource() } + } else { + Log.e(TAG, "$title status error") + tvModel.firstSource() } } override fun onFailure(call: Call, t: Throwable) { - Log.i(TAG, "get data error") + Log.e(TAG, "${tvModel.getTV().title} request error") + tvModel.firstSource() } }) } diff --git a/app/src/main/java/com/lizongying/mytv/TVList.kt b/app/src/main/java/com/lizongying/mytv/TVList.kt index fddbb23..0ba2fce 100644 --- a/app/src/main/java/com/lizongying/mytv/TVList.kt +++ b/app/src/main/java/com/lizongying/mytv/TVList.kt @@ -1,7 +1,5 @@ package com.lizongying.mytv -import android.util.Log - object TVList { val list: Map> by lazy { setupTV() @@ -17,34 +15,31 @@ CCTV1 综合,http://tvpull.dxhmt.cn/tv/11481-4.m3u8,https://resources.yangshipin CCTV2 财经,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226195/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/20115388de0207131af17eac86c33049b95d69eaff064e55653a1b941810a006.png?imageMogr2/format/webp,600001800,2000203603 CCTV3 综艺,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226397/index.m3u8 CCTV4 中文国际,http://39.134.24.161/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226191/index.m3u8;http://hlsbkmgsplive.miguvideo.com/wd_r2/cctv/cctv4hd/1500/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/f357e58fdbcc076a3d65e1f958c942b2e14f14342c60736ceed98b092d35356a.png?imageMogr2/format/webp,600001814,2000204803 -CCTV4 中文国际美洲,http://hlsbkmgsplive.miguvideo.com/migu/kailu/20200324/cctv4meihd/57/index.m3u8?&encrypt= -CCTV4 中文国际欧洲,http://hlsbkmgsplive.miguvideo.com/migu/kailu/20200324/cctv4ouhd/51/index.m3u8?&encrypt= -CCTV5 体育,http://hlsbkmgsplive.miguvideo.com/migu/kailu/cctv5hd265/57/20191230/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/0a6a7138952675983a3d854df7688557b286d59aa06166edae51506f9204d655.png?imageMogr2/format/webp,600001818,2000205103 -CCTV5+ 体育赛事,http://hlsbkmgsplive.miguvideo.com/wd_r2/cctv/cctv5plusnew/2500/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/649ad76a90bfef55b05db9fe52e006487280f619089099d5dc971e387fc6eff0.png?imageMogr2/format/webp,600001817,2000204503 -CCTV6 电影,http://hlsbkmgsplive.miguvideo.com/wd_r2/ocn/cctv6hd/3000/index.m3u8?&encrypt= -CCTV7 国防军事,http://hlsbkmgsplive.miguvideo.com/migu/kailu/20200324/cctv7hd/51/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/b29af94e295ebdf646cefb68122c429b9cd921f498ca20d2d8070252536f9ff9.png?imageMogr2/format/webp,600004092,2000510003 -CCTV8 电视剧,http://hlsbkmgsplive.miguvideo.com/wd_r2/ocn/cctv8hd/3000/index.m3u8?&encrypt= -CCTV9 记录,http://hlsbkmgsplive.miguvideo.com/migu/kailu/20200324/cctv9hd/57/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/2ed1b4deeca179d5db806bb941790f82eb92a1b7299c1c38fe027f95a5caee5e.png?imageMogr2/format/webp,600004078,2000499403 -CCTV10 科教,http://hlsbkmgsplive.miguvideo.com/wd_r2/2018/ocn/cctv10hd/2000/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/aa6157ec65188cd41826e5a2f088c3d6d153205f5f6428258d12c59999e221aa.png?imageMogr2/format/webp,600001805,2000203503 -CCTV11 戏曲,http://hlsbkmgsplive.miguvideo.com/migu/kailu/cctv11hd/57/20200103/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/ed12ed7c7a1034dae4350011fe039284c5d5a836506b28c9e32e3c75299625c0.png?imageMogr2/format/webp,600001806,2000204103 -CCTV12 社会与法,http://hlsbkmgsplive.miguvideo.com/migu/kailu/20200324/cctv12hd/57/index.m3u8?&encrypt=, https://resources.yangshipin.cn/assets/oms/image/202306/484083cffaa40df7e659565e8cb4d1cc740158a185512114167aa21fa0c59240.png?imageMogr2/format/webp,600001807,2000202603 -CCTV13 新闻,https://live-play.cctvnews.cctv.com/cctv/merge_cctv13.m3u8;http://hlsbkmgsplive.miguvideo.com/envivo_x/2018/SD/cctv13/2000/index.m3u8?&encrypt= -CCTV14 少儿,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226193/index.m3u8;http://hlsbkmgsplive.miguvideo.com/wd_r2/ocn/cctv14hd/3000/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/af6b603896938dc346fbb16abfc63c12cba54b0ec9d18770a15d347d115f12d5.png?imageMogr2/format/webp,600001809,2000204403 -CCTV15 音乐,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225785/index.m3u8;http://hlsbkmgsplive.miguvideo.com/migu/kailu/20200324/cctv15hd/51/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/2ceee92188ef684efe0d8b90839c4f3ad450d179dc64d59beff417059453af47.png?imageMogr2/format/webp,600001815,2000205003 +CCTV5 体育,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226395/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/0a6a7138952675983a3d854df7688557b286d59aa06166edae51506f9204d655.png?imageMogr2/format/webp,600001818,2000205103 +CCTV5+ 体育赛事,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226221/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/649ad76a90bfef55b05db9fe52e006487280f619089099d5dc971e387fc6eff0.png?imageMogr2/format/webp,600001817,2000204503 +CCTV6 电影,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226393/index.m3u8 +CCTV7 国防军事,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226192/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/b29af94e295ebdf646cefb68122c429b9cd921f498ca20d2d8070252536f9ff9.png?imageMogr2/format/webp,600004092,2000510003 +CCTV8 电视剧,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226391/index.m3u8 +CCTV9 记录,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226197/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/2ed1b4deeca179d5db806bb941790f82eb92a1b7299c1c38fe027f95a5caee5e.png?imageMogr2/format/webp,600004078,2000499403 +CCTV10 科教,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226189/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/aa6157ec65188cd41826e5a2f088c3d6d153205f5f6428258d12c59999e221aa.png?imageMogr2/format/webp,600001805,2000203503 +CCTV11 戏曲,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226240/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/ed12ed7c7a1034dae4350011fe039284c5d5a836506b28c9e32e3c75299625c0.png?imageMogr2/format/webp,600001806,2000204103 +CCTV12 社会与法,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226190/index.m3u8, https://resources.yangshipin.cn/assets/oms/image/202306/484083cffaa40df7e659565e8cb4d1cc740158a185512114167aa21fa0c59240.png?imageMogr2/format/webp,600001807,2000202603 +CCTV13 新闻,https://live-play.cctvnews.cctv.com/cctv/merge_cctv13.m3u8 +CCTV14 少儿,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226193/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/af6b603896938dc346fbb16abfc63c12cba54b0ec9d18770a15d347d115f12d5.png?imageMogr2/format/webp,600001809,2000204403 +CCTV15 音乐,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221225785/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/2ceee92188ef684efe0d8b90839c4f3ad450d179dc64d59beff417059453af47.png?imageMogr2/format/webp,600001815,2000205003 CCTV16 奥林匹克,http://39.134.24.162/dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226921/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/53793fa7bacd3a93ff6dc5d2758418985e1f952a316c335d663b572d8bdcd74d.png?imageMogr2/format/webp,600098637,2012375003 -CCTV17 农业农村,http://hlsbkmgsplive.miguvideo.com/migu/kailu/20200324/cctv17hd/57/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/ddef563072f8bad2bea5b9e52674cb7b4ed50efb20c26e61994dfbdf05c1e3c0.png?imageMogr2/format/webp,600001810,2000204203 -CGTN,http://hlsbkmgsplive.miguvideo.com/envivo_x/2018/SD/cctvnews/1000/index.m3u8?&encrypt=,https://resources.yangshipin.cn/assets/oms/image/202306/a72dff758ca1c17cd0ecc8cedc11b893d208f409d5e6302faa0e9d298848abc3.png?imageMogr2/format/webp,600014550,2001656803 +CCTV17 农业农村,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226198/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/ddef563072f8bad2bea5b9e52674cb7b4ed50efb20c26e61994dfbdf05c1e3c0.png?imageMogr2/format/webp,600001810,2000204203 +CGTN,,https://resources.yangshipin.cn/assets/oms/image/202306/a72dff758ca1c17cd0ecc8cedc11b893d208f409d5e6302faa0e9d298848abc3.png?imageMogr2/format/webp,600014550,2001656803 CGTN 新闻频道,http://live.cgtn.com/1000/prog_index.m3u8 CGTN 纪录频道,https://livedoc.cgtn.com/500d/prog_index.m3u8 CGTN 法语频道,https://livefr.cgtn.com/1000f/prog_index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/a8d0046a47433d952bf6ed17062deb8bd2184ba9aec0f7781df6bf9487a3ffcf.png?imageMogr2/format/webp,600084704,2010153503 CGTN 俄语频道,http://liveru.cgtn.com/1000r/prog_index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/bf0a820893cbaf20dd0333e27042e1ef9c8806e5b602b6a8c95af399db0bc77a.png?imageMogr2/format/webp,600084758,2010152603 -CGTN 西班牙语频道,http://livees.cgtn.com/500e/prog_index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202309/7c337e3dbe64402ec7e4678a619a4a6d95144e42f35161181ff78e143b7cf67a.png?imageMogr2/format/webp,600084744,2010152503 +CGTN 西班牙语频道,http://livees.cgtn.com/500e/prog_index.m3u8;http://livees.cgtn.com/1000e/prog_index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202309/7c337e3dbe64402ec7e4678a619a4a6d95144e42f35161181ff78e143b7cf67a.png?imageMogr2/format/webp,600084744,2010152503 CGTN 阿拉伯语频道,http://livear.cgtn.com/1000a/prog_index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/2e44e2aa3e7a1cedf07fd0ae59fe69e86a60a2632660a006e3e9e7397b2d107e.png?imageMogr2/format/webp,600084782,2010155203 -CGTN 拉丁美洲频道,http://livees.cgtn.com/1000e/prog_index.m3u8 书画频道,http://211.103.180.178:8234/live_hls/hdmi.m3u8 地方频道 -东方卫视,,https://resources.yangshipin.cn/assets/oms/image/202306/9bd372ca292a82ce3aa08772b07efc4af1f85c21d1f268ea33440c49e9a0a488.png?imageMogr2/format/webp,600002483,2000292403 +东方卫视,http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226217/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/9bd372ca292a82ce3aa08772b07efc4af1f85c21d1f268ea33440c49e9a0a488.png?imageMogr2/format/webp,600002483,2000292403 内蒙古卫视,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226389/index.m3u8 湖南卫视,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226307/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/4120e89d3079d08aa17d382f69a2308ec70839b278367763c34a34666c75cb88.png?imageMogr2/format/webp,600002475,2000296203 湖北卫视,http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226477/index.m3u8,https://resources.yangshipin.cn/assets/oms/image/202306/7a6be5a2bb1dc53a945c016ff1f525dc4a84c51db371c15c89aa55404b0ba784.png?imageMogr2/format/webp,600002508,2000294503 diff --git a/app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt b/app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt index 304cf0b..8b0a7dd 100644 --- a/app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt +++ b/app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt @@ -1,5 +1,6 @@ package com.lizongying.mytv.models +import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel @@ -8,7 +9,7 @@ import com.lizongying.mytv.TV class TVViewModel(private var tv: TV) : ViewModel() { private var mapping = mapOf( "CCTV4K" to "CCTV4K", -// "CCTV1" to "CCTV1 综合", + "CCTV1" to "CCTV1 综合", "CCTV2" to "CCTV2 财经", "CCTV4" to "CCTV4 中文国际", "CCTV5" to "CCTV5 体育", @@ -18,17 +19,17 @@ class TVViewModel(private var tv: TV) : ViewModel() { "CCTV10" to "CCTV10 科教", "CCTV11" to "CCTV11 戏曲", "CCTV12" to "CCTV12 社会与法", -// "CCTV13" to "CCTV13", + "CCTV13" to "CCTV13 新闻", "CCTV14" to "CCTV14 少儿", "CCTV15" to "CCTV15 音乐", "CCTV16-HD" to "CCTV16 奥林匹克", "CCTV17" to "CCTV17 农业农村", "CGTN" to "CGTN", + "CGTN外语纪录频道" to "CGTN 纪录频道", "CGTN法语频道" to "CGTN 法语频道", "CGTN俄语频道" to "CGTN 俄语频道", "CGTN阿拉伯语频道" to "CGTN 阿拉伯语频道", "CGTN西班牙语频道" to "CGTN 西班牙语频道", -// "CGTN外语纪录频道" to "CGTN外语纪录频道", "东方卫视" to "东方卫视", "湖南卫视" to "湖南卫视", @@ -53,12 +54,24 @@ class TVViewModel(private var tv: TV) : ViewModel() { "海南卫视" to "海南卫视", ).entries.associate { (key, value) -> value to key } - private var updateByYSP = false + private var isFirstTime = true + + private val _id = MutableLiveData() + val id: LiveData + get() = _id + + private val _title = MutableLiveData() + val title: LiveData + get() = _title private val _videoUrl = MutableLiveData>() val videoUrl: LiveData> get() = _videoUrl + private val _videoIndex = MutableLiveData() + val videoIndex: LiveData + get() = _videoIndex + private val _pid = MutableLiveData() val pid: LiveData get() = _pid @@ -79,25 +92,37 @@ class TVViewModel(private var tv: TV) : ViewModel() { _backgroundImage.value = url } - private fun updateVideoUrl(url: String) { - tv.videoUrl = listOf(url) - tv.videoIndex = 0 - _videoUrl.value = listOf(url) + fun addVideoUrl(url: String) { + tv.videoUrl = tv.videoUrl + listOf(url) + tv.videoIndex = tv.videoUrl.lastIndex + _videoUrl.value = tv.videoUrl + _videoIndex.value = tv.videoIndex } - fun updateVideoUrlByYSP(url: String) { - updateByYSP = true - updateVideoUrl(url) + fun firstSource() { + if (tv.videoUrl.isNotEmpty()) { + tv.videoIndex = 0 + _videoIndex.value = 0 + } else { + Log.e(TAG, "no first") + } } init { + _id.value = tv.id + _title.value = tv.title _videoUrl.value = tv.videoUrl + _videoIndex.value = tv.videoIndex _pid.value = tv.pid _sid.value = tv.sid } - fun updateByYSP(): Boolean { - return updateByYSP + fun getIsFirstTime(): Boolean { + return isFirstTime + } + + fun isFirstTime(firstTime: Boolean) { + isFirstTime = firstTime } fun update(t: TV) { @@ -114,4 +139,8 @@ class TVViewModel(private var tv: TV) : ViewModel() { } return mapping[tv.title] } + + companion object { + private const val TAG = "TVViewModel" + } } \ No newline at end of file