Skip to content

Commit

Permalink
fix ysp
Browse files Browse the repository at this point in the history
  • Loading branch information
lizongying committed May 20, 2024
1 parent b782d1f commit 4ef95d6
Show file tree
Hide file tree
Showing 12 changed files with 327 additions and 17 deletions.
25 changes: 24 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,13 @@ jobs:
# override default build-tools version (29.0.3) -- optional
BUILD_TOOLS_VERSION: "34.0.0"

- name: Get History
id: get_history
run: |
chmod +x history.sh
output=$(./history.sh)
echo "$output" > history.md
- name: Create Release
id: create_release
uses: actions/create-release@v1
Expand All @@ -47,6 +54,7 @@ jobs:
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
body_path: history.md

- name: Upload Release Asset
uses: actions/upload-release-asset@v1
Expand All @@ -56,4 +64,19 @@ jobs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ steps.sign_app.outputs.signedReleaseFile }}
asset_name: my-tv-${{ github.ref_name }}.apk
asset_content_type: application/vnd.android.package-archive
asset_content_type: application/vnd.android.package-archive

- name: Gitee Create Release
run: |
latest_commit=$(git rev-parse HEAD)
history=$(cat history.md)
curl -v POST https://gitee.com/api/v5/repos/${{ github.repository }}/releases \
-H "Content-Type: application/json" \
-d '{
"access_token": "${{ secrets.GITEE_ACCESS_TOKEN}}",
"tag_name": "${{ github.ref_name }}",
"name": "Release ${{ github.ref_name }}",
"body": "'"$history"'",
"prerelease": false,
"target_commitish": "'"$latest_commit"'"
}'
4 changes: 4 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
## 更新日志

### v2.0.2

* 修复不能播放的问题

### v2.0.0

* 解决卡顿问题
Expand Down
Binary file modified app/src/main/cpp/arm64-v8a/libnative.so
Binary file not shown.
Binary file modified app/src/main/cpp/armeabi-v7a/libnative.so
Binary file not shown.
2 changes: 1 addition & 1 deletion app/src/main/java/com/lizongying/mytv/MainFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
var context = requireContext()
val context = requireContext()
_binding = MenuBinding.inflate(inflater, container, false)

