get token on switch

This commit is contained in:
Li ZongYing 2024-01-05 18:24:44 +08:00
parent 57d42bc917
commit 930c7957ee
4 changed files with 50 additions and 110 deletions

View File

@ -43,10 +43,6 @@ class MainFragment : BrowseSupportFragment() {
private var ready = 0
init {
request.fetchToken(::fragmentReady)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
headersState = HEADERS_DISABLED
@ -212,11 +208,7 @@ class MainFragment : BrowseSupportFragment() {
fun fragmentReady() {
ready++
Log.i(TAG, "ready $ready")
if (ready == 4) {
// request?.fetchPage()
// tvListViewModel.getTVViewModel(0)?.let { request?.fetchProgram(it) }
if (ready == 3) {
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition)
tvViewModel?.changed()
@ -280,10 +272,6 @@ class MainFragment : BrowseSupportFragment() {
}
}
fun tvViewModel(): TVViewModel? {
return tvListViewModel.getTVViewModel(itemPosition)
}
private fun setupEventListeners() {
onItemViewClickedListener = ItemViewClickedListener()
onItemViewSelectedListener = ItemViewSelectedListener()

View File

@ -14,9 +14,6 @@ import androidx.media3.common.Player
import androidx.media3.common.VideoSize
import androidx.media3.common.util.UnstableApi
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 com.lizongying.mytv.databinding.PlayerBinding
import com.lizongying.mytv.models.TVViewModel
@ -80,71 +77,8 @@ class PlayerFragment : Fragment() {
val videoUrlCurrent =
tvViewModel.videoIndex.value?.let { tvViewModel.videoUrl.value?.get(it) }
playerView?.player?.run {
val mediaItem = MediaItem.Builder()
tvViewModel.id.value?.let { mediaItem.setMediaId(it.toString()) }
videoUrlCurrent?.let { mediaItem.setUri(it) }
setMediaItem(mediaItem.build())
videoUrlCurrent?.let { setMediaItem(MediaItem.fromUri(it)) }
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()}")
}
}

View File

@ -114,39 +114,16 @@ class Request {
})
}
fun fetchData(tvModel: TVViewModel) {
fun fetchVideo(tvModel: TVViewModel, cookie: String) {
if (::myRunnable.isInitialized) {
handler.removeCallbacks(myRunnable)
}
tvModel.seq = 0
val data = ysp?.switch(tvModel)
val title = tvModel.title.value
tvModel.seq = 0
val data = ysp?.switch(tvModel)
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) }
?.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 {
override fun run() {
fetchBtrace(tvModel)

View File

@ -25,8 +25,4 @@ data class TV(
", programId='" + programId + '\'' +
'}'
}
companion object {
internal const val serialVersionUID = 727566175075960653L
}
}