mirror of
https://github.com/cluntop/tvbox.git
synced 2026-01-12 15:50:11 +08:00
Compare commits
21 Commits
05f9453dc1
...
46cddeff43
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46cddeff43 | ||
|
|
837853f949 | ||
|
|
0dc23cf940 | ||
|
|
24cfd50d0d | ||
|
|
b42aa3a59b | ||
|
|
69afe1ce36 | ||
|
|
fe968dc0f2 | ||
|
|
1300ef7076 | ||
|
|
f6cb47a735 | ||
|
|
533e701f9e | ||
|
|
0da506dfc7 | ||
|
|
412827f42c | ||
|
|
6845db2085 | ||
|
|
c21da91754 | ||
|
|
16f24d2748 | ||
|
|
4c21838421 | ||
|
|
44371b59af | ||
|
|
ded3438fc8 | ||
|
|
5ea1ed6050 | ||
|
|
1601477a55 | ||
|
|
cb74b12fa6 |
77
js/聚合短剧.js
77
js/聚合短剧.js
@ -22,14 +22,12 @@ const aggConfig = {
|
||||
软鸭: { host: 'https://api.xingzhige.com', url1: '/API/playlet', search: '/API/playlet' },
|
||||
七猫: { host: 'https://api-store.qmplaylet.com', url1: '/api/v1/playlet/index', url2: 'https://api-read.qmplaylet.com/player/api/v1/playlet/info', search: '/api/v1/playlet/search' },
|
||||
围观: { host: 'https://api.drama.9ddm.com', url1: '/drama/home/shortVideoTags', url2: '/drama/home/shortVideoDetail', search: '/drama/home/search' },
|
||||
碎片: { host: 'https://free-api.bighotwind.cc', url1: '/papaya/papaya-api/theater/tags', url2: '/papaya/papaya-api/videos/info', search: '/papaya/papaya-api/videos/page' },
|
||||
甜圈: { host: 'https://mov.cenguigui.cn', url1: '/duanju/api.php?classname', url2: '/duanju/api.php?book_id', search: '/duanju/api.php?name' }
|
||||
},
|
||||
platformList: [
|
||||
{ name: '甜圈短剧', id: '甜圈' }, { name: '七猫短剧', id: '七猫' }, { name: '锦鲤短剧', id: '锦鲤' },
|
||||
{ name: '番茄短剧', id: '番茄' }, { name: '星芽短剧', id: '星芽' }, { name: '西饭短剧', id: '西饭' },
|
||||
{ name: '软鸭短剧', id: '软鸭' }, { name: '百度短剧', id: '百度' }, { name: '围观短剧', id: '围观' },
|
||||
{ name: '碎片剧场', id: '碎片' }
|
||||
{ name: '软鸭短剧', id: '软鸭' }, { name: '百度短剧', id: '百度' }, { name: '围观短剧', id: '围观' }
|
||||
],
|
||||
search: { limit: 30, timeout: 6000 }
|
||||
};
|
||||
@ -43,7 +41,6 @@ const ruleFilterDef = {
|
||||
软鸭: { area: '战神' },
|
||||
七猫: { area: '0' },
|
||||
围观: { area: '' },
|
||||
碎片: { area: '' },
|
||||
甜圈: { area: '推荐榜' }
|
||||
};
|
||||
|
||||
@ -238,25 +235,6 @@ async function category(tid, pg, filter, extend) {
|
||||
if (res?.data) videos.push(...res.data.map(i => ({
|
||||
vod_id: `围观@${i.oneId}`, vod_name: i.title, vod_pic: i.vertPoster, vod_remarks: `集数:${i.episodeCount} 播放:${i.viewCount}`
|
||||
})));
|
||||
} else if (tid === '碎片') {
|
||||
let openId = (await md5(guid())).substring(0, 16);
|
||||
let body = JSON.stringify({ openId });
|
||||
let key = CryptoJS.enc.Utf8.parse("p0sfjw@k&qmewu#w");
|
||||
const encrypted = CryptoJS.AES.encrypt(body, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).ciphertext.toString(CryptoJS.enc.Hex);
|
||||
const tokenRes = JSON.parse(await request("https://free-api.bighotwind.cc/papaya/papaya-api/oauth2/uuid", {
|
||||
method: 'POST', headers: { 'Content-Type': 'application/json', 'key': encrypted }, body
|
||||
}));
|
||||
if (tokenRes?.data?.token) {
|
||||
const headers = { ...aggConfig.headers.default, 'Authorization': tokenRes.data.token };
|
||||
const url = `${plat.host}${plat.search}?type=5&tagId=&pageNum=${page}&pageSize=24`;
|
||||
const res = JSON.parse(await request(url, { headers }));
|
||||
if (res?.list) videos.push(...res.list.map(i => ({
|
||||
vod_id: `碎片@${i.itemId}@${i.videoCode}`,
|
||||
vod_name: i.title,
|
||||
vod_pic: `https://speed.hiknz.com/papaya/papaya-file/files/download/${i.imageKey}/${i.imageName}`,
|
||||
vod_remarks: `集数:${i.episodesMax} 播放:${i.hitShowNum}`
|
||||
})));
|
||||
}
|
||||
} else if (tid === '甜圈') {
|
||||
const url = `${plat.host}${plat.url1}=${encodeURIComponent(area)}&offset=${page}`;
|
||||
const res = JSON.parse(await request(url));
|
||||
@ -340,8 +318,8 @@ async function detail(id) {
|
||||
} else if (platId === '软鸭') {
|
||||
const didDecoded = decodeURIComponent(did);
|
||||
const [title, img, author, type, desc, book_id] = didDecoded.split('@');
|
||||
const detailUrl = `${plat.host}${plat.url1}/?book_id=${book_id}`;
|
||||
const res = JSON.parse(await request(detailUrl));
|
||||
const detailUrl = `${plat.host}${plat.url1}/?book_id=${book_id || did.split('@')[5]}`;
|
||||
const res = JSON.parse(await request(detailUrl, { headers: aggConfig.headers.default }));
|
||||
const u = (res.data?.video_list || []).map(e => `${e.title}$${e.video_id}`).join('#');
|
||||
vod = { ...vod, vod_name: title, vod_pic: img, vod_remarks: type, vod_content: desc, vod_play_from: '软鸭短剧', vod_play_url: u };
|
||||
} else if (platId === '围观') {
|
||||
@ -350,29 +328,8 @@ async function detail(id) {
|
||||
const d = res.data;
|
||||
vod = { ...vod, vod_name: d[0].title, vod_pic: d[0].vertPoster, vod_remarks: `共${d.length}集`, vod_play_from: '围观短剧', vod_play_url: d.map(e => `${e.title}第${e.playOrder}集$${e.playSetting}`).join('#') };
|
||||
}
|
||||
} else if (platId === '碎片') {
|
||||
const [itemId, videoCode] = did.split('@');
|
||||
let openId = (await md5(guid())).substring(0, 16);
|
||||
let body = JSON.stringify({ openId });
|
||||
let key = CryptoJS.enc.Utf8.parse("p0sfjw@k&qmewu#w");
|
||||
const encrypted = CryptoJS.AES.encrypt(body, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).ciphertext.toString(CryptoJS.enc.Hex);
|
||||
const tokenRes = JSON.parse(await request("https://free-api.bighotwind.cc/papaya/papaya-api/oauth2/uuid", {
|
||||
method: 'POST', headers: { 'Content-Type': 'application/json', 'key': encrypted }, body
|
||||
}));
|
||||
if (tokenRes?.data?.token) {
|
||||
const headers = { ...aggConfig.headers.default, 'Authorization': tokenRes.data.token };
|
||||
const res = JSON.parse(await request(`${plat.host}${plat.url2}?videoCode=${videoCode}&itemId=${itemId}`, { headers }));
|
||||
if (res) {
|
||||
const d = res.data || res;
|
||||
const pic = `https://speed.hiknz.com/papaya/papaya-file/files/download/${d.imageKey}/${d.imageName}`;
|
||||
const u = (d.episodesList || []).map(e => {
|
||||
const best = e.resolutionList?.sort((a, b) => b.resolution - a.resolution)[0];
|
||||
return best ? `第${e.episodes}集$https://speed.hiknz.com/papaya/papaya-file/files/download/${best.fileKey}/${best.fileName}` : null;
|
||||
}).filter(Boolean).join('#');
|
||||
vod = { ...vod, vod_name: d.title, vod_pic: pic, vod_remarks: `共${d.episodesMax || 0}集`, vod_play_from: '碎片剧场', vod_play_url: u };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} catch (e) { vod.vod_name = '加载失败'; }
|
||||
return JSON.stringify({ list: [vod] });
|
||||
}
|
||||
@ -416,6 +373,11 @@ async function play(flag, id) {
|
||||
}
|
||||
} catch {}
|
||||
}
|
||||
if (/软鸭/.test(flag)) {
|
||||
const response = await request(`${aggConfig.platform.软鸭.host}/API/playlet/?video_id=${id}&quality=1080p`, { headers: aggConfig.headers.default });
|
||||
const res = JSON.parse(response);
|
||||
return JSON.stringify({ parse: 0, url: res.data?.video?.url || '' });
|
||||
}
|
||||
if (/围观/.test(flag)) {
|
||||
try {
|
||||
const ps = typeof id === 'string' ? JSON.parse(id) : id;
|
||||
@ -449,7 +411,7 @@ async function search(wd, quick, pg) {
|
||||
}
|
||||
});
|
||||
} catch {}
|
||||
const platforms = ['百度', '锦鲤', '番茄', '星芽', '西饭', '软鸭', '围观', '碎片', '甜圈'];
|
||||
const platforms = ['百度', '锦鲤', '番茄', '星芽', '西饭', '软鸭', '围观', '甜圈'];
|
||||
for (const tid of platforms) {
|
||||
const plat = aggConfig.platform[tid];
|
||||
try {
|
||||
@ -487,25 +449,6 @@ async function search(wd, quick, pg) {
|
||||
body: JSON.stringify({ audience: "", page, pageSize: 30, searchWord: wd, subject: "" })
|
||||
});
|
||||
data = (JSON.parse(res)?.data || []).map(i => ({ vod_id: `围观@${i.oneId}`, vod_name: i.title, vod_pic: i.vertPoster, vod_remarks: `围观短剧|集数:${i.episodeCount} 播放:${i.viewCount}` }));
|
||||
} else if (tid === '碎片') {
|
||||
let openId = (await md5(guid())).substring(0, 16);
|
||||
let body = JSON.stringify({ openId });
|
||||
let key = CryptoJS.enc.Utf8.parse("p0sfjw@k&qmewu#w");
|
||||
const encrypted = CryptoJS.AES.encrypt(body, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).ciphertext.toString(CryptoJS.enc.Hex);
|
||||
const tokenRes = JSON.parse(await request("https://free-api.bighotwind.cc/papaya/papaya-api/oauth2/uuid", {
|
||||
method: 'POST', headers: { 'Content-Type': 'application/json', 'key': encrypted }, body, timeout: aggConfig.search.timeout
|
||||
}));
|
||||
if (tokenRes?.data?.token) {
|
||||
const headers = { ...aggConfig.headers.default, 'Authorization': tokenRes.data.token };
|
||||
const url = `${plat.host}${aggConfig.platform.碎片.search}?type=5&tagId=&pageNum=${page}&pageSize=30&title=${encodeURIComponent(wd)}`;
|
||||
res = await request(url, { headers });
|
||||
data = (JSON.parse(res)?.list || []).map(i => ({
|
||||
vod_id: `碎片@${i.itemId}@${i.videoCode}`,
|
||||
vod_name: i.title,
|
||||
vod_pic: `https://speed.hiknz.com/papaya/papaya-file/files/download/${i.imageKey}/${i.imageName}`,
|
||||
vod_remarks: `碎片剧场|集数:${i.episodesMax} 播放:${i.hitShowNum}`
|
||||
}));
|
||||
}
|
||||
} else if (tid === '甜圈') {
|
||||
const url = `${plat.host}${plat.search}=${encodeURIComponent(wd)}&offset=${page}`;
|
||||
res = await request(url);
|
||||
|
||||
8050
lib/iptv.m3u
8050
lib/iptv.m3u
File diff suppressed because it is too large
Load Diff
7895
lib/iptv.txt
7895
lib/iptv.txt
File diff suppressed because it is too large
Load Diff
@ -1275,14 +1275,109 @@ MovieSphere,
|
||||
The Lego Channel,
|
||||
NextUp Live Comedy,
|
||||
半岛英语,
|
||||
|
||||
香港国际财经,
|
||||
HOY 资讯台,
|
||||
AnimalPlanet,
|
||||
Awani,
|
||||
BBC1,
|
||||
BBC2,
|
||||
Bloomberg,
|
||||
CBS News,
|
||||
CNBC,
|
||||
ELEVEN 體育1台,
|
||||
EYETV旅遊,
|
||||
EYETV戲劇,
|
||||
GOODTVCH02真理台,
|
||||
M-BBCLifestyle,
|
||||
M--SkyZ,
|
||||
MusicTV,
|
||||
RHK31,
|
||||
RHK32,
|
||||
SkySportsCricket,
|
||||
TLC旅遊生活,
|
||||
TV8,
|
||||
ViuTV6,
|
||||
愛爾達體育1台,
|
||||
愛爾達體育2,
|
||||
八大第一台,
|
||||
八大戲劇,
|
||||
八大綜合,
|
||||
博斯高球1,
|
||||
博斯高球2,
|
||||
博斯魅力,
|
||||
博斯網球,
|
||||
博斯運動2,
|
||||
大愛電視,
|
||||
東森LIVE,
|
||||
東森電影,
|
||||
東森洋片,
|
||||
東森綜合,
|
||||
动物星球,
|
||||
動物星球,
|
||||
非凡新聞,
|
||||
國家地理野生,
|
||||
好萊塢電影,
|
||||
靖天國際台,
|
||||
美亞電影,
|
||||
民視臺灣,
|
||||
三立台灣,
|
||||
時尚台FTV,
|
||||
探索動力,
|
||||
探索動力DMAX,
|
||||
探索頻道,
|
||||
探索亞洲,
|
||||
緯來日本,
|
||||
衛視中文,
|
||||
中天娛樂,
|
||||
中天綜合,
|
||||
星空国际,
|
||||
澳视澳门,
|
||||
TVB J1,
|
||||
千禧经典,
|
||||
星光影视,
|
||||
三立综合,
|
||||
三立都会,
|
||||
东森戏剧,
|
||||
MOMO TV,
|
||||
港台电视31,
|
||||
港台电视32,
|
||||
HOY78,
|
||||
ASTRO AOD,
|
||||
DAZN体育1,
|
||||
DAZN体育2,
|
||||
ELEVEN体育3,
|
||||
韩国电影1,
|
||||
韩国电影2,
|
||||
RTHK31,
|
||||
澳视卫星,
|
||||
八度空间,
|
||||
CH5,
|
||||
CH8,
|
||||
CHU,
|
||||
天映频道,
|
||||
Astro AEC,
|
||||
爱奇艺,
|
||||
Astro欢喜台,
|
||||
亚洲武侠,
|
||||
TVB生活台,
|
||||
NOW NEWS,
|
||||
澳门体育,
|
||||
澳门综艺,
|
||||
NU2,
|
||||
华视HD,
|
||||
TVBSNEWS,
|
||||
八大第1台,
|
||||
八大综合台,
|
||||
Eleven体育,
|
||||
星光综合台,
|
||||
美国新闻,
|
||||
韩国阿里郎,
|
||||
|
||||
YouTube,#genre#
|
||||
三立INEWS,
|
||||
运通财经,
|
||||
ABC NEWS,
|
||||
天才冲冲冲「综艺」,
|
||||
ASTRO AWANI,
|
||||
Tokyo Shibuya「东京涩谷」,
|
||||
大爱,
|
||||
三立NEWS+,
|
||||
|
||||
@ -401,7 +401,6 @@ BRTV国际频道,
|
||||
南京十八,
|
||||
江苏体育,
|
||||
泗洪新闻综合,
|
||||
泗阳综合,
|
||||
南京教科,
|
||||
南京新闻综合,
|
||||
南京信息,
|
||||
@ -1276,7 +1275,111 @@ MovieSphere,
|
||||
The Lego Channel,
|
||||
NextUp Live Comedy,
|
||||
半岛英语,
|
||||
|
||||
香港国际财经,
|
||||
HOY 资讯台,
|
||||
AnimalPlanet,
|
||||
Awani,
|
||||
BBC1,
|
||||
BBC2,
|
||||
Bloomberg,
|
||||
CBS News,
|
||||
CNBC,
|
||||
ELEVEN 體育1台,
|
||||
EYETV旅遊,
|
||||
EYETV戲劇,
|
||||
GOODTVCH02真理台,
|
||||
M-BBCLifestyle,
|
||||
M--SkyZ,
|
||||
MusicTV,
|
||||
RHK31,
|
||||
RHK32,
|
||||
RTHK32,
|
||||
SkySportsCricket,
|
||||
TLC旅遊生活,
|
||||
TV8,
|
||||
ViuTV6,
|
||||
愛爾達體育1台,
|
||||
愛爾達體育2,
|
||||
愛爾達體育2台,
|
||||
八大第一台,
|
||||
八大戲劇,
|
||||
八大綜合,
|
||||
博斯高球1,
|
||||
博斯高球2,
|
||||
博斯魅力,
|
||||
博斯網球,
|
||||
博斯運動2,
|
||||
大愛電視,
|
||||
東森LIVE,
|
||||
東森電影,
|
||||
東森洋片,
|
||||
東森綜合,
|
||||
动物星球,
|
||||
動物星球,
|
||||
非凡新聞,
|
||||
國家地理野生,
|
||||
好萊塢電影,
|
||||
靖天國際台,
|
||||
美亞電影,
|
||||
民視臺灣,
|
||||
三立台灣,
|
||||
時尚台FTV,
|
||||
探索動力,
|
||||
探索動力DMAX,
|
||||
探索頻道,
|
||||
探索亞洲,
|
||||
緯來日本,
|
||||
衛視中文,
|
||||
衛視中文台,
|
||||
中天娛樂,
|
||||
中天綜合,
|
||||
星空国际,
|
||||
澳视澳门,
|
||||
TVB J1,
|
||||
千禧经典,
|
||||
星光影视,
|
||||
三立综合,
|
||||
三立都会,
|
||||
东森戏剧,
|
||||
MOMO TV,
|
||||
港台电视31,
|
||||
港台电视32,
|
||||
HOY78,
|
||||
ASTRO AOD,
|
||||
DAZN体育1,
|
||||
DAZN体育2,
|
||||
ELEVEN体育3,
|
||||
韩国电影1,
|
||||
韩国电影2,
|
||||
RTHK31,
|
||||
RTHK32,
|
||||
澳视卫星,
|
||||
八度空间,
|
||||
CH5,
|
||||
CH8,
|
||||
CHU,
|
||||
千禧经典台,
|
||||
天映频道,
|
||||
Astro AOD,
|
||||
Astro AEC,
|
||||
爱奇艺,
|
||||
Astro欢喜台,
|
||||
亚洲武侠,
|
||||
TVB生活台,
|
||||
NOW NEWS,
|
||||
澳门体育,
|
||||
澳门综艺,
|
||||
NU2,
|
||||
华视HD,
|
||||
TVB亚洲武侠,
|
||||
TVBSNEWS,
|
||||
八大第1台,
|
||||
八大综合台,
|
||||
Eleven体育,
|
||||
三立综合台,
|
||||
星光综合台,
|
||||
美国新闻,
|
||||
韩国阿里郎,
|
||||
|
||||
YouTube,#genre#
|
||||
三立INEWS,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -22,4 +22,5 @@ https://iptv-org.github.io/iptv/countries/tw.m3u
|
||||
https://live.freetv.top/huyayqk.m3u
|
||||
https://live.freetv.top/douyuyqk.m3u
|
||||
https://www.goodiptv.club/yylunbo.m3u?url=https://lunbo.freetv.top
|
||||
https://www.goodiptv.club/bililive.m3u
|
||||
https://www.goodiptv.club/bililive.m3u
|
||||
https://php.946985.filegear-sg.me/jackTV.m3u
|
||||
Loading…
x
Reference in New Issue
Block a user