Update:
现已在 Docker 支持:https://pixman.io/topics/31
myTV SUPER 是香港的流媒体平台,注册用户可以看免费的一些频道,比如翡翠台、TVB Plus 等,如果要在 iptv 软件里播放的话,需要使用程序做一个转换,下面是使用 cloudflare workers 来代理的方法,这个代码也支持付费频道,但是需要你自己开通了会员。
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request))
})
const api_token = '你的 TOKEN';
async function get_mytvsuper(channel) {
const headers = {
'Accept': 'application/json',
'Authorization': `Bearer ${api_token}`,
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
'Host': 'user-api.mytvsuper.com',
'Origin': 'https://www.mytvsuper.com',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5.2 Safari/605.1.15',
'Referer': 'https://www.mytvsuper.com/',
'X-Forwarded-For': '210.6.4.148',
}
const params = new URLSearchParams();
params.append('platform', 'android_tv');
params.append('network_code', channel);
const response = await fetch(`https://user-api.mytvsuper.com/v1/channel/checkout?${params}`, { headers });
if (response.status != 200) {
return null;
}
const json = await response.json();
const profiles = json.profiles || [];
let play_url = '';
for (let i of profiles) {
if (i.quality === 'high') {
play_url = i.streaming_path;
break;
}
}
if (!play_url) {
return null;
}
return play_url.split('&p=')[0];
}
async function handleRequest(request) {
const url = new URL(request.url);
const path = url.pathname.split('/');
const id = path.pop();
const redirect_url = await get_mytvsuper(id) || 'https://nolive.livednow.com/nolive.m3u8';
let cacheControl = 'public, max-age=10'
if (redirect_url !== 'https://nolive.livednow.com/nolive.m3u8') {
cacheControl = 'public, max-age=43200'
}
const response = new Response(null, {
status: 302,
headers: {
Location: redirect_url,
'Cache-Control': cacheControl,
},
});
return response;
}
播放链接类似:https://DOMAIN/{ID}
,例如翡翠台 4k: https://DOMAIN/JUHD
完整的 m3u 文件可以访问 https://assets.livednow.com/m3u/mytvsuper.m3u 获取,注意将里边的 https://mytvsuper.livednow.com
替换成你自己的域名。
登录 myTV SUPER 官网后,打开开发者工具 - Network,过滤 https://www.mytvsuper.com/api/auth/getSession/self/
这个 api 的请求,查看 Response 中的 token 字段,如下图