diff --git a/app/src/main/java/com/lizongying/mytv/Request.kt b/app/src/main/java/com/lizongying/mytv/Request.kt index e2acff3..95d60bc 100644 --- a/app/src/main/java/com/lizongying/mytv/Request.kt +++ b/app/src/main/java/com/lizongying/mytv/Request.kt @@ -14,6 +14,7 @@ import com.lizongying.mytv.api.FAuthService import com.lizongying.mytv.api.Info import com.lizongying.mytv.api.LiveInfo import com.lizongying.mytv.api.LiveInfoRequest +import com.lizongying.mytv.api.Token import com.lizongying.mytv.api.YSP import com.lizongying.mytv.api.YSPApiService import com.lizongying.mytv.api.YSPBtraceService @@ -28,6 +29,7 @@ import retrofit2.Response import javax.crypto.Cipher import javax.crypto.spec.IvParameterSpec import javax.crypto.spec.SecretKeySpec +import kotlin.math.max class Request { @@ -435,24 +437,53 @@ class Request { inner class TokenRunnable : Runnable { override fun run() { fetchToken() - handler.postDelayed(this, 600000) } } fun fetchToken() { - yspTokenService.getInfo(token) - .enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { + yspTokenService.getToken(token) + .enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { if (response.isSuccessful) { - token = response.body()?.data?.token!! - Log.i(TAG, "info success $token") + val t = response.body()?.t + val e = response.body()?.e + if (!t.isNullOrEmpty()) { + token = t + Log.e(TAG, "token success $token") + if (e != null) { + handler.postDelayed( + tokenRunnable, + max(600000, (e - 1500) * 1000).toLong() + ) + } else { + Log.e(TAG, "e empty") + handler.postDelayed( + tokenRunnable, + 600000 + ) + } + } else { + Log.e(TAG, "token empty") + handler.postDelayed( + tokenRunnable, + 600000 + ) + } } else { Log.e(TAG, "token status error") + handler.postDelayed( + tokenRunnable, + 600000 + ) } } - override fun onFailure(call: Call, t: Throwable) { + override fun onFailure(call: Call, t: Throwable) { Log.e(TAG, "token request error $t") + handler.postDelayed( + tokenRunnable, + 600000 + ) } }) } diff --git a/app/src/main/java/com/lizongying/mytv/api/Info.kt b/app/src/main/java/com/lizongying/mytv/api/Info.kt index 0f46b18..3bc7ae0 100644 --- a/app/src/main/java/com/lizongying/mytv/api/Info.kt +++ b/app/src/main/java/com/lizongying/mytv/api/Info.kt @@ -10,6 +10,11 @@ data class Info( ) } +data class Token( + val e: Int?, + val t: String?, +) + data class Release( val code: Int?, val msg: String?, diff --git a/app/src/main/java/com/lizongying/mytv/api/YSPTokenService.kt b/app/src/main/java/com/lizongying/mytv/api/YSPTokenService.kt index 7d08cd1..80b402a 100644 --- a/app/src/main/java/com/lizongying/mytv/api/YSPTokenService.kt +++ b/app/src/main/java/com/lizongying/mytv/api/YSPTokenService.kt @@ -10,4 +10,9 @@ interface YSPTokenService { fun getInfo( @Query("token") token: String = "", ): Call + + @GET("my-tv/v2/token") + fun getToken( + @Query("token") token: String = "", + ): Call } \ No newline at end of file