application = requireActivity().applicationContext as MyTvApplication
Expand Down
11 changes: 10 additions & 1 deletion app/src/main/java/com/lizongying/mytv/api/ApiClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class ApiClient {
private val protoUrl = "https://capi.yangshipin.cn/"
private val traceUrl = "https://btrace.yangshipin.cn/"
private val trace2Url = "https://aatc-api.yangshipin.cn/"
private val tokenUrl = "https://h5access.yangshipin.cn/"
private val trace3Url = "https://dtrace.ysp.cctv.cn/"
private val jceUrl = "https://jacc.ysp.cctv.cn/"
private val fUrl = "https://m.fengshows.com/"
Expand Down Expand Up @@ -78,6 +79,14 @@ class ApiClient {
.build().create(YSPBtraceService::class.java)
}

val yspToken2Service: YSPApiService by lazy {
Retrofit.Builder()
.baseUrl(tokenUrl)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build().create(YSPApiService::class.java)
}

val yspBtraceService3: YSPBtraceService by lazy {
Retrofit.Builder()
.baseUrl(trace3Url)
Expand Down Expand Up @@ -157,7 +166,7 @@ class ApiClient {
val sslContext = SSLContext.getInstance("SSL")
sslContext.init(null, trustAllCerts, java.security.SecureRandom())

val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("10.0.2.2", 8888))
// val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("10.0.2.2", 8888))

val builder = OkHttpClient.Builder()
.sslSocketFactory(sslContext.socketFactory, trustAllCerts[0] as X509TrustManager)
Expand Down
11 changes: 11 additions & 0 deletions app/src/main/java/com/lizongying/mytv/api/Token2.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.lizongying.mytv.api

data class Token2(
val ret: Int?,
val msg: String?,
val data: Data,
) {
data class Data(
val token: String,
)
}
44 changes: 43 additions & 1 deletion app/src/main/java/com/lizongying/mytv/api/YSP.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.lizongying.mytv.api

import android.content.Context
import android.util.Log
import com.lizongying.mytv.SP
import com.lizongying.mytv.Utils.getDateTimestamp
import com.lizongying.mytv.models.TVViewModel
import java.security.MessageDigest
import kotlin.math.floor
import kotlin.random.Random

Expand Down Expand Up @@ -52,6 +54,13 @@ object YSP {

private var appid = "ysp_pc"
var token = ""
var token2 = ""

var yspsdkinput = ""
var openapi_signature = ""

var nseqId = 1
var nrequest_id = ""

private var encryptor = Encryptor()

Expand All @@ -75,10 +84,43 @@ object YSP {

cKey =
encryptor.encrypt(cnlid, timeStr, appVer, guid, platform)
randStr = getRand()
signature = getSignature()
return """{"cnlid":"$cnlid","livepid":"$livepid","stream":"$stream","guid":"$guid","cKey":"$cKey","adjust":$adjust,"sphttps":"$sphttps","platform":"$platform","cmd":"$cmd","encryptVer":"$encryptVer","dtype":"$dtype","devid":"$devid","otype":"$otype","appVer":"$appVer","app_version":"$appVersion","rand_str":"$randStr","channel":"$channel","defn":"$defn","signature":"$signature"}"""
}

fun getTokenData(tvModel: TVViewModel) {
livepid = tvModel.getTV().pid
cnlid = tvModel.getTV().sid
defn = "fhd"

randStr = getRand()

if (tvModel.retryTimes > 0) {
guid = newGuid()
}

cKey =
encryptor.encrypt(cnlid, timeStr, appVer, guid, platform)

Log.i(TAG,"yspsdkinput ${"""{"cnlid":"$cnlid","livepid":"$livepid","stream":"$stream","guid":"$guid","cKey":"$cKey","adjust":$adjust,"sphttps":"$sphttps","platform":"$platform","cmd":"$cmd","encryptVer":"$encryptVer","dtype":"$dtype","devid":"$devid","otype":"$otype","appVer":"$appVer","app_version":"$appVersion","channel":"$channel","defn":"$defn"}"""}" )

yspsdkinput = md("adjust=$adjust&app_version=$appVersion&appVer=$appVer&channel=$channel&cKey=$cKey&cmd=$cmd&cnlid=$cnlid&defn=$defn&devid=$devid&dtype=$dtype&encryptVer=$encryptVer&guid=$guid&livepid=$livepid&otype=$otype&platform=$platform&sphttps=$sphttps&stream=$stream")

nseqId++

nrequest_id = "999999" + getRand() + getTimeStr()

openapi_signature = md("yspappid:519748109;host:www.yangshipin.cn;protocol:https:;token:$token2;input:$yspsdkinput-$guid-$nseqId-$nrequest_id;")
}

fun md(str:String):String {
val md = MessageDigest.getInstance("MD5")
md.update(str.toByteArray())
val digest = md.digest()
return digest.let { it -> it.joinToString("") { "%02x".format(it) } }
}

fun getAuthData(tvModel: TVViewModel): String {
livepid = tvModel.getTV().pid

Expand All @@ -92,7 +134,7 @@ object YSP {
return """pid=$livepid&guid=$guid&appid=$appid&rand_str=$randStr&signature=$signature"""
}

private fun getTimeStr(): String {
fun getTimeStr(): String {
return getDateTimestamp().toString()
}

Expand Down
23 changes: 23 additions & 0 deletions app/src/main/java/com/lizongying/mytv/api/YSPApiService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package com.lizongying.mytv.api

import retrofit2.Call
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Headers
import retrofit2.http.POST
import retrofit2.http.Query


interface YSPApiService {
Expand All @@ -18,6 +20,11 @@ interface YSPApiService {
fun getLiveInfo(
@Header("cookie") cookie: String,
@Header("Yspplayertoken") token: String,
@Header("Yspsdkinput") Yspsdkinput: String,
@Header("yspsdksign") yspsdksign: String,
@Header("Seqid") Seqid: String,
@Header("Request-Id") RequestId: String,
@Header("Yspappid") Yspappid: String="519748109",
@Body request: LiveInfoRequest,
): Call<LiveInfo>

Expand All @@ -32,4 +39,20 @@ interface YSPApiService {
@Header("cookie") cookie: String,
@Body request: AuthRequest,
): Call<Auth>

@GET("web/open/token")
@Headers(
"content-type: application/json",
"referer: https://www.yangshipin.cn/",
"user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
)
fun getToken(
@Header("cookie") cookie: String,
@Query("yspappid") yspappid: String = "519748109",
@Query("guid") guid: String = "",
@Query("vappid") vappid: String = "59306155",
@Query("vsecret") vsecret: String = "b42702bf7309a179d102f3d51b1add2fda0bc7ada64cb801",
@Query("raw") raw: String = "1",
@Query("ts") ts: String = "",
): Call<Token2>
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class TVViewModel(private var tv: TV) : ViewModel() {
private var itemPosition: Int = 0

var retryTimes = 0
var retryMaxTimes = 8
var retryMaxTimes = 1
var authYSPRetryTimes = 0
var authYSPRetryMaxTimes = 3
var tokenYSPRetryTimes = 0
Expand Down
Loading

0 comments on commit 4ef95d6

Please sign in to comment.