* @param {string} userId - 用户ID * @param {string} token - 用户token * @param {string} pid - 节目ID * @param {number} rateType - 清晰度 * @returns {} -
(userId, token, pid, rateType)
| 34 | * @returns {} - |
| 35 | */ |
| 36 | async function getAndroidURL(userId, token, pid, rateType) { |
| 37 | |
| 38 | if (rateType <= 1) { |
| 39 | return { |
| 40 | url: "", |
| 41 | rateType: 0, |
| 42 | content: null |
| 43 | } |
| 44 | } |
| 45 | // 获取url |
| 46 | const timestramp = Date.now() |
| 47 | const appVersion = "26000370" |
| 48 | let headers = { |
| 49 | AppVersion: 2600037000, |
| 50 | TerminalId: "android", |
| 51 | "X-UP-CLIENT-CHANNEL-ID": "2600037000-99000-200300220100002", |
| 52 | } |
| 53 | // cctv5和5+开启flv后不能回放 |
| 54 | if (pid != "641886683" && pid != "641886773") { |
| 55 | headers["appCode"] = "miguvideo_default_android" |
| 56 | } |
| 57 | |
| 58 | if (rateType != 2 && userId && token) { |
| 59 | headers.UserId = userId |
| 60 | headers.UserToken = token |
| 61 | } |
| 62 | // console.log(headers) |
| 63 | const str = timestramp + pid + appVersion |
| 64 | const md5 = getStringMD5(str) |
| 65 | const result = getSaltAndSign(md5) |
| 66 | |
| 67 | let enableHDRStr = "" |
| 68 | if (enableHDR != "false") { |
| 69 | enableHDRStr = "&4kvivid=true&2Kvivid=true&vivid=2" |
| 70 | } |
| 71 | let enableH265Str = "" |
| 72 | if (enableH265 != "false") { |
| 73 | enableH265Str = "&h265N=true" |
| 74 | } |
| 75 | // 请求 |
| 76 | const baseURL = "https://play.miguvideo.com/playurl/v1/play/playurl" |
| 77 | let params = "?sign=" + result.sign + "&rateType=" + rateType |
| 78 | + "&contId=" + pid + "×tamp=" + timestramp + "&salt=" + result.salt |
| 79 | + "&flvEnable=true&super4k=true" + (rateType == 9 ? "&ott=true" : "") + enableH265Str + enableHDRStr |
| 80 | printDebug(`请求链接: ${baseURL + params}`) |
| 81 | let respData = await fetchUrl(baseURL + params, { |
| 82 | headers: headers |
| 83 | }) |
| 84 | |
| 85 | printDebug(respData) |
| 86 | |
| 87 | if (respData.rid == 'TIPS_NEED_MEMBER') { |
| 88 | printYellow("该账号没有会员 正在降低画质") |
| 89 | let respRateType = parseInt(respData.body.urlInfo?.rateType) > 4 ? 4 : 3 |
| 90 | params = "?sign=" + result.sign + "&rateType=" + respRateType |
| 91 | + "&contId=" + pid + "×tamp=" + timestramp + "&salt=" + result.salt |
| 92 | + "&flvEnable=true&super4k=true" + enableH265Str + enableHDRStr |
| 93 | printDebug(`请求链接: ${baseURL + params}`) |
no test coverage detected