Skip to content

Commit 088808c

Browse files
committed
fix retry bug
1 parent 73239a6 commit 088808c

File tree

5 files changed

+81
-24
lines changed

5 files changed

+81
-24
lines changed

app/src/main/java/com/lizongying/mytv/MainActivity.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,13 @@ class MainActivity : FragmentActivity() {
5454
window.decorView.systemUiVisibility = SYSTEM_UI_FLAG_HIDE_NAVIGATION
5555

5656
if (savedInstanceState == null) {
57-
Log.i(TAG, "beginTransaction begin")
5857
supportFragmentManager.beginTransaction()
5958
.add(R.id.main_browse_fragment, playerFragment)
6059
.add(R.id.main_browse_fragment, infoFragment)
6160
.add(R.id.main_browse_fragment, channelFragment)
6261
.add(R.id.main_browse_fragment, mainFragment)
6362
.hide(mainFragment)
6463
.commit()
65-
Log.i(TAG, "beginTransaction end")
66-
} else {
67-
Log.i(TAG, "savedInstanceState $savedInstanceState")
6864
}
6965
gestureDetector = GestureDetector(this, GestureListener())
7066

app/src/main/java/com/lizongying/mytv/MainFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ class MainFragment : BrowseSupportFragment() {
304304

305305
inner class UpdateProgramRunnable : Runnable {
306306
override fun run() {
307-
tvListViewModel.tvListViewModel.value?.filter { it.programId.value != null }
307+
tvListViewModel.tvListViewModel.value?.filter { it.programId.value != null && it.programId.value != "" }
308308
?.forEach { tvViewModel ->
309309
updateProgram(
310310
tvViewModel

app/src/main/java/com/lizongying/mytv/Request.kt

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ class Request {
3939
private lateinit var btraceRunnable: BtraceRunnable
4040
private var tokenRunnable: TokenRunnable = TokenRunnable()
4141

42+
private val regex = Regex("""des_key = "([^"]+).+var des_iv = "([^"]+)""")
43+
4244
private var mapping = mapOf(
4345
"CCTV4K" to "CCTV4K 超高清",
4446
"CCTV1" to "CCTV1 综合",
@@ -121,7 +123,6 @@ class Request {
121123
Base64.DEFAULT
122124
)
123125
val decodedString = String(decodedBytes)
124-
val regex = Regex("""des_key = "([^"]+).+var des_iv = "([^"]+)""")
125126
val matchResult = regex.find(decodedString)
126127
if (matchResult != null) {
127128
val (key, iv) = matchResult.destructured
@@ -142,8 +143,14 @@ class Request {
142143
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
143144
tvModel.retryTimes++
144145
if (tvModel.needToken) {
145-
token = ""
146-
fetchVideo(tvModel)
146+
if (tvModel.tokenRetryTimes == tvModel.tokenRetryMaxTimes) {
147+
if (!tvModel.mustToken) {
148+
fetchVideo(tvModel, cookie)
149+
}
150+
} else {
151+
token = ""
152+
fetchVideo(tvModel)
153+
}
147154
} else {
148155
fetchVideo(tvModel, cookie)
149156
}
@@ -158,8 +165,14 @@ class Request {
158165
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
159166
tvModel.retryTimes++
160167
if (tvModel.needToken) {
161-
token = ""
162-
fetchVideo(tvModel)
168+
if (tvModel.tokenRetryTimes == tvModel.tokenRetryMaxTimes) {
169+
if (!tvModel.mustToken) {
170+
fetchVideo(tvModel, cookie)
171+
}
172+
} else {
173+
token = ""
174+
fetchVideo(tvModel)
175+
}
163176
} else {
164177
fetchVideo(tvModel, cookie)
165178
}
@@ -171,8 +184,14 @@ class Request {
171184
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
172185
tvModel.retryTimes++
173186
if (tvModel.needToken) {
174-
token = ""
175-
fetchVideo(tvModel)
187+
if (tvModel.tokenRetryTimes == tvModel.tokenRetryMaxTimes) {
188+
if (!tvModel.mustToken) {
189+
fetchVideo(tvModel, cookie)
190+
}
191+
} else {
192+
token = ""
193+
fetchVideo(tvModel)
194+
}
176195
} else {
177196
fetchVideo(tvModel, cookie)
178197
}
@@ -185,8 +204,14 @@ class Request {
185204
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
186205
tvModel.retryTimes++
187206
if (tvModel.needToken) {
188-
token = ""
189-
fetchVideo(tvModel)
207+
if (tvModel.tokenRetryTimes == tvModel.tokenRetryMaxTimes) {
208+
if (!tvModel.mustToken) {
209+
fetchVideo(tvModel, cookie)
210+
}
211+
} else {
212+
token = ""
213+
fetchVideo(tvModel)
214+
}
190215
} else {
191216
fetchVideo(tvModel, cookie)
192217
}
@@ -208,18 +233,28 @@ class Request {
208233
fetchVideo(tvModel, cookie)
209234
} else {
210235
Log.e(TAG, "info status error")
211-
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
212-
tvModel.retryTimes++
236+
if (tvModel.tokenRetryTimes < tvModel.tokenRetryMaxTimes) {
237+
tvModel.tokenRetryTimes++
213238
fetchVideo(tvModel)
239+
} else {
240+
if (!tvModel.mustToken) {
241+
val cookie = "vplatform=109"
242+
fetchVideo(tvModel, cookie)
243+
}
214244
}
215245
}
216246
}
217247

218248
override fun onFailure(call: Call<Info>, t: Throwable) {
219249
Log.e(TAG, "info request error $t")
220-
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
221-
tvModel.retryTimes++
250+
if (tvModel.tokenRetryTimes < tvModel.tokenRetryMaxTimes) {
251+
tvModel.tokenRetryTimes++
222252
fetchVideo(tvModel)
253+
} else {
254+
if (!tvModel.mustToken) {
255+
val cookie = "vplatform=109"
256+
fetchVideo(tvModel, cookie)
257+
}
223258
}
224259
}
225260
})

app/src/main/java/com/lizongying/mytv/TVList.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ object TVList {
7171
)
7272
private var mappingEPG = mapOf(
7373
"CCTV4K 超高清" to "600002264",
74-
"CCTV8K 超高清" to "600156816",
74+
// "CCTV8K 超高清" to "600156816",
7575
"CCTV1 综合" to "600001859",
7676
"CCTV2 财经" to "600001800",
7777
"CCTV3 综艺" to "600001801",
@@ -95,7 +95,7 @@ object TVList {
9595
"CGTN 俄语频道" to "600084758",
9696
"CGTN 阿拉伯语频道" to "600084782",
9797
"CGTN 西班牙语频道" to "600084744",
98-
"CGTN 记录频道" to "600084781",
98+
// "CGTN 记录频道" to "600084781",
9999
"风云剧场" to "600099658",
100100
"第一剧场" to "600099655",
101101
"怀旧剧场" to "600099620",
@@ -130,8 +130,8 @@ object TVList {
130130
"四川卫视" to "600002516",
131131
"东南卫视" to "600002484",
132132
"海南卫视" to "600002506",
133-
"天津卫视" to "600152137",
134-
"新疆卫视" to "600152138",
133+
// "天津卫视" to "600152137",
134+
// "新疆卫视" to "600152138",
135135
)
136136
private var mappingVideo = mapOf(
137137
"CCTV4K 超高清" to arrayOf("600002264", "2000266303"),

app/src/main/java/com/lizongying/mytv/models/TVViewModel.kt

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ class TVViewModel(private var tv: TV) : ViewModel() {
1919
private var rowPosition: Int = 0
2020
private var itemPosition: Int = 0
2121

22-
var retryTimes: Int = 0
23-
var retryMaxTimes: Int = 8
22+
var retryTimes = 0
23+
var tokenRetryTimes = 0
24+
var retryMaxTimes = 8
25+
var tokenRetryMaxTimes = 2
2426
var programUpdateTime: Long = 0
2527

2628
private val _errInfo = MutableLiveData<String>()
@@ -77,6 +79,8 @@ class TVViewModel(private var tv: TV) : ViewModel() {
7779

7880
var needToken = false
7981

82+
var mustToken = false
83+
8084
private val channelsNeedToken = arrayOf(
8185
"CCTV4K 超高清",
8286
"CCTV2 财经",
@@ -134,6 +138,25 @@ class TVViewModel(private var tv: TV) : ViewModel() {
134138
"新疆卫视",
135139
)
136140

141+
private val channelsMustToken = arrayOf(
142+
"CCTV3 综艺",
143+
"CCTV6 电影",
144+
"CCTV8 电视剧",
145+
"风云剧场",
146+
"第一剧场",
147+
"怀旧剧场",
148+
"世界地理",
149+
"风云音乐",
150+
"兵器科技",
151+
"风云足球",
152+
"高尔夫网球",
153+
"女性时尚",
154+
"央视文化精品",
155+
"央视台球",
156+
"电视指南",
157+
"卫生健康",
158+
)
159+
137160
fun addVideoUrl(url: String) {
138161
if (_videoUrl.value?.isNotEmpty() == true) {
139162
if (_videoUrl.value!!.last().contains("cctv.cn")) {
@@ -188,6 +211,9 @@ class TVViewModel(private var tv: TV) : ViewModel() {
188211
if (tv.title in channelsNeedToken) {
189212
needToken = true
190213
}
214+
if (tv.title in channelsMustToken) {
215+
mustToken = true
216+
}
191217
}
192218

193219
fun getRowPosition(): Int {

0 commit comments

Comments
 (0)