get token on switch
This commit is contained in:
parent
57d42bc917
commit
930c7957ee
|
|
@ -43,10 +43,6 @@ class MainFragment : BrowseSupportFragment() {
|
||||||
|
|
||||||
private var ready = 0
|
private var ready = 0
|
||||||
|
|
||||||
init {
|
|
||||||
request.fetchToken(::fragmentReady)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
headersState = HEADERS_DISABLED
|
headersState = HEADERS_DISABLED
|
||||||
|
|
@ -212,11 +208,7 @@ class MainFragment : BrowseSupportFragment() {
|
||||||
fun fragmentReady() {
|
fun fragmentReady() {
|
||||||
ready++
|
ready++
|
||||||
Log.i(TAG, "ready $ready")
|
Log.i(TAG, "ready $ready")
|
||||||
if (ready == 4) {
|
if (ready == 3) {
|
||||||
|
|
||||||
// request?.fetchPage()
|
|
||||||
// tvListViewModel.getTVViewModel(0)?.let { request?.fetchProgram(it) }
|
|
||||||
|
|
||||||
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition)
|
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition)
|
||||||
tvViewModel?.changed()
|
tvViewModel?.changed()
|
||||||
|
|
||||||
|
|
@ -280,10 +272,6 @@ class MainFragment : BrowseSupportFragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun tvViewModel(): TVViewModel? {
|
|
||||||
return tvListViewModel.getTVViewModel(itemPosition)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setupEventListeners() {
|
private fun setupEventListeners() {
|
||||||
onItemViewClickedListener = ItemViewClickedListener()
|
onItemViewClickedListener = ItemViewClickedListener()
|
||||||
onItemViewSelectedListener = ItemViewSelectedListener()
|
onItemViewSelectedListener = ItemViewSelectedListener()
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,6 @@ import androidx.media3.common.Player
|
||||||
import androidx.media3.common.VideoSize
|
import androidx.media3.common.VideoSize
|
||||||
import androidx.media3.common.util.UnstableApi
|
import androidx.media3.common.util.UnstableApi
|
||||||
import androidx.media3.exoplayer.ExoPlayer
|
import androidx.media3.exoplayer.ExoPlayer
|
||||||
import androidx.media3.exoplayer.analytics.AnalyticsListener
|
|
||||||
import androidx.media3.exoplayer.source.LoadEventInfo
|
|
||||||
import androidx.media3.exoplayer.source.MediaLoadData
|
|
||||||
import androidx.media3.ui.PlayerView
|
import androidx.media3.ui.PlayerView
|
||||||
import com.lizongying.mytv.databinding.PlayerBinding
|
import com.lizongying.mytv.databinding.PlayerBinding
|
||||||
import com.lizongying.mytv.models.TVViewModel
|
import com.lizongying.mytv.models.TVViewModel
|
||||||
|
|
@ -80,71 +77,8 @@ class PlayerFragment : Fragment() {
|
||||||
val videoUrlCurrent =
|
val videoUrlCurrent =
|
||||||
tvViewModel.videoIndex.value?.let { tvViewModel.videoUrl.value?.get(it) }
|
tvViewModel.videoIndex.value?.let { tvViewModel.videoUrl.value?.get(it) }
|
||||||
playerView?.player?.run {
|
playerView?.player?.run {
|
||||||
val mediaItem = MediaItem.Builder()
|
videoUrlCurrent?.let { setMediaItem(MediaItem.fromUri(it)) }
|
||||||
tvViewModel.id.value?.let { mediaItem.setMediaId(it.toString()) }
|
|
||||||
videoUrlCurrent?.let { mediaItem.setUri(it) }
|
|
||||||
setMediaItem(mediaItem.build())
|
|
||||||
prepare()
|
prepare()
|
||||||
|
|
||||||
// val httpDataSource = DefaultHttpDataSource.Factory()
|
|
||||||
// val hls = HlsMediaSource.Factory(httpDataSource).createMediaSource(
|
|
||||||
// MediaItem.fromUri(
|
|
||||||
// Uri.parse(videoUrlCurrent)
|
|
||||||
// )
|
|
||||||
// )
|
|
||||||
// val analyticsListener: AnalyticsListener= MyAnalyticsListener()
|
|
||||||
// val exoPlayer = playerView?.player as ExoPlayer
|
|
||||||
// exoPlayer.addAnalyticsListener(analyticsListener)
|
|
||||||
// exoPlayer.setMediaSource(hls)
|
|
||||||
// exoPlayer.playWhenReady = true
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// exoPlayer.let {
|
|
||||||
// val parameters =
|
|
||||||
// TrackSelectionParameters.Builder().setPreferredAudioMimeType("application/id3").build()
|
|
||||||
// // 更新轨道选择器参数
|
|
||||||
// exoPlayer.trackSelector?.parameters = parameters
|
|
||||||
// Log.i(TAG, "parameters $parameters")
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // 获取当前轨道组
|
|
||||||
//
|
|
||||||
// playerView?.player = exoPlayer
|
|
||||||
// playerView?.player?.prepare()
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
|
||||||
// val codecList = MediaCodecList(MediaCodecList.ALL_CODECS)
|
|
||||||
// val codecInfos = codecList.codecInfos
|
|
||||||
//
|
|
||||||
// for (codecInfo in codecInfos) {
|
|
||||||
//
|
|
||||||
// val supportedTypes = codecInfo.supportedTypes
|
|
||||||
// for (type in supportedTypes) {
|
|
||||||
// Log.d("supportedTypes", "$type")
|
|
||||||
//// if (type.equals(androidx.media3.exoplayer.mediacode, ignoreCase = true)) {
|
|
||||||
//// Log.d("AudioCodecChecker", "Device supports MPEG-L2")
|
|
||||||
//// return
|
|
||||||
//// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Log.d("AudioCodecChecker", "Device does not support MPEG-L2")
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@UnstableApi
|
|
||||||
class MyAnalyticsListener : AnalyticsListener {
|
|
||||||
override fun onLoadStarted(
|
|
||||||
eventTime: AnalyticsListener.EventTime,
|
|
||||||
loadEventInfo: LoadEventInfo,
|
|
||||||
mediaLoadData: MediaLoadData
|
|
||||||
) {
|
|
||||||
super.onLoadStarted(eventTime, loadEventInfo, mediaLoadData)
|
|
||||||
// Log.i(TAG, "loadEventInfo.uri ${loadEventInfo.uri} ${mediaLoadData.trackFormat.toString()}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -114,39 +114,16 @@ class Request {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fetchData(tvModel: TVViewModel) {
|
fun fetchVideo(tvModel: TVViewModel, cookie: String) {
|
||||||
if (::myRunnable.isInitialized) {
|
if (::myRunnable.isInitialized) {
|
||||||
handler.removeCallbacks(myRunnable)
|
handler.removeCallbacks(myRunnable)
|
||||||
}
|
}
|
||||||
|
|
||||||
tvModel.seq = 0
|
|
||||||
val data = ysp?.switch(tvModel)
|
|
||||||
val title = tvModel.title.value
|
val title = tvModel.title.value
|
||||||
|
|
||||||
|
tvModel.seq = 0
|
||||||
|
val data = ysp?.switch(tvModel)
|
||||||
val request = data?.let { LiveInfoRequest(it) }
|
val request = data?.let { LiveInfoRequest(it) }
|
||||||
var cookie = "guid=1; vplatform=109"
|
|
||||||
val channels = arrayOf(
|
|
||||||
"CCTV3 综艺",
|
|
||||||
"CCTV6 电影",
|
|
||||||
"CCTV8 电视剧",
|
|
||||||
"风云剧场",
|
|
||||||
"第一剧场",
|
|
||||||
"怀旧剧场",
|
|
||||||
"世界地理",
|
|
||||||
"风云音乐",
|
|
||||||
"兵器科技",
|
|
||||||
"风云足球",
|
|
||||||
"高尔夫网球",
|
|
||||||
"女性时尚",
|
|
||||||
"央视文化精品",
|
|
||||||
"央视台球",
|
|
||||||
"电视指南",
|
|
||||||
"卫生健康",
|
|
||||||
)
|
|
||||||
if (token != null && tvModel.title.value in channels) {
|
|
||||||
cookie =
|
|
||||||
"guid=1; vplatform=109; yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token"
|
|
||||||
}
|
|
||||||
|
|
||||||
request?.let { yspApiService.getLiveInfo(cookie, it) }
|
request?.let { yspApiService.getLiveInfo(cookie, it) }
|
||||||
?.enqueue(object : Callback<LiveInfo> {
|
?.enqueue(object : Callback<LiveInfo> {
|
||||||
|
|
@ -197,6 +174,51 @@ class Request {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun fetchData(tvModel: TVViewModel) {
|
||||||
|
var cookie = "guid=1; vplatform=109"
|
||||||
|
val channels = arrayOf(
|
||||||
|
"CCTV3 综艺",
|
||||||
|
"CCTV6 电影",
|
||||||
|
"CCTV8 电视剧",
|
||||||
|
"风云剧场",
|
||||||
|
"第一剧场",
|
||||||
|
"怀旧剧场",
|
||||||
|
"世界地理",
|
||||||
|
"风云音乐",
|
||||||
|
"兵器科技",
|
||||||
|
"风云足球",
|
||||||
|
"高尔夫网球",
|
||||||
|
"女性时尚",
|
||||||
|
"央视文化精品",
|
||||||
|
"央视台球",
|
||||||
|
"电视指南",
|
||||||
|
"卫生健康",
|
||||||
|
)
|
||||||
|
if (tvModel.title.value in channels) {
|
||||||
|
yspTokenService.getInfo()
|
||||||
|
.enqueue(object : Callback<Info> {
|
||||||
|
override fun onResponse(call: Call<Info>, response: Response<Info>) {
|
||||||
|
if (response.isSuccessful) {
|
||||||
|
val info = response.body()
|
||||||
|
token = info?.data?.token
|
||||||
|
Log.i(TAG, "info success $token")
|
||||||
|
cookie =
|
||||||
|
"guid=1; vplatform=109; yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token"
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "info status error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFailure(call: Call<Info>, t: Throwable) {
|
||||||
|
Log.e(TAG, "info request error $t")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
fetchVideo(tvModel, cookie)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
inner class MyRunnable(private val tvModel: TVViewModel) : Runnable {
|
inner class MyRunnable(private val tvModel: TVViewModel) : Runnable {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
fetchBtrace(tvModel)
|
fetchBtrace(tvModel)
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,4 @@ data class TV(
|
||||||
", programId='" + programId + '\'' +
|
", programId='" + programId + '\'' +
|
||||||
'}'
|
'}'
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
|
||||||
internal const val serialVersionUID = 727566175075960653L
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue