|
|
我用ai转换成JS,大佬帮忙看下哪里不对,帮忙修改一下
function main(item) {
const CHANNEL_MAP = {
'jxws': 'tv_jxtv1.m3u8', //江西卫视
'jxds': 'tv_jxtv2.m3u8', //江西都市
'jxjs': 'tv_jxtv3_hd.m3u8', //江西经视高清
'jxys': 'tv_jxtv4.m3u8', //江西影视
'jxgg': 'tv_jxtv5.m3u8', //江西公共
'jxse': 'tv_jxtv6.m3u8', //江西少儿
'jxxw': 'tv_jxtv7.m3u8', //江西新闻
'jxyd': 'tv_jxtv8.m3u8', //江西移动
'fsgw': 'tv_fsgw.m3u8', //江西风尚购物
'jxtc': 'tv_taoci.m3u8', //江西陶瓷
};
let id = (ku9.getQuery(item.url, "id")) || "jxws";
const tsParam = ku9.getQuery(item.url, "ts");
const errurl = "";
try {
// 如果是TS文件请求
if (tsParam) {
const headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 8.1.0; JKM-AL00b) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36',
'Referer': 'https://www.jxntv.cn/'
};
const res = ku9.request(tsParam, "GET", headers, null, true);
if (res.code === 200 && res.body) {
return {
body: res.body,
headers: {
'Content-Type': 'video/MP2T'
}
};
} else {
return { url: errurl };
}
}
// 主M3U8请求流程
const stream = CHANNEL_MAP.hasOwnProperty(id) ? CHANNEL_MAP[id] : CHANNEL_MAP['jxws'];
const t = Math.floor(Date.now() / 1000);
const data = "t=" + t + "&stream=" + stream + "&uuid=0310c3096064";
const authUrl = "https://cdnauth.jxgdw.com/liveauth/pc?" + data;
const headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 8.1.0; JKM-AL00b) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36',
'origin': 'https://www.jxntv.cn',
'Referer': 'https://www.jxntv.cn/'
};
// 第一步:获取token
const authRes = ku9.request(authUrl, "GET", headers, null, true);
if (authRes.code !== 200 || !authRes.body) {
return { url: errurl };
}
let authData;
try {
authData = JSON.parse(authRes.body);
} catch (parseError) {
return { url: errurl };
}
if (!authData || !authData.t || !authData.token) {
return { url: errurl };
}
const token = authData.token;
const authTime = authData.t;
// 第二步:构建M3U8 URL
const m3u8Url = "https://yun-live.jxtvcn.com.cn/live-jxtv/" + stream + "?source=pc&token=" + token + "&t=" + authTime + "&uuid=0310c3096064";
const baseUrl = "https://yun-live.jxtvcn.com.cn/live-jxtv/";
// 第三步:获取M3U8内容并处理TS路径
const m3u8Res = ku9.request(m3u8Url, "GET", headers, null, true);
if (m3u8Res.code !== 200 || !m3u8Res.body) {
return { url: errurl };
}
// 处理M3U8内容,替换TS文件路径
const processedContent = m3u8Res.body.replace(/(.*?.ts)/gi, function(match, tsPath) {
return item.url.split('?')[0] + "?id=" + id + "&ts=" + baseUrl + tsPath;
});
return {
m3u8: processedContent,
headers: {
'Content-Type': 'application/vnd.apple.mpegurl'
}
};
} catch (error) {
//console.log("处理过程中出现错误: " + error);
return { url: errurl };
}
} |
|