更新源 202606130919

This commit is contained in:
github-actions[bot]
2026-06-13 09:19:17 +00:00
parent 8e2ac15646
commit 95f93a0f65
31 changed files with 17884 additions and 2266 deletions
+24 -24
View File
@@ -1,5 +1,5 @@
{
"spider": "./jar/spider.jar;md5;8599a715437d21e6660ad75f36967e70",
"spider": "./jar/spider.jar;md5;8c879fe501ce509c5b2adacf037381c9",
"lives": [
{"name": "live","boot": false,"type": 0,"url": "./tv.txt","playerType": 2,"ua": "okhttp/3.8.1","timeout": 20,"epg": "https://epg.cdn.loc.cc/?ch={name}&date={date}","logo": "https://logo.wyfc.qzz.io/{name}.png"}
],
@@ -67,32 +67,32 @@
{"key": "独播影视","name": "独播|影视","type": 3,"api": "csp_Duboku"},
{"key": "厂长影视","name": "厂长|影视","type": 3,"api": "csp_Czsapp","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://cz01.vip"},
{"key": "金牌影视","name": "金牌|影视","type": 3,"api": "csp_Jpys","ext": "https://y2s52n7.com,https://m.hkybqufgh.com,https://m.sizhengxt.com,https://m.9zhoukj.com,https://m.sizhengxt.com,https://m.jiabaide.cn"},
{"key": "修罗影视","name": "修罗|影视","api": "csp_Xlys","type": 3,"ext": "https://www.xlysw.ggff.net"},
{"key": "瓜子影视","name": "瓜子|影视","type": 3,"api": "csp_Gz360"},
{"key": "云播影视","name": "云播|影视","type": 3,"api": "csp_Tvyb"},
{"key": "骚火影视","name": "骚火|影视","type": 3,"api": "csp_SaoHuo","ext": "https://shdy5.us"},
{"key": "农民影视","name": "农民|影视","type": 3,"api": "csp_Wwys","ext": "https://vip.wwgz.cn:5200"},
{"key": "爱看机器人","name": "爱看|影视","type": 3,"api": "csp_Ikanbot","searchable": 1,"quickSearch": 1,"filterable": 1},
{"key": "小镇影视","name": "小镇|影视","type": 3,"api": "csp_XBPQ","ext": "./XBPQ/小镇影视.json"},
{"key": "面包影视","name": "面包|影视","type": 3,"api": "csp_XBPQ","ext": "./XBPQ/面包影视.json"},
{"key": "永乐影视","name": "永乐|影视","type": 3,"api": "csp_XBPQ","ext": "./XBPQ/永乐影视.json"},
{"key": "剧圈影视","name": "剧圈|影视","type": 3,"api": "csp_XYQHiker","ext": "./XYQHiker/剧圈影视.json"},
{"key": "小镇影视","name": "小镇|影视","type": 3,"api": "csp_XBPQ","ext": "./json/XZYS.json"},
{"key": "面包影视","name": "面包|影视","type": 3,"api": "csp_XBPQ","ext": "./json/MBYS.json"},
{"key": "永乐影视","name": "永乐|影视","type": 3,"api": "csp_XBPQ","ext": "./json/YLYS.json"},
{"key": "剧圈影视","name": "剧圈|影视","type": 3,"api": "csp_XYQHiker","ext": "./json/JQYS.json"},
{"key": "1905","name": "1905|影视","type": 3,"api": "csp_Web1905","searchable": 1,"quickSearch": 0,"filterable": 0},
{"key": "哆啦新番社","name": "哆啦|新番社","type": 3,"api": "csp_XBPQ","style": {"type": "list"},"ext": "./XBPQ/哆啦新番社.json"},
{"key": "Anime1","name": "A1|动漫","type": 3,"api": "./lib/drpy2.min.js","ext": "./js/Anime1.js"},
{"key": "哆啦新番社","name": "哆啦|新番社","type": 3,"api": "csp_XBPQ","style": {"type": "list"},"ext": "./json/DLXFS.json"},
{"key": "Anime1","name": "A1|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/Anime1.js"},
{"key": "漫国动漫","name": "漫国丨动漫","type": 3,"searchable": 1,"api": "csp_AppSy","ext": {"site": "https://dm-1255775577.cos.ap-guangzhou.myqcloud.com/dmg/api.txt","siteKey": "rectangleadsadxa","listKey": "aassddwwxxllsx1x","parsesKey": "aassddwwxxllsx1x"}},
{"key": "方舟动漫","name": "方舟丨动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://www.cyfz.top","dataKey": "e72cdfd629e8895d","dataIv": "e72cdfd629e8895d"}},
{"key": "曼波动漫","name": "曼波|动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://app.omofun1.top","dataKey": "66dc309cbeeca454","dataIv": "66dc309cbeeca454"}},
{"key": "咕咕动漫","name": "咕咕|动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://www.gugu3.com","dataKey": "nKfZ8KX6JTNWRzTD","dataIv": "nKfZ8KX6JTNWRzTD"}},
{"key": "巴士动漫","name": "巴士|动漫","type": 3,"api": "csp_XYQHiker","ext": "./XYQHiker/巴士动漫.json"},
{"key": "路漫漫","name": "路漫漫|动漫","type": 3,"api": "./lib/drpy2.min.js","ext": "./js/路漫漫.js"},
{"key": "去看吧","name": "去看吧|动漫","type": 3,"api": "./lib/drpy2.min.js","ext": "./js/去看吧.js"},
{"key": "巴士动漫","name": "巴士|动漫","type": 3,"api": "csp_XYQHiker","ext": "https://git.yylx.win/raw.githubusercontent.com/PizazzGY/NewTVBox/main/anime/json/bsdm.json"},
{"key": "路漫漫","name": "路漫漫|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/LMM.js"},
{"key": "去看吧","name": "去看吧|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/QKB.js"},
{"key": "荐片","name": "荐片|磁力","api": "csp_JianPian","type": 3},
{"key": "修罗","name": "修罗|磁力","api": "csp_Xlys","type": 3,"ext": "https://www.xlysw.ggff.net"},
{"key": "七味","name": "七味|磁力","type": 3,"api": "csp_QnMp4","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://www.qwshow.com,https://www.qwmkv.com,https://www.qwfilm.com,https://www.qwfun.com,https://www.qnnull.com,https://www.qnnull.com"},
{"key": "New6v","name": "New6V|磁力","type": 3,"api": "csp_New6v","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://www.xb6v.com"},
{"key": "美剧迷","name": "美剧迷|磁力","type": 3,"api": "csp_MeijuMi","searchable": 1,"quickSearch": 1,"filterable": 1},
{"key": "迅雷吧","name": "迅雷吧|磁力","type": 3,"api": "csp_Xunlei8","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://xunlei8.me"},
{"key": "电影港","name": "电影港|磁力","type": 3,"api": "csp_XYQHiker","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "./XYQHiker/电影港.json"},
{"key": "电影港","name": "电影港|磁力","type": 3,"api": "csp_XYQHiker","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "./json/DYG.json"},
{"key": "阿里云盘","name": "阿里|云盘","type": 3,"api": "csp_PanAli","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
{"key": "夸克网盘","name": "夸克|网盘","type": 3,"api": "csp_PanQuark","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
{"key": "UC网盘","name": "UC|网盘","type": 3,"api": "csp_PanUC","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
@@ -117,18 +117,18 @@
{"key": "世界听书","name": "世界|听书","type": 3,"api": "csp_TingShijie","style": {"type": "list"}},
{"key": "戏曲多多","name": "戏曲|多多","type": 3,"api": "csp_AppLY","style": {"type": "list"}},
{"key": "爱听音乐","name": "爱听|音乐","type": 3,"api": "./py/爱听音乐.py"},
{"key": "网络直播","name": "网络|直播","type": 3,"api": "./py/网络直播.py"},
{"key": "哔哩直播","name": "哔哩|直播","type": 3,"api": "./py/哔哩直播.py"},
{"key": "哔哩合集","name": "哔哩|合集","type": 3,"api": "csp_Bili","searchable": 1,"quickSearch": 0,"filterable": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.433},"ext": {"json": "./json/哔哩合集.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"}},
{"key": "哔哩哔哩演唱会","name": "哔哩|音乐","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩演唱会.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩听书","name": "哔哩|听书","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩听书.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩相声","name": "哔哩|相声","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩相声.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩小品","name": "哔哩|小品","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩小品.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩戏曲","name": "哔哩|戏曲","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩戏曲.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "少儿教育","name": "少儿|教育","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/少儿教育.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "小学课堂","name": "小学|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/小学课堂.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "初中课堂","name": "初中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/初中课堂.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "高中课堂","name": "高中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/高中课堂.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "网络直播","name": "网络|直播","type": 3,"api": "./py/WLZB.py"},
{"key": "哔哩直播","name": "哔哩|直播","type": 3,"api": "./py/BLZB.py"},
{"key": "哔哩合集","name": "哔哩|合集","type": 3,"api": "csp_Bili","searchable": 1,"quickSearch": 0,"filterable": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.433},"ext": {"json": "./json/BLHJ.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"}},
{"key": "哔哩哔哩演唱会","name": "哔哩|音乐","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLYCH.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩听书","name": "哔哩|听书","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLTS.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩相声","name": "哔哩|相声","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXS.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩小品","name": "哔哩|小品","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXP.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩戏曲","name": "哔哩|戏曲","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXQ.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "少儿教育","name": "少儿|教育","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/SEJY.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "小学课堂","name": "小学|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/XXKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "初中课堂","name": "初中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/CZKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "高中课堂","name": "高中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/GZKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "急救教学","name": "急救|教学","type": 3,"api": "csp_FirstAid","searchable": 0,"quickSearch": 0,"changeable": 0,"style": {"type": "rect","ratio": 3.8},"gridview": "0-0-4.1"},
{"key": "养生堂","name": "养生|知识","type": 3,"api": "csp_YST","searchable": 0,"quickSearch": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.597}},
{"key": "电影天堂","name": "影视 | 电影天堂","type": 1,"api": "http://caiji.dyttzyapi.com/api.php/provide/vod","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"playerType": 2},
BIN
View File
Binary file not shown.
+1 -169
View File
@@ -1,169 +1 @@
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
// 3个set-Cookie
var rule = {
title:'Anime1动畫',
host:'https://anime1.me',
url: '/fyclass',
detailUrl:'/?cat=fyid',
searchUrl: '/page/fypage?s=**',
searchable:2,
quickSearch:0,
headers:{'User-Agent': 'PC_UA'},
timeout:5000,
class_name:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&更早',
class_url:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&2017',
play_parse:true,
lazy:`js:
var apiurl = 'https://v.anime1.me/api';
var html = request(apiurl, {
headers: {
'Referer': HOST,
},
body: 'd=' + input,
method: 'POST',
withHeaders: true
});
let json = JSON.parse(html);
print(json);
log(Object.keys(json));
let setCk = Object.keys(json).filter(it => it.toLowerCase() === "set-cookie");
let cookie = setCk ? json[setCk] : "";
// 3个set-Cookie
if (Array.isArray(cookie)) {
cookie = cookie.join(';');
}
cookie = cookie.split(';').filter(function(it) {
return ['e', 'p', 'h'].includes(it.split('=')[0])
}).join(';');
log(cookie);
var purl = JSON.parse(json.body).s[0].src;
if (purl.startsWith('/')) {
purl = 'https:' + purl
}
input = {
jx: 0,
url: purl,
parse: 0,
header: JSON.stringify({
'referer': HOST,
'Cookie': cookie,
'user-agent': PC_UA
}),
}
`,
limit:6,
推荐: `js:
var d = [];
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
var timestamp = new Date().getTime();
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
var list = JSON.parse(json);
let playKeys = Object.values(list).filter(function(x) {
return x[2].includes('連載中');
});
playKeys.forEach(function(it) {
d.push({
title: stripHtmlTag(it[1]),
img: 'https://sta.anicdn.com/playerImg/8.jpg',
desc: it[2],
url: it[0],
});
});
setResult(d);
`,
一级: `js:
var d = [];
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
var timestamp = new Date().getTime();
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
var list = JSON.parse(json);
let playKeys = Object.values(list).filter(function(x) {
if (MY_CATE === '連載中') return x[2].includes(MY_CATE);
else if (MY_CATE === '2017') return x[3] <= MY_CATE;
else return x[3] == MY_CATE;
});
playKeys.forEach(function(it) {
d.push({
title: stripHtmlTag(it[1]),
img: 'https://sta.anicdn.com/playerImg/8.jpg',
desc: it[2],
url: it[0],
});
});
setResult(d);
`,
二级: `js:
pdfh = jsp.pdfh; pdfa = jsp.pdfa; pd = jsp.pd;
var html = request(input);
var timestamp = new Date().getTime();
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
var list = JSON.parse(json);
var vid = input.split('=')[1];
let playKeys = Object.values(list).find(function(x) {
return x[0] === parseInt(vid);
});
VOD = {
vod_pic: 'https://sta.anicdn.com/playerImg/8.jpg',
vod_id: playKeys[0],
vod_name: playKeys[1],
vod_content: playKeys[2],
vod_year: playKeys[3],
type_name: playKeys[4],
vod_actor: playKeys[5],
};
var pageurl = pd(html, '.cat-links&&a&&href');
var pagenum = 1;
let vod_tab_list = [];
let vlist = [];
for (let p = 1; p < parseInt(pagenum) + 1; p++) {
let phtml = request(pageurl + '/page/' + pagenum);
let new_vod_list = [];
let vodList = [];
vodList = pdfa(phtml, '.site-main&&article');
for (let i = 0; i < vodList.length; i++) {
let it = vodList[i];
let ptitle = pdfh(it, '.entry-title&&Text').replace(/\\[(.*)\\]/, '$1');
let purl = pd(it, '.video-js&&data-apireq');
new_vod_list.push(ptitle + '$' + purl);
}
vlist = vlist.concat(new_vod_list);
try {
pagenum = pd(phtml, '.nav-previous&&a&&href').split('/page/')[1];
} catch(e) {}
}
let vlist2 = vlist.reverse().join("#");
vod_tab_list.push(vlist2);
VOD.vod_play_from = '在线播放';
VOD.vod_play_url = vod_tab_list.join("$$$");
`,
搜索: `js:
var d = [];
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
var timestamp = new Date().getTime();
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
var list = JSON.parse(json);
var wd = input.split('=')[1];
let playKeys = Object.values(list).filter(function(x) {
return x[1].includes(wd);
});
log(playKeys);
playKeys.forEach(function(it) {
d.push({
title: stripHtmlTag(it[1]),
img: 'https://sta.anicdn.com/playerImg/8.jpg',
desc: it[2],
url: it[0],
});
});
setResult(d);
`,
}
Ly8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8gM+S4qnNldC1Db29raWUKCnZhciBydWxlID0gewoJdGl0bGU6J0FuaW1lMeWKqOeVqycsCglob3N0OidodHRwczovL2FuaW1lMS5tZScsCgl1cmw6ICcvZnljbGFzcycsCglkZXRhaWxVcmw6Jy8/Y2F0PWZ5aWQnLAoJc2VhcmNoVXJsOiAnL3BhZ2UvZnlwYWdlP3M9KionLAoJc2VhcmNoYWJsZToyLAoJcXVpY2tTZWFyY2g6MCwKCWhlYWRlcnM6eydVc2VyLUFnZW50JzogJ1BDX1VBJ30sCgl0aW1lb3V0OjUwMDAsCiAgICBjbGFzc19uYW1lOifpgKPovInkuK0mMjAyNSYyMDI0JjIwMjMmMjAyMiYyMDIxJjIwMjAmMjAxOSYyMDE4JuabtOaXqScsCiAgICBjbGFzc191cmw6J+mAo+i8ieS4rSYyMDI1JjIwMjQmMjAyMyYyMDIyJjIwMjEmMjAyMCYyMDE5JjIwMTgmMjAxNycsCglwbGF5X3BhcnNlOnRydWUsCglsYXp5OmBqczoKCQl2YXIgYXBpdXJsID0gJ2h0dHBzOi8vdi5hbmltZTEubWUvYXBpJzsKCQl2YXIgaHRtbCA9IHJlcXVlc3QoYXBpdXJsLCB7CgkJCWhlYWRlcnM6IHsKCQkJCSdSZWZlcmVyJzogSE9TVCwKCQkJfSwKCQkJYm9keTogJ2Q9JyArIGlucHV0LAoJCQltZXRob2Q6ICdQT1NUJywKCQkJd2l0aEhlYWRlcnM6IHRydWUKCQl9KTsKCQlsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CgkJcHJpbnQoanNvbik7CgkJbG9nKE9iamVjdC5rZXlzKGpzb24pKTsKCQlsZXQgc2V0Q2sgPSBPYmplY3Qua2V5cyhqc29uKS5maWx0ZXIoaXQgPT4gaXQudG9Mb3dlckNhc2UoKSA9PT0gInNldC1jb29raWUiKTsKCQlsZXQgY29va2llID0gc2V0Q2sgPyBqc29uW3NldENrXSA6ICIiOwoJCS8vIDPkuKpzZXQtQ29va2llCgkJaWYgKEFycmF5LmlzQXJyYXkoY29va2llKSkgewoJCQljb29raWUgPSBjb29raWUuam9pbignOycpOwoJCX0KCQljb29raWUgPSBjb29raWUuc3BsaXQoJzsnKS5maWx0ZXIoZnVuY3Rpb24oaXQpIHsKCQkJcmV0dXJuIFsnZScsICdwJywgJ2gnXS5pbmNsdWRlcyhpdC5zcGxpdCgnPScpWzBdKQoJCX0pLmpvaW4oJzsnKTsKCQlsb2coY29va2llKTsKCQl2YXIgcHVybCA9IEpTT04ucGFyc2UoanNvbi5ib2R5KS5zWzBdLnNyYzsKCQlpZiAocHVybC5zdGFydHNXaXRoKCcvJykpIHsKCQkJcHVybCA9ICdodHRwczonICsgcHVybAoJCX0KCQlpbnB1dCA9IHsKCQkJang6IDAsCgkJCXVybDogcHVybCwKCQkJcGFyc2U6IDAsCgkJCWhlYWRlcjogSlNPTi5zdHJpbmdpZnkoewoJCQkJJ3JlZmVyZXInOiBIT1NULAoJCQkJJ0Nvb2tpZSc6IGNvb2tpZSwKCQkJCSd1c2VyLWFnZW50JzogUENfVUEKCQkJfSksCgkJfQoJYCwKCWxpbWl0OjYsCgnmjqjojZA6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maWx0ZXIoZnVuY3Rpb24oeCkgewoJCQlyZXR1cm4geFsyXS5pbmNsdWRlcygn6YCj6LyJ5LitJyk7CgkJfSk7CgkJcGxheUtleXMuZm9yRWFjaChmdW5jdGlvbihpdCkgewoJCQlkLnB1c2goewoJCQkJdGl0bGU6IHN0cmlwSHRtbFRhZyhpdFsxXSksCgkJCQlpbWc6ICdodHRwczovL3N0YS5hbmljZG4uY29tL3BsYXllckltZy84LmpwZycsCgkJCQlkZXNjOiBpdFsyXSwKCQkJCXVybDogaXRbMF0sCgkJCX0pOwoJCX0pOwoJCXNldFJlc3VsdChkKTsKCWAsCgnkuIDnuqc6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maWx0ZXIoZnVuY3Rpb24oeCkgewoJCQlpZiAoTVlfQ0FURSA9PT0gJ+mAo+i8ieS4rScpIHJldHVybiB4WzJdLmluY2x1ZGVzKE1ZX0NBVEUpOwoJCQllbHNlIGlmIChNWV9DQVRFID09PSAnMjAxNycpIHJldHVybiB4WzNdIDw9IE1ZX0NBVEU7CgkJCWVsc2UgcmV0dXJuIHhbM10gPT0gTVlfQ0FURTsKCQl9KTsKCQlwbGF5S2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CgkJCWQucHVzaCh7CgkJCQl0aXRsZTogc3RyaXBIdG1sVGFnKGl0WzFdKSwKCQkJCWltZzogJ2h0dHBzOi8vc3RhLmFuaWNkbi5jb20vcGxheWVySW1nLzguanBnJywKCQkJCWRlc2M6IGl0WzJdLAoJCQkJdXJsOiBpdFswXSwKCQkJfSk7CgkJfSk7CgkJc2V0UmVzdWx0KGQpOwoJYCwKCeS6jOe6pzogYGpzOgoJCXBkZmggPSBqc3AucGRmaDsgcGRmYSA9IGpzcC5wZGZhOyBwZCA9IGpzcC5wZDsKCQl2YXIgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJdmFyIHZpZCA9IGlucHV0LnNwbGl0KCc9JylbMV07CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maW5kKGZ1bmN0aW9uKHgpIHsKCQkJcmV0dXJuIHhbMF0gPT09IHBhcnNlSW50KHZpZCk7CgkJfSk7CgkJVk9EID0gewoJCQl2b2RfcGljOiAnaHR0cHM6Ly9zdGEuYW5pY2RuLmNvbS9wbGF5ZXJJbWcvOC5qcGcnLAoJCQl2b2RfaWQ6IHBsYXlLZXlzWzBdLAoJCQl2b2RfbmFtZTogcGxheUtleXNbMV0sCgkJCXZvZF9jb250ZW50OiBwbGF5S2V5c1syXSwKCQkJdm9kX3llYXI6IHBsYXlLZXlzWzNdLAoJCQl0eXBlX25hbWU6IHBsYXlLZXlzWzRdLAoJCQl2b2RfYWN0b3I6IHBsYXlLZXlzWzVdLAoJCX07CgkJdmFyIHBhZ2V1cmwgPSBwZChodG1sLCAnLmNhdC1saW5rcyYmYSYmaHJlZicpOwoJCXZhciBwYWdlbnVtID0gMTsKCQlsZXQgdm9kX3RhYl9saXN0ID0gW107CgkJbGV0IHZsaXN0ID0gW107CgkJZm9yIChsZXQgcCA9IDE7IHAgPCBwYXJzZUludChwYWdlbnVtKSArIDE7IHArKykgewoJCQlsZXQgcGh0bWwgPSByZXF1ZXN0KHBhZ2V1cmwgKyAnL3BhZ2UvJyArIHBhZ2VudW0pOwoJCQlsZXQgbmV3X3ZvZF9saXN0ID0gW107CgkJCWxldCB2b2RMaXN0ID0gW107CgkJCXZvZExpc3QgPSBwZGZhKHBodG1sLCAnLnNpdGUtbWFpbiYmYXJ0aWNsZScpOwoJCQlmb3IgKGxldCBpID0gMDsgaSA8IHZvZExpc3QubGVuZ3RoOyBpKyspIHsKCQkJCWxldCBpdCA9IHZvZExpc3RbaV07CgkJCQlsZXQgcHRpdGxlID0gcGRmaChpdCwgJy5lbnRyeS10aXRsZSYmVGV4dCcpLnJlcGxhY2UoL1xcWyguKilcXF0vLCAnJDEnKTsKCQkJCWxldCBwdXJsID0gcGQoaXQsICcudmlkZW8tanMmJmRhdGEtYXBpcmVxJyk7CgkJCQluZXdfdm9kX2xpc3QucHVzaChwdGl0bGUgKyAnJCcgKyBwdXJsKTsKCQkJfQoJCQl2bGlzdCA9IHZsaXN0LmNvbmNhdChuZXdfdm9kX2xpc3QpOwoJCQl0cnkgewoJCQkJcGFnZW51bSA9IHBkKHBodG1sLCAnLm5hdi1wcmV2aW91cyYmYSYmaHJlZicpLnNwbGl0KCcvcGFnZS8nKVsxXTsKCQkJfSBjYXRjaChlKSB7fQoJCX0KCQlsZXQgdmxpc3QyID0gdmxpc3QucmV2ZXJzZSgpLmpvaW4oIiMiKTsKCQl2b2RfdGFiX2xpc3QucHVzaCh2bGlzdDIpOwoJCVZPRC52b2RfcGxheV9mcm9tID0gJ+mBk+mVv+WcqOe6vyc7CgkJVk9ELnZvZF9wbGF5X3VybCA9IHZvZF90YWJfbGlzdC5qb2luKCIkJCQiKTsKCWAsCgnmkJzntKI6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJdmFyIHdkID0gaW5wdXQuc3BsaXQoJz0nKVsxXTsKCQlsZXQgcGxheUtleXMgPSBPYmplY3QudmFsdWVzKGxpc3QpLmZpbHRlcihmdW5jdGlvbih4KSB7CgkJCXJldHVybiB4WzFdLmluY2x1ZGVzKHdkKTsKCQl9KTsKCQlsb2cocGxheUtleXMpOwoJCXBsYXlLZXlzLmZvckVhY2goZnVuY3Rpb24oaXQpIHsKCQkJZC5wdXNoKHsKCQkJCXRpdGxlOiBzdHJpcEh0bWxUYWcoaXRbMV0pLAoJCQkJaW1nOiAnaHR0cHM6Ly9zdGEuYW5pY2RuLmNvbS9wbGF5ZXJJbWcvOC5qcGcnLAoJCQkJZGVzYzogaXRbMl0sCgkJCQl1cmw6IGl0WzBdLAoJCQl9KTsKCQl9KTsKCQlzZXRSZXN1bHQoZCk7CglgLAp9
+567
View File
@@ -0,0 +1,567 @@
var rule = {
title: "路漫漫",
host: "https://www.lmm50.com",
url: "/vod/show/id/fyclassfyfilter.html",
searchUrl: '/vod/search/page/fypage/wd/**.html',
searchable: 2,
quickSearch: 0,
filterable: 1,
filter: {
"3": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"4": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"5": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"6": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"7": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"8": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}]
},
filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage",
filter_def: "",
headers: {
"User-Agent": "MOBILE_UA"
},
timeout: 5000,
class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影",
class_url: "6&7&8&3&4&5",
class_parse: "",
cate_exclude: "",
play_parse: true,
lazy: $js.toString(() => {
function getDAesString(token) {
eval(getCryptoJS());
var key = CryptoJS.enc.Utf8.parse("ejjooopppqqqrwww");
var iv = CryptoJS.enc.Utf8.parse("1348987635684651");
var token = CryptoJS.AES.decrypt(token, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
return token.toString(CryptoJS.enc.Utf8);
}
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
var url = html.url;
var from = html.from;
if (html.encrypt == "1") {
url = unescape(url);
} else if (html.encrypt == "2") {
url = unescape(base64Decode(url));
}
if (/\.mp4|\.m3u8|\.flv/.test(url)) {
input = {
parse: 0,
url: url.split("&")[0],
js: ''
};
} else {
var jsh = request(HOST + "/static/player/" + from + ".js", {
headers: {
Referer: input
},
}).match(/\.src\s*=\s*(.*?);/)[1];
//log(MY_HOME);
if (/type=/.test(jsh)) {
jsh = jsh
.replace(/[\+\s']/g, "")
.replace(/MacPlayer.Parse/, "")
.replace(/MacPlayer.PlayUrl/, url)
.replace(/window.location.href/, input);
var playht = fetch(jsh, {
headers: {
Referer: HOST
}
});
} else {
jsh = jsh
.replace(/[\+\s']/g, "")
.replace(/MacPlayer.Parse/, "")
.replace(/MacPlayer.PlayUrl/, url)
.replace(/window.location.href/, input);
jsh = JSON.parse(
fetch(jsh, {
headers: {
Referer: HOST
},
onlyHeaders: true
})
).url;
var playht = fetch(jsh, {
headers: {
Referer: HOST
}
});
}
var postapi = jsh.match(/^(.*?\/\/.*?\/.*?\/)/)[1];
var posturl = postapi + playht.match(/post\("(.*?)"/)[1];
if (/act\s*=/.test(playht)) {
var vid = playht.match(/vid\s*=\s*"(.*?)"/)[1];
var t = playht.match(/var\s*t\s*=\s*"(.*?)"/)[1];
var token = playht.match(/token\s*=\s*"(.*?)"/)[1];
var act = playht.match(/act\s*=\s*"(.*?)"/)[1];
var play = playht.match(/play\s*=\s*"(.*?)"/)[1];
token = getDAesString(token);
var data = JSON.parse(
post(posturl, {
headers: {
Referer: HOST
},
body: {
vid: vid,
t: t,
token: token,
act: act,
play: play,
},
timeout: 5000
})
);
input = {
parse: 0,
url: data.url,
js: ''
};
} else {
var key = "";
playht.match(/var (\w+)="(.*?)";/g).forEach(function(list) {
key += list.match(/"(.*?)"/)[1];
});
const bodys = JSON.parse(
playht
.match(/post\(.*?,(.*?),\n/)[1]
.replace(/"keyyy"\s*:\s*''.*?''/, '"keyyy" : "' + key + '"')
);
var data = JSON.parse(
post(posturl, {
headers: {
Referer: HOST
},
body: bodys
})
);
if (data.ext == "xgplayer") {
var dataurl =
"https://yun.366day.site/mp4hls/xgplayer.php?vid=" + data.url;
var video = fetch(dataurl, {
headers: {
Referer: jsh
}
}).match(
/"url": "(.*?)"/
)[1];
input = {
parse: 0,
url: video,
js: ''
};
} else if (data.ext == "hls" || data.ext == "hls_list") {
input = {
parse: 0,
url: decodeURIComponent(data.url),
js: ''
};
} else {
input = {
parse: 0,
url: data.url,
js: ''
};
}
}
}
}),
double: false,
推荐: "*",
一级: ".video-img-box;h6.title&&Text;.lazyload&&data-src;.label&&Text;a&&href",
二级: {
title: ".page-title&&Text;.tag-link&&Text",
img: ".module-item-pic&&.lazyload&&src",
desc: ".video-info-items:eq(3)&&Text;.video-info-items:eq(2)&&Text;;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text",
content: ".video-info-content&&Text",
tabs: ".module-tab-item.tab-item",
lists: ".module-player-list:eq(#id) a",
tab_text: "body&&Text",
list_text: "body&&Text",
list_url: "a&&href"
},
detailUrl: "",
搜索: "*"
}
+1142
View File
@@ -0,0 +1,1142 @@
muban.vfed.二级.title = 'h1&&Text;.fed-col-md3--span:eq(0)&&Text';
muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text';
var rule = {
title: '去看吧',
模板: 'vfed',
host: 'https://qkan8.com',
// url: '/index.php/vod/show/id/fyclass/page/fypage.html',
url: '/index.php/vod/show/id/fyclassfyfilter.html',
filterable: 1, //是否启用分类筛选,
filter_url: '{{fl.area}}{{fl.by}}{{fl.class}}/page/fypage{{fl.year}}',
filter: {
"33": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}],
"21": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "大陆",
"v": "/area/大陆"
}, {
"n": "美国",
"v": "/area/美国"
}, {
"n": "韩国",
"v": "/area/韩国"
}, {
"n": "日本",
"v": "/area/日本"
}, {
"n": "泰国",
"v": "/area/泰国"
}, {
"n": "新加坡",
"v": "/area/新加坡"
}, {
"n": "马来西亚",
"v": "/area/马来西亚"
}, {
"n": "印度",
"v": "/area/印度"
}, {
"n": "英国",
"v": "/area/英国"
}, {
"n": "法国",
"v": "/area/法国"
}, {
"n": "加拿大",
"v": "/area/加拿大"
}, {
"n": "西班牙",
"v": "/area/西班牙"
}, {
"n": "俄罗斯",
"v": "/area/俄罗斯"
}, {
"n": "其它",
"v": "/area/其它"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}],
"50": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "大陆",
"v": "/area/大陆"
}, {
"n": "美国",
"v": "/area/美国"
}, {
"n": "韩国",
"v": "/area/韩国"
}, {
"n": "日本",
"v": "/area/日本"
}, {
"n": "泰国",
"v": "/area/泰国"
}, {
"n": "新加坡",
"v": "/area/新加坡"
}, {
"n": "马来西亚",
"v": "/area/马来西亚"
}, {
"n": "印度",
"v": "/area/印度"
}, {
"n": "英国",
"v": "/area/英国"
}, {
"n": "法国",
"v": "/area/法国"
}, {
"n": "加拿大",
"v": "/area/加拿大"
}, {
"n": "西班牙",
"v": "/area/西班牙"
}, {
"n": "俄罗斯",
"v": "/area/俄罗斯"
}, {
"n": "其它",
"v": "/area/其它"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}],
"24": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "大陆",
"v": "/area/大陆"
}, {
"n": "美国",
"v": "/area/美国"
}, {
"n": "韩国",
"v": "/area/韩国"
}, {
"n": "日本",
"v": "/area/日本"
}, {
"n": "泰国",
"v": "/area/泰国"
}, {
"n": "新加坡",
"v": "/area/新加坡"
}, {
"n": "马来西亚",
"v": "/area/马来西亚"
}, {
"n": "印度",
"v": "/area/印度"
}, {
"n": "英国",
"v": "/area/英国"
}, {
"n": "法国",
"v": "/area/法国"
}, {
"n": "加拿大",
"v": "/area/加拿大"
}, {
"n": "西班牙",
"v": "/area/西班牙"
}, {
"n": "俄罗斯",
"v": "/area/俄罗斯"
}, {
"n": "其它",
"v": "/area/其它"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}],
"22": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "日本",
"v": "/area/日本"
}, {
"n": "欧美",
"v": "/area/欧美"
}, {
"n": "其他",
"v": "/area/其他"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}]
},
class_parse: '.fed-pops-list:eq(0)&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html',
}
+24 -24
View File
@@ -1,5 +1,5 @@
{
"spider": "./jar/spider.jar;md5;8599a715437d21e6660ad75f36967e70",
"spider": "./jar/spider.jar;md5;8c879fe501ce509c5b2adacf037381c9",
"lives": [
{"name": "migu","type": 0,"url": "https://develop202.github.io/migu_video/interface.txt","playerType": 1,"ua": "okhttp/3.8.1","timeout": 20,"epg": "https://epg.cdn.loc.cc/?ch={name}&date={date}","logo": "https://logo.wyfc.qzz.io/{name}.png"},
{"name": "live","type": 0,"url": "https://epg.pw/test_channels.m3u","playerType": 1,"ua": "okhttp/3.8.1","timeout": 20,"epg": "https://epg.cdn.loc.cc/?ch={name}&date={date}","logo": "https://logo.wyfc.qzz.io/{name}.png"},
@@ -68,32 +68,32 @@
{"key": "独播影视","name": "独播|影视","type": 3,"api": "csp_Duboku"},
{"key": "厂长影视","name": "厂长|影视","type": 3,"api": "csp_Czsapp","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://cz01.vip"},
{"key": "金牌影视","name": "金牌|影视","type": 3,"api": "csp_Jpys","ext": "https://y2s52n7.com,https://m.hkybqufgh.com,https://m.sizhengxt.com,https://m.9zhoukj.com,https://m.sizhengxt.com,https://m.jiabaide.cn"},
{"key": "修罗影视","name": "修罗|影视","api": "csp_Xlys","type": 3,"ext": "https://www.xlysw.ggff.net"},
{"key": "瓜子影视","name": "瓜子|影视","type": 3,"api": "csp_Gz360"},
{"key": "云播影视","name": "云播|影视","type": 3,"api": "csp_Tvyb"},
{"key": "骚火影视","name": "骚火|影视","type": 3,"api": "csp_SaoHuo","ext": "https://shdy5.us"},
{"key": "农民影视","name": "农民|影视","type": 3,"api": "csp_Wwys","ext": "https://vip.wwgz.cn:5200"},
{"key": "爱看机器人","name": "爱看|影视","type": 3,"api": "csp_Ikanbot","searchable": 1,"quickSearch": 1,"filterable": 1},
{"key": "小镇影视","name": "小镇|影视","type": 3,"api": "csp_XBPQ","ext": "./XBPQ/小镇影视.json"},
{"key": "面包影视","name": "面包|影视","type": 3,"api": "csp_XBPQ","ext": "./XBPQ/面包影视.json"},
{"key": "永乐影视","name": "永乐|影视","type": 3,"api": "csp_XBPQ","ext": "./XBPQ/永乐影视.json"},
{"key": "剧圈影视","name": "剧圈|影视","type": 3,"api": "csp_XYQHiker","ext": "./XYQHiker/剧圈影视.json"},
{"key": "小镇影视","name": "小镇|影视","type": 3,"api": "csp_XBPQ","ext": "./json/XZYS.json"},
{"key": "面包影视","name": "面包|影视","type": 3,"api": "csp_XBPQ","ext": "./json/MBYS.json"},
{"key": "永乐影视","name": "永乐|影视","type": 3,"api": "csp_XBPQ","ext": "./json/YLYS.json"},
{"key": "剧圈影视","name": "剧圈|影视","type": 3,"api": "csp_XYQHiker","ext": "./json/JQYS.json"},
{"key": "1905","name": "1905|影视","type": 3,"api": "csp_Web1905","searchable": 1,"quickSearch": 0,"filterable": 0},
{"key": "哆啦新番社","name": "哆啦|新番社","type": 3,"api": "csp_XBPQ","style": {"type": "list"},"ext": "./XBPQ/哆啦新番社.json"},
{"key": "Anime1","name": "A1|动漫","type": 3,"api": "./lib/drpy2.min.js","ext": "./js/Anime1.js"},
{"key": "哆啦新番社","name": "哆啦|新番社","type": 3,"api": "csp_XBPQ","style": {"type": "list"},"ext": "./json/DLXFS.json"},
{"key": "Anime1","name": "A1|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/Anime1.js"},
{"key": "漫国动漫","name": "漫国丨动漫","type": 3,"searchable": 1,"api": "csp_AppSy","ext": {"site": "https://dm-1255775577.cos.ap-guangzhou.myqcloud.com/dmg/api.txt","siteKey": "rectangleadsadxa","listKey": "aassddwwxxllsx1x","parsesKey": "aassddwwxxllsx1x"}},
{"key": "方舟动漫","name": "方舟丨动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://www.cyfz.top","dataKey": "e72cdfd629e8895d","dataIv": "e72cdfd629e8895d"}},
{"key": "曼波动漫","name": "曼波|动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://app.omofun1.top","dataKey": "66dc309cbeeca454","dataIv": "66dc309cbeeca454"}},
{"key": "咕咕动漫","name": "咕咕|动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://www.gugu3.com","dataKey": "nKfZ8KX6JTNWRzTD","dataIv": "nKfZ8KX6JTNWRzTD"}},
{"key": "巴士动漫","name": "巴士|动漫","type": 3,"api": "csp_XYQHiker","ext": "./XYQHiker/巴士动漫.json"},
{"key": "路漫漫","name": "路漫漫|动漫","type": 3,"api": "./lib/drpy2.min.js","ext": "./js/路漫漫.js"},
{"key": "去看吧","name": "去看吧|动漫","type": 3,"api": "./lib/drpy2.min.js","ext": "./js/去看吧.js"},
{"key": "巴士动漫","name": "巴士|动漫","type": 3,"api": "csp_XYQHiker","ext": "https://git.yylx.win/raw.githubusercontent.com/PizazzGY/NewTVBox/main/anime/json/bsdm.json"},
{"key": "路漫漫","name": "路漫漫|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/LMM.js"},
{"key": "去看吧","name": "去看吧|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/QKB.js"},
{"key": "荐片","name": "荐片|磁力","api": "csp_JianPian","type": 3},
{"key": "修罗","name": "修罗|磁力","api": "csp_Xlys","type": 3,"ext": "https://www.xlysw.ggff.net"},
{"key": "七味","name": "七味|磁力","type": 3,"api": "csp_QnMp4","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://www.qwshow.com,https://www.qwmkv.com,https://www.qwfilm.com,https://www.qwfun.com,https://www.qnnull.com,https://www.qnnull.com"},
{"key": "New6v","name": "New6V|磁力","type": 3,"api": "csp_New6v","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://www.xb6v.com"},
{"key": "美剧迷","name": "美剧迷|磁力","type": 3,"api": "csp_MeijuMi","searchable": 1,"quickSearch": 1,"filterable": 1},
{"key": "迅雷吧","name": "迅雷吧|磁力","type": 3,"api": "csp_Xunlei8","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://xunlei8.me"},
{"key": "电影港","name": "电影港|磁力","type": 3,"api": "csp_XYQHiker","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "./XYQHiker/电影港.json"},
{"key": "电影港","name": "电影港|磁力","type": 3,"api": "csp_XYQHiker","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "./json/DYG.json"},
{"key": "阿里云盘","name": "阿里|云盘","type": 3,"api": "csp_PanAli","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
{"key": "夸克网盘","name": "夸克|网盘","type": 3,"api": "csp_PanQuark","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
{"key": "UC网盘","name": "UC|网盘","type": 3,"api": "csp_PanUC","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
@@ -118,18 +118,18 @@
{"key": "世界听书","name": "世界|听书","type": 3,"api": "csp_TingShijie","style": {"type": "list"}},
{"key": "戏曲多多","name": "戏曲|多多","type": 3,"api": "csp_AppLY","style": {"type": "list"}},
{"key": "爱听音乐","name": "爱听|音乐","type": 3,"api": "./py/爱听音乐.py"},
{"key": "网络直播","name": "网络|直播","type": 3,"api": "./py/网络直播.py"},
{"key": "哔哩直播","name": "哔哩|直播","type": 3,"api": "./py/哔哩直播.py"},
{"key": "哔哩合集","name": "哔哩|合集","type": 3,"api": "csp_Bili","searchable": 1,"quickSearch": 0,"filterable": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.433},"ext": {"json": "./json/哔哩合集.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"}},
{"key": "哔哩哔哩演唱会","name": "哔哩|音乐","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩演唱会.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩听书","name": "哔哩|听书","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩听书.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩相声","name": "哔哩|相声","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩相声.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩小品","name": "哔哩|小品","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩小品.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩戏曲","name": "哔哩|戏曲","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/哔哩哔哩戏曲.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "少儿教育","name": "少儿|教育","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/少儿教育.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "小学课堂","name": "小学|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/小学课堂.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "初中课堂","name": "初中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/初中课堂.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "高中课堂","name": "高中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/高中课堂.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "网络直播","name": "网络|直播","type": 3,"api": "./py/WLZB.py"},
{"key": "哔哩直播","name": "哔哩|直播","type": 3,"api": "./py/BLZB.py"},
{"key": "哔哩合集","name": "哔哩|合集","type": 3,"api": "csp_Bili","searchable": 1,"quickSearch": 0,"filterable": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.433},"ext": {"json": "./json/BLHJ.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"}},
{"key": "哔哩哔哩演唱会","name": "哔哩|音乐","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLYCH.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩听书","name": "哔哩|听书","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLTS.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩相声","name": "哔哩|相声","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXS.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩小品","name": "哔哩|小品","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXP.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩戏曲","name": "哔哩|戏曲","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXQ.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "少儿教育","name": "少儿|教育","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/SEJY.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "小学课堂","name": "小学|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/XXKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "初中课堂","name": "初中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/CZKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "高中课堂","name": "高中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/GZKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "急救教学","name": "急救|教学","type": 3,"api": "csp_FirstAid","searchable": 0,"quickSearch": 0,"changeable": 0,"style": {"type": "rect","ratio": 3.8},"gridview": "0-0-4.1"},
{"key": "养生堂","name": "养生|知识","type": 3,"api": "csp_YST","searchable": 0,"quickSearch": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.597}},
{"key": "电影天堂","name": "影视 | 电影天堂","type": 1,"api": "http://caiji.dyttzyapi.com/api.php/provide/vod","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"playerType": 2},
+314
View File
@@ -0,0 +1,314 @@
# coding=utf-8
# !/usr/bin/python
"""
作者 丢丢喵 🚓 内容均从互联网收集而来 仅供交流学习使用 版权归原创者所有 如侵犯了您的权益 请通知作者 将及时删除侵权内容
====================Diudiumiao====================
"""
from Crypto.Util.Padding import unpad
from Crypto.Util.Padding import pad
from urllib.parse import unquote
from Crypto.Cipher import ARC4
from urllib.parse import quote
from base.spider import Spider
from Crypto.Cipher import AES
from datetime import datetime
from bs4 import BeautifulSoup
from base64 import b64decode
import urllib.request
import urllib.parse
import datetime
import binascii
import requests
import base64
import json
import time
import sys
import re
import os
sys.path.append('..')
xurl = "https://search.bilibili.com"
xurl1 = "https://api.live.bilibili.com"
headerx = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0'
}
class Spider(Spider):
global xurl
global xurl1
global headerx
def getName(self):
return "首页"
def init(self, extend):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def extract_middle_text(self, text, start_str, end_str, pl, start_index1: str = '', end_index2: str = ''):
if pl == 3:
plx = []
while True:
start_index = text.find(start_str)
if start_index == -1:
break
end_index = text.find(end_str, start_index + len(start_str))
if end_index == -1:
break
middle_text = text[start_index + len(start_str):end_index]
plx.append(middle_text)
text = text.replace(start_str + middle_text + end_str, '')
if len(plx) > 0:
purl = ''
for i in range(len(plx)):
matches = re.findall(start_index1, plx[i])
output = ""
for match in matches:
match3 = re.search(r'(?:^|[^0-9])(\d+)(?:[^0-9]|$)', match[1])
if match3:
number = match3.group(1)
else:
number = 0
if 'http' not in match[0]:
output += f"#{match[1]}${number}{xurl}{match[0]}"
else:
output += f"#{match[1]}${number}{match[0]}"
output = output[1:]
purl = purl + output + "$$$"
purl = purl[:-3]
return purl
else:
return ""
else:
start_index = text.find(start_str)
if start_index == -1:
return ""
end_index = text.find(end_str, start_index + len(start_str))
if end_index == -1:
return ""
if pl == 0:
middle_text = text[start_index + len(start_str):end_index]
return middle_text.replace("\\", "")
if pl == 1:
middle_text = text[start_index + len(start_str):end_index]
matches = re.findall(start_index1, middle_text)
if matches:
jg = ' '.join(matches)
return jg
if pl == 2:
middle_text = text[start_index + len(start_str):end_index]
matches = re.findall(start_index1, middle_text)
if matches:
new_list = [f'{item}' for item in matches]
jg = '$$$'.join(new_list)
return jg
def homeContent(self, filter):
result = {}
result = {"class": [{"type_id": "", "type_name": "舞蹈"},
{"type_id": "音乐", "type_name": "音乐"},
{"type_id": "手游", "type_name": "手游"},
{"type_id": "网游", "type_name": "网游"},
{"type_id": "单机游戏", "type_name": "单机游戏"},
{"type_id": "虚拟主播", "type_name": "虚拟主播"},
{"type_id": "电台", "type_name": "电台"},
{"type_id": "体育", "type_name": "体育"},
{"type_id": "聊天", "type_name": "聊天"},
{"type_id": "娱乐", "type_name": "娱乐"},
{"type_id": "电影", "type_name": "影视"},
{"type_id": "新闻", "type_name": "新闻"}]
}
return result
def homeVideoContent(self):
pass
def categoryContent(self, cid, pg, filter, ext):
result = {}
videos = []
if pg:
page = int(pg)
else:
page = 1
url = f'{xurl}/live?keyword={cid}&page={str(page)}'
detail = requests.get(url=url, headers=headerx)
detail.encoding = "utf-8"
res = detail.text
doc = BeautifulSoup(res, "lxml")
soups = doc.find_all('div', class_="video-list-item")
for vod in soups:
names = vod.find('h3', class_="bili-live-card__info--tit")
name = names.text.strip().replace('直播中', '')
id = names.find('a')['href']
id = self.extract_middle_text(id, 'bilibili.com/', '?', 0)
pic = vod.find('img')['src']
if 'http' not in pic:
pic = "https:" + pic
remarks = vod.find('a', class_="bili-live-card__info--uname")
remark = remarks.text.strip()
video = {
"vod_id": id,
"vod_name": name,
"vod_pic": pic,
"vod_remarks": remark
}
videos.append(video)
result = {'list': videos}
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def detailContent(self, ids):
did = ids[0]
result = {}
videos = []
xianlu = ''
bofang = ''
url = f'{xurl1}/xlive/web-room/v2/index/getRoomPlayInfo?room_id={did}&platform=web&protocol=0,1&format=0,1,2&codec=0,1'
detail = requests.get(url=url, headers=headerx)
detail.encoding = "utf-8"
data = detail.json()
content = '欢迎观看哔哩直播'
setup = data['data']['playurl_info']['playurl']['stream']
nam = 0
for vod in setup:
try:
host = vod['format'][nam]['codec'][0]['url_info'][1]['host']
except (KeyError, IndexError):
continue
base = vod['format'][nam]['codec'][0]['base_url']
extra = vod['format'][nam]['codec'][0]['url_info'][1]['extra']
id = host + base + extra
nam = nam + 1
namc = f"{nam}号线路"
bofang = bofang + namc + '$' + id + '#'
bofang = bofang[:-1]
xianlu = '哔哩专线'
videos.append({
"vod_id": did,
"vod_content": content,
"vod_play_from": xianlu,
"vod_play_url": bofang
})
result['list'] = videos
return result
def playerContent(self, flag, id, vipFlags):
result = {}
result["parse"] = 0
result["playUrl"] = ''
result["url"] = id
result["header"] = headerx
return result
def searchContentPage(self, key, quick, pg):
result = {}
videos = []
if pg:
page = int(pg)
else:
page = 1
url = f'{xurl}/live?keyword={key}&page={str(page)}'
detail = requests.get(url=url, headers=headerx)
detail.encoding = "utf-8"
res = detail.text
doc = BeautifulSoup(res, "lxml")
soups = doc.find_all('div', class_="video-list-item")
for vod in soups:
names = vod.find('h3', class_="bili-live-card__info--tit")
name = names.text.strip().replace('直播中', '')
id = names.find('a')['href']
id = self.extract_middle_text(id, 'bilibili.com/', '?', 0)
pic = vod.find('img')['src']
if 'http' not in pic:
pic = "https:" + pic
remarks = vod.find('a', class_="bili-live-card__info--uname")
remark = remarks.text.strip()
video = {
"vod_id": id,
"vod_name": name,
"vod_pic": pic,
"vod_remarks": remark
}
videos.append(video)
result['list'] = videos
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def searchContent(self, key, quick, pg="1"):
return self.searchContentPage(key, quick, '1')
def localProxy(self, params):
if params['type'] == "m3u8":
return self.proxyM3u8(params)
elif params['type'] == "media":
return self.proxyMedia(params)
elif params['type'] == "ts":
return self.proxyTs(params)
return None
+1260
View File
@@ -0,0 +1,1260 @@
# -*- coding: utf-8 -*-
# by @星河
# 修复版本 - 参考最新三合一.js重构虎牙、斗鱼、B站直播逻辑
# 修复:虎牙清晰度选择,确保ratio参数正确传递码率值
# 修复:斗鱼切换分辨率只能播放1秒的问题(每次重新获取安全密钥和签名)
# 修复:B站使用特殊UA和WBI签名绕过-352风控 [^90^][^30^]
import json
import re
import sys
import time
import hashlib
import random
import urllib.parse
from base64 import b64decode, b64encode
from urllib.parse import parse_qs
import requests
from pyquery import PyQuery as pq
sys.path.append('..')
from base.spider import Spider
from concurrent.futures import ThreadPoolExecutor
class Spider(Spider):
def init(self, extend=""):
# 初始化B站WBI密钥
self.bili_wbi_keys = None
self.bili_wbi_expire = 0
pass
def getName(self):
return "直播"
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def destroy(self):
pass
headers = [
{
# 特殊UA绕过B站风控 [^90^]
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
},
{
"User-Agent": "Dart/3.4 (dart:io)"
}
]
excepturl = 'https://www.baidu.com'
hosts = {
"huya": ["https://www.huya.com", "https://mp.huya.com"],
"douyu": "https://www.douyu.com",
"wangyi": "https://cc.163.com",
"bili": ["https://api.live.bilibili.com", "https://api.bilibili.com"]
}
referers = {
"huya": "https://live.cdn.huya.com",
"douyu": "https://m.douyu.com",
"bili": "https://live.bilibili.com"
}
playheaders = {
"wangyi": {
"User-Agent": "ExoPlayer",
"Connection": "Keep-Alive",
"Icy-MetaData": "1"
},
"bili": {
'Accept': '*/*',
'Icy-MetaData': '1',
'referer': 'https://live.bilibili.com',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
},
'huya': {
'User-Agent': 'ExoPlayer',
'Connection': 'Keep-Alive',
'Icy-MetaData': '1'
},
'douyu': {
'User-Agent': 'libmpv',
'Icy-MetaData': '1'
}
}
# WBI签名相关常量 [^30^]
MIXIN_KEY_ENC_TAB = [
46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49,
33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40,
61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11,
36, 20, 34, 44, 52
]
def _get_bili_wbi_keys(self):
"""获取B站WBI密钥 [^30^]"""
try:
# 检查缓存
if self.bili_wbi_keys and time.time() < self.bili_wbi_expire:
return self.bili_wbi_keys
# 从导航接口获取 - 使用特殊UA [^90^]
resp = self.fetch(
'https://api.bilibili.com/x/web-interface/nav',
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
'Referer': 'https://www.bilibili.com/'
}
).json()
if resp.get('code') != 0:
return None
img_url = resp['data']['wbi_img']['img_url']
sub_url = resp['data']['wbi_img']['sub_url']
# 提取文件名作为key
img_key = img_url.rsplit('/', 1)[1].split('.')[0]
sub_key = sub_url.rsplit('/', 1)[1].split('.')[0]
self.bili_wbi_keys = (img_key, sub_key)
self.bili_wbi_expire = time.time() + 86400 # 24小时过期
return self.bili_wbi_keys
except Exception as e:
print(f"获取B站WBI密钥失败: {e}")
return None
def _get_mixin_key(self, orig: str):
"""生成mixin_key [^30^]"""
return ''.join([orig[i] for i in self.MIXIN_KEY_ENC_TAB])[:32]
def _enc_wbi(self, params: dict):
"""WBI签名 [^30^]"""
keys = self._get_bili_wbi_keys()
if not keys:
return params
img_key, sub_key = keys
mixin_key = self._get_mixin_key(img_key + sub_key)
# 添加时间戳
params['wts'] = round(time.time())
# 排序参数
params = dict(sorted(params.items()))
# 过滤特殊字符
params = {
k: ''.join(filter(lambda c: c not in "!'()*", str(v)))
for k, v in params.items()
}
# 计算签名
query = urllib.parse.urlencode(params)
w_rid = hashlib.md5((query + mixin_key).encode()).hexdigest()
params['w_rid'] = w_rid
return params
def process_bili(self):
"""获取B站分类列表 - 使用WBI签名 [^30^]"""
try:
# 尝试获取分类列表 - 使用特殊UA和WBI签名
params = {'need_entrance': 1, 'parent_id': 0}
signed_params = self._enc_wbi(params)
data = self.fetch(
f'{self.hosts["bili"][0]}/room/v1/Area/getList',
params=signed_params,
headers=self.headers[0]
).json()
if data.get('code') == 0 and data.get('data'):
# 保存分类数据供后续使用
self.bili_areas = data['data']
return ('bili', [{'key': 'cate', 'name': '分类',
'value': [{'n': i['name'], 'v': str(i['id'])}
for i in data['data']]}])
return 'bili', None
except Exception as e:
print(f"bili处理错误: {e}")
# 使用默认分类
return 'bili', [{'key': 'cate', 'name': '分类',
'value': [{'n': '网游', 'v': '2'}, {'n': '手游', 'v': '3'},
{'n': '单机', 'v': '6'}, {'n': '娱乐', 'v': '1'},
{'n': '电台', 'v': '5'}, {'n': '虚拟主播', 'v': '9'},
{'n': '生活', 'v': '10'}, {'n': '知识', 'v': '11'},
{'n': '赛事', 'v': '13'}]}]
def process_douyu(self):
try:
self.dyufdata = self.fetch(
f'{self.referers["douyu"]}/api/cate/list',
headers=self.headers[1]
).json()
return ('douyu', [{'key': 'cate', 'name': '分类',
'value': [{'n': i['cate1Name'], 'v': str(i['cate1Id'])}
for i in self.dyufdata['data']['cate1Info']]}])
except Exception as e:
print(f"douyu错误: {e}")
return 'douyu', None
def homeContent(self, filter):
result = {}
cateManual = {
"虎牙": "huya",
"斗鱼": "douyu",
"网易": "wangyi",
"B站": "bili"
}
classes = []
filters = {
'huya': [{'key': 'cate', 'name': '分类',
'value': [{'n': '网游', 'v': '1'}, {'n': '单机', 'v': '2'},
{'n': '娱乐', 'v': '8'}, {'n': '手游', 'v': '3'}]}]
}
with ThreadPoolExecutor(max_workers=2) as executor:
futures = {
executor.submit(self.process_bili): 'bili',
executor.submit(self.process_douyu): 'douyu'
}
for future in futures:
platform, filter_data = future.result()
if filter_data:
filters[platform] = filter_data
for k in cateManual:
classes.append({
'type_name': k,
'type_id': cateManual[k]
})
result['class'] = classes
result['filters'] = filters
return result
def homeVideoContent(self):
pass
def categoryContent(self, tid, pg, filter, extend):
vdata = []
result = {}
pagecount = 9999
result['page'] = pg
result['limit'] = 90
result['total'] = 999999
if tid == 'wangyi':
vdata, pagecount = self.wyccContent(tid, pg, filter, extend, vdata)
elif 'bili' in tid:
vdata, pagecount = self.biliContent(tid, pg, filter, extend, vdata)
elif 'huya' in tid:
vdata, pagecount = self.huyaContent(tid, pg, filter, extend, vdata)
elif 'douyu' in tid:
vdata, pagecount = self.douyuContent(tid, pg, filter, extend, vdata)
result['list'] = vdata
result['pagecount'] = pagecount
return result
def wyccContent(self, tid, pg, filter, extend, vdata):
params = {
'format': 'json',
'start': (int(pg) - 1) * 20,
'size': '20',
}
response = self.fetch(f'{self.hosts[tid]}/api/category/live/', params=params, headers=self.headers[0]).json()
for i in response['lives']:
if i.get('cuteid'):
bvdata = self.buildvod(
vod_id=f"{tid}@@{i['cuteid']}",
vod_name=i.get('title'),
vod_pic=i.get('cover'),
vod_remarks=i.get('nickname'),
style={"type": "rect", "ratio": 1.33}
)
vdata.append(bvdata)
return vdata, 9999
def biliContent(self, tid, pg, filter, extend, vdata):
"""B站分类内容 - 使用WBI签名绕过风控 [^30^][^90^]"""
try:
# 分类列表 - 显示子分类
if extend.get('cate') and pg == '1' and 'click' not in tid:
# 从已保存的分类数据中找到对应分类的子分类
if hasattr(self, 'bili_areas'):
for area in self.bili_areas:
if str(area['id']) == extend['cate']:
for sub_area in area.get('list', []):
v = self.buildvod(
vod_id=f"click_{tid}@@{extend['cate']}@@{sub_area['id']}",
vod_name=sub_area.get('name'),
vod_pic=sub_area.get('pic'),
vod_tag=1,
style={"type": "oval", "ratio": 1}
)
vdata.append(v)
return vdata, 1
# 如果没有找到子分类,直接返回空,让用户进入房间列表
return vdata, 1
# 房间列表 - 使用getList接口并添加WBI签名 [^30^]
if 'click' in tid:
# 子分类房间
ids = tid.split('_')[1].split('@@')
tid = ids[0]
parent_area_id = ids[1]
area_id = ids[2]
else:
# 默认使用分类ID作为parent_area_idarea_id为0表示该分类下所有
parent_area_id = extend.get('cate', '2') # 默认网游
area_id = 0
# 构建请求参数并添加WBI签名 [^30^]
params = {
'parent_area_id': parent_area_id,
'area_id': area_id,
'page': pg,
'platform': 'web',
'sort_type': 'online' # 按热度排序
}
signed_params = self._enc_wbi(params)
# 调用getList接口
api_url = f'{self.hosts[tid][0]}/xlive/web-interface/v1/second/getList'
data = self.fetch(api_url, params=signed_params, headers=self.headers[0]).json()
# 如果WBI签名失败,尝试不带签名
if data.get('code') == -352:
print("WBI签名失败,尝试无签名请求...")
params = {
'parent_area_id': parent_area_id,
'area_id': area_id,
'page': pg,
'platform': 'web',
'sort_type': 'online'
}
data = self.fetch(api_url, params=params, headers=self.headers[0]).json()
if data.get('code') == 0:
room_list = data.get('data', {}).get('list', [])
for room in room_list:
if room.get('roomid'):
# 处理在线人数显示
online = room.get('online', 0)
if online > 10000:
online_str = f"{online / 10000:.1f}"
else:
online_str = str(online)
v = self.buildvod(
f"{tid}@@{room['roomid']}",
room.get('title', '未知标题'),
room.get('cover') or room.get('system_cover'),
f"{online_str}",
0,
room.get('uname', ''),
style={"type": "rect", "ratio": 1.33}
)
vdata.append(v)
# 检查是否有更多数据
has_more = data.get('data', {}).get('has_more', 0)
if not has_more:
pagecount = int(pg)
else:
pagecount = 9999
else:
print(f"B站API返回错误: {data.get('message', '未知错误')} (code: {data.get('code')})")
pagecount = 1
return vdata, pagecount
except Exception as e:
print(f"B站内容获取错误: {e}")
return vdata, 1
def huyaContent(self, tid, pg, filter, extend, vdata):
if extend.get('cate') and pg == '1' and 'click' not in tid:
id = extend.get('cate')
data = self.fetch(f'{self.referers[tid]}/liveconfig/game/bussLive?bussType={id}',
headers=self.headers[1]).json()
for i in data['data']:
v = self.buildvod(
vod_id=f"click_{tid}@@{int(i['gid'])}",
vod_name=i.get('gameFullName'),
vod_pic=f'https://huyaimg.msstatic.com/cdnimage/game/{int(i["gid"])}-MS.jpg',
vod_tag=1,
style={"type": "oval", "ratio": 1}
)
vdata.append(v)
return vdata, 1
else:
gid = ''
if 'click' in tid:
ids = tid.split('_')[1].split('@@')
tid = ids[0]
gid = f'&gameId={ids[1]}'
data = self.fetch(f'{self.hosts[tid][0]}/cache.php?m=LiveList&do=getLiveListByPage&tagAll=0{gid}&page={pg}',
headers=self.headers[1]).json()
for i in data['data']['datas']:
if i.get('profileRoom'):
v = self.buildvod(
f"{tid}@@{i['profileRoom']}",
i.get('introduction'),
i.get('screenshot'),
str(int(i.get('totalCount', '1')) / 10000) + '',
0,
i.get('nick'),
style={"type": "rect", "ratio": 1.33}
)
vdata.append(v)
return vdata, 9999
def douyuContent(self, tid, pg, filter, extend, vdata):
if extend.get('cate') and pg == '1' and 'click' not in tid:
for i in self.dyufdata['data']['cate2Info']:
if str(i['cate1Id']) == extend['cate']:
v = self.buildvod(
vod_id=f"click_{tid}@@{i['cate2Id']}",
vod_name=i.get('cate2Name'),
vod_pic=i.get('icon'),
vod_remarks=i.get('count'),
vod_tag=1,
style={"type": "oval", "ratio": 1}
)
vdata.append(v)
return vdata, 1
else:
path = f'/japi/weblist/apinc/allpage/6/{pg}'
if 'click' in tid:
ids = tid.split('_')[1].split('@@')
tid = ids[0]
path = f'/gapi/rkc/directory/mixList/2_{ids[1]}/{pg}'
url = f'{self.hosts[tid]}{path}'
data = self.fetch(url, headers=self.headers[1]).json()
for i in data['data']['rl']:
v = self.buildvod(
vod_id=f"{tid}@@{i['rid']}",
vod_name=i.get('rn'),
vod_pic=i.get('rs16'),
vod_year=str(int(i.get('ol', 1)) / 10000) + '',
vod_remarks=i.get('nn'),
style={"type": "rect", "ratio": 1.33}
)
vdata.append(v)
return vdata, 9999
def detailContent(self, ids):
ids = ids[0].split('@@')
if ids[0] == 'wangyi':
vod = self.wyccDetail(ids)
elif ids[0] == 'bili':
vod = self.biliDetail(ids)
elif ids[0] == 'huya':
vod = self.huyaDetail(ids)
elif ids[0] == 'douyu':
vod = self.douyuDetail(ids)
return {'list': [vod]}
def wyccDetail(self, ids):
try:
vdata = self.getpq(f'{self.hosts[ids[0]]}/{ids[1]}', self.headers[0])('script').eq(-1).text()
def get_quality_name(vbr):
if vbr <= 600:
return "标清"
elif vbr <= 1000:
return "高清"
elif vbr <= 2000:
return "超清"
else:
return "蓝光"
data = json.loads(vdata)['props']['pageProps']['roomInfoInitData']
name = data['live'].get('title', ids[0])
vod = self.buildvod(vod_name=data.get('keywords_suffix'), vod_remarks=data['live'].get('title'),
vod_content=data.get('description_suffix'))
resolution_data = data['live']['quickplay']['resolution']
all_streams = {}
sorted_qualities = sorted(resolution_data.items(),
key=lambda x: x[1]['vbr'],
reverse=True)
for quality, data in sorted_qualities:
vbr = data['vbr']
quality_name = get_quality_name(vbr)
for cdn_name, url in data['cdn'].items():
if cdn_name not in all_streams and type(url) == str and url.startswith('http'):
all_streams[cdn_name] = []
if isinstance(url, str) and url.startswith('http'):
all_streams[cdn_name].extend([quality_name, url])
plists = []
names = []
for i, (cdn_name, stream_list) in enumerate(all_streams.items(), 1):
names.append(f'线路{i}')
pstr = f"{name}${ids[0]}@@{self.e64(json.dumps(stream_list))}"
plists.append(pstr)
vod['vod_play_from'] = "$$$".join(names)
vod['vod_play_url'] = "$$$".join(plists)
return vod
except Exception as e:
return self.handle_exception(e)
def biliDetail(self, ids):
"""
B站直播详情 - 使用playUrl接口获取多清晰度
"""
try:
room_id = ids[1]
# 获取房间信息
info_res = self.fetch(
f'{self.hosts["bili"][0]}/room/v1/Room/get_info?room_id={room_id}',
headers=self.headers[0]
).json()
if info_res.get('code') != 0:
return self.handle_exception(Exception("获取房间信息失败"))
room_info = info_res['data']
title = room_info.get('title', 'B站直播')
vod = self.buildvod(
vod_name=title,
type_name=f"{room_info.get('parent_area_name', '')}/{room_info.get('area_name', '')}",
vod_director=room_info.get('uname', ''),
vod_remarks=f"在线{room_info.get('online', 0)}"
)
# 获取播放地址信息
play_res = self.fetch(
f'{self.hosts["bili"][0]}/room/v1/Room/playUrl?cid={room_id}&qn=10000&platform=web',
headers={
**self.headers[0],
'Referer': 'https://live.bilibili.com/',
'Origin': 'https://live.bilibili.com'
}
).json()
if play_res.get('code') != 0:
return self.handle_exception(Exception("获取播放地址失败"))
play_data = play_res['data']
accept_quality = play_data.get('accept_quality', ['10000', '400', '250', '150'])
quality_desc = {item['qn']: item['desc'] for item in play_data.get('quality_description', [])}
# 构建清晰度列表
qualities = []
for qn in sorted([int(q) for q in accept_quality], reverse=True):
desc = quality_desc.get(qn, f'清晰度{qn}')
qualities.append(f"{desc}$bili@@{room_id}@@{qn}")
vod['vod_play_from'] = 'B站直播'
vod['vod_play_url'] = '#'.join(qualities)
return vod
except Exception as e:
print(f"B站详情错误: {e}")
return self.handle_exception(e)
def huyaDetail(self, ids):
"""
虎牙播放详情 - 参考最新三合一.js重构
支持多线路多清晰度选择
核心算法:通过房间信息API获取uid、streamName和rateArray,为每个清晰度生成签名URL
清晰度说明:
- 蓝光8M/6M/4M/10M = 8000/6000/4000/10000 kbps = 1080P+
- 蓝光 = 3000 kbps = 1080P
- 超清 = 2000 kbps = 1080P (官方标准)
- 高清 = 1200 kbps = 720P
- 标清/流畅 = 500-800 kbps = 480P/540P
"""
try:
room_id = ids[1]
# 1. 获取房间信息
api_url = f'{self.hosts[ids[0]][1]}/cache.php?m=Live&do=profileRoom&roomid={room_id}'
res = self.fetch(api_url, headers=self.headers[0])
if res.status_code != 200:
return self.handle_exception(Exception(f"API请求失败: {res.status_code}"))
data = res.json()
if not data or not data.get('data'):
return self.handle_exception(Exception("房间数据为空"))
room_data = data['data']
# 2. 提取关键信息
uid = room_data.get('profileInfo', {}).get('uid')
stream_info = room_data.get('stream', {})
live_data = room_data.get('liveData', {})
if not uid:
return self.handle_exception(Exception("缺少uid"))
# 3. 获取streamName和码率信息
base_stream_list = stream_info.get('baseSteamInfoList', [])
if not base_stream_list:
return self.handle_exception(Exception("无直播流信息"))
# 获取第一个CDN的streamName作为基准
base_stream = base_stream_list[0]
stream_name = base_stream.get('sStreamName')
if not stream_name:
return self.handle_exception(Exception("无法获取streamName"))
# 4. 构建VOD对象
vod = self.buildvod(
vod_name=live_data.get('introduction', '虎牙直播'),
type_name=live_data.get('gameFullName', ''),
vod_director=live_data.get('nick', ''),
vod_remarks=live_data.get('contentIntro', ''),
)
# 5. 获取所有CDN线路
cdn_list = []
for stream in base_stream_list:
cdn_type = stream.get('sCdnType', 'AL')
flv_url = stream.get('sFlvUrl', '')
hls_url = stream.get('sHlsUrl', '')
stream_name_cdn = stream.get('sStreamName', stream_name)
if flv_url:
cdn_list.append({
'cdn': cdn_type,
'flv_base': flv_url,
'hls_base': hls_url,
'stream_name': stream_name_cdn,
'priority': stream.get('iWebPriorityRate', 0)
})
# 按优先级排序
cdn_list.sort(key=lambda x: x['priority'], reverse=True)
# 6. 获取清晰度列表 (rateArray)
rate_array = stream_info.get('rateArray', [])
# 如果没有rateArray,尝试从vMultiStreamInfo获取
if not rate_array and 'vMultiStreamInfo' in room_data:
rate_array = room_data['vMultiStreamInfo']
# 如果仍然没有,使用默认清晰度(按虎牙官方标准)
if not rate_array:
rate_array = [
{'sDisplayName': '蓝光4M', 'iBitRate': 4000},
{'sDisplayName': '蓝光', 'iBitRate': 3000},
{'sDisplayName': '超清', 'iBitRate': 2000}, # 2000kbps = 1080P
{'sDisplayName': '高清', 'iBitRate': 1200}, # 1200kbps = 720P
{'sDisplayName': '流畅', 'iBitRate': 500}
]
# 过滤和排序清晰度
# 虎牙的rateArray中,iBitRate就是码率值,sDisplayName是显示名称
# 需要确保:超清=2000kbps(1080P),高清=1200kbps(720P)
filtered_rates = []
seen_bitrates = set()
for rate in rate_array:
bit_rate = rate.get('iBitRate', 0)
name = rate.get('sDisplayName', '')
# 跳过重复的码率
if bit_rate in seen_bitrates:
continue
# 修正清晰度名称,确保符合虎牙标准
# 2000kbps应该是超清(1080P),不是高清
if bit_rate == 2000 and ('高清' in name or '720' in name):
name = '超清' # 强制修正为超清
elif bit_rate == 1200 and ('标清' in name or '480' in name):
name = '高清' # 1200kbps对应高清
elif bit_rate == 2000 and name == '原画':
name = '超清' # 修正原画为超清
seen_bitrates.add(bit_rate)
filtered_rates.append({
'sDisplayName': name,
'iBitRate': bit_rate
})
# 按码率从高到低排序
sorted_rates = sorted(filtered_rates, key=lambda x: x['iBitRate'], reverse=True)
# 7. 为每个CDN生成各清晰度的播放URL
play_lines = []
line_names = []
for cdn_idx, cdn in enumerate(cdn_list[:3]): # 最多取3个CDN
cdn_name = cdn['cdn']
line_names.append(f"线路{cdn_idx + 1}({cdn_name})")
qualities = []
for rate in sorted_rates:
quality_name = rate['sDisplayName']
bit_rate = rate['iBitRate']
# 生成该清晰度的URL
quality_url = self._generate_huya_play_url(
cdn, uid, stream_name, bit_rate
)
qualities.extend([quality_name, quality_url])
# 编码该线路的所有清晰度
encoded_qualities = self.e64(json.dumps(qualities))
play_lines.append(f"{live_data.get('introduction', '直播')}${ids[0]}@@{encoded_qualities}")
# 8. 构建播放数据
vod['vod_play_from'] = "$$$".join(line_names)
vod['vod_play_url'] = "$$$".join(play_lines)
return vod
except Exception as e:
return self.handle_exception(e)
def _generate_huya_play_url(self, cdn, uid, stream_name, bit_rate):
"""
生成虎牙播放URL,参考最新三合一.js算法
关键:ratio参数必须正确设置为iBitRate值(如2000、4000等)
"""
# 基础URL构建
flv_base = cdn['flv_base']
stream = cdn['stream_name']
# 生成时间戳和签名参数
timestamp = int(time.time())
seqid = f"{uid}{timestamp}"
ss = hashlib.md5(f"{seqid}|huya_adr|102".encode()).hexdigest()
ws_time = hex(timestamp + 21600)[2:] # 16进制,有效期6小时
# 计算wsSecret
ws_secret = hashlib.md5(
f"DWq8BcJ3h6DJt6TY_{uid}_{stream_name}_{ss}_{ws_time}".encode()
).hexdigest()
# 构建基础URL
base_url = f"{flv_base}/{stream}.flv"
# 关键修复:ratio参数直接使用iBitRate值
# 超清=2000,高清=1200,蓝光=3000/4000/6000/8000
if bit_rate > 0:
ratio_param = f"ratio={bit_rate}"
else:
# 原画/0码率时,使用默认2000或从URL推断
ratio_param = "ratio=2000"
# 构建完整URL
play_url = (
f"{base_url}?{ratio_param}&wsSecret={ws_secret}&wsTime={ws_time}"
f"&ctype=huya_adr&seqid={seqid}&uid={uid}"
f"&fs=bgct&ver=1&t=102"
)
return play_url
def douyuDetail(self, ids):
"""
斗鱼播放详情 - 参考最新三合一.js重构
核心算法:设备ID生成 -> 获取加密密钥 -> 计算签名 -> 获取播放地址
修复:切换分辨率只能播放1秒的问题
方案:存储房间号和码率信息,在playerContent中实时获取对应码率的URL
"""
try:
channel = ids[1]
headers = self.gethr(0, zr=f'{self.hosts[ids[0]]}/{channel}')
# 1. 初始化会话和设备ID (参考JS中的initialize和setupDeviceId)
session = {}
# 请求首页获取Cookie
try:
home_res = self.fetch(f'{self.hosts[ids[0]]}/{channel}', headers=headers)
if home_res.headers.get('Set-Cookie'):
cookie_str = home_res.headers.get('Set-Cookie')
# 解析dy_did
did_match = re.search(r'dy_did=([a-f0-9]{32})', cookie_str)
if did_match:
device_id = did_match.group(1)
else:
device_id = self._generate_random_hex(32)
else:
device_id = self._generate_random_hex(32)
except:
device_id = self._generate_random_hex(32)
session['dy_did'] = device_id
session['mantine-color-scheme-value'] = 'light'
# 2. 获取房间基本信息
betard_res = self.fetch(f'{self.hosts[ids[0]]}/betard/{channel}', headers=headers).json()
if not betard_res or not betard_res.get('room'):
return self.handle_exception(Exception("获取房间信息失败"))
room_info = betard_res['room']
vname = room_info.get('room_name', '斗鱼直播')
vod = self.buildvod(
vod_name=vname,
vod_remarks=room_info.get('second_lvl_name', ''),
vod_director=room_info.get('nickname', ''),
)
# 3. 获取安全密钥 (参考JS中的getSecurityKey)
sec_url = f"{self.hosts[ids[0]]}/wgapi/livenc/liveweb/websec/getEncryption?did={device_id}"
sec_res = self.fetch(sec_url, headers=headers).json()
if not sec_res or sec_res.get('error') != 0:
return self.handle_exception(Exception("获取加密密钥失败"))
security_data = sec_res['data']
secret_key = security_data.get('key')
random_str = security_data.get('rand_str')
enc_time = security_data.get('enc_time', 1)
enc_data = security_data.get('enc_data')
# 4. 计算签名 (参考JS中的computeSignature)
current_time = int(time.time())
# 迭代计算MD5
current = random_str
for _ in range(enc_time):
current = hashlib.md5(f"{current}{secret_key}".encode()).hexdigest()
signature = hashlib.md5(f"{current}{secret_key}{channel}{current_time}".encode()).hexdigest()
# 5. 请求播放地址 (参考JS中的requestStreamData)
play_payload = {
'enc_data': enc_data,
'tt': str(current_time),
'did': device_id,
'auth': signature,
'cdn': '',
'rate': '',
'hevc': '0',
'fa': '0',
'ive': '0'
}
play_api = f"{self.hosts[ids[0]]}/lapi/live/getH5PlayV1/{channel}"
# 构建请求头带Cookie
play_headers = headers.copy()
cookie_str = '; '.join([f"{k}={v}" for k, v in session.items()])
play_headers['Cookie'] = cookie_str
play_headers['Content-Type'] = 'application/x-www-form-urlencoded'
play_res = requests.post(play_api, data=play_payload, headers=play_headers, timeout=10).json()
if not play_res or play_res.get('error') != 0:
# 尝试旧版API
play_res = self._try_legacy_douyu_api(channel, device_id, signature, current_time, play_headers)
if not play_res:
return self.handle_exception(Exception("获取播放地址失败"))
stream_info = play_res.get('data', {})
# 6. 检查并更新设备ID (参考JS中的checkAndUpdateDeviceId)
rtmp_live = stream_info.get('rtmp_live', '')
if rtmp_live:
did_match = re.search(r'did=([a-f0-9]{32})', rtmp_live)
if did_match and did_match.group(1) != device_id:
device_id = did_match.group(1)
session['dy_did'] = device_id
# 重新请求
play_payload['did'] = device_id
play_res = requests.post(play_api, data=play_payload, headers=play_headers, timeout=10).json()
if play_res and play_res.get('error') == 0:
stream_info = play_res.get('data', {})
# 7. 提取播放URL和多码率信息
stream_url = None
if stream_info.get('rtmp_url') and stream_info.get('rtmp_live'):
stream_url = f"{stream_info['rtmp_url']}/{stream_info['rtmp_live']}"
elif stream_info.get('hls_url'):
stream_url = stream_info['hls_url']
if not stream_url:
return self.handle_exception(Exception("无法获取播放地址"))
# 8. 构建多码率选项
multirates = stream_info.get('multirates', [])
# 关键修复:存储房间号和码率信息,而不是直接存储URL
# 这样在切换清晰度时可以重新获取对应码率的签名URL
qualities = []
if multirates:
# 按码率排序
sorted_rates = sorted(multirates, key=lambda x: x.get('bit', 0), reverse=True)
for rate in sorted_rates:
bit_rate = rate.get('rate', -1)
name = rate.get('name', f"{bit_rate}P")
# 存储格式:码率值,用于playerContent中重新获取URL
# 使用特殊标记#来区分这是码率值而不是URL
qualities.extend([name, f"#{bit_rate}"])
else:
# 只有原画
qualities = ['原画', '#-1']
# 同时存储房间号和设备信息,用于重新获取URL
# 格式:房间号|设备ID|签名信息(base64编码)
session_info = {
'channel': channel,
'device_id': device_id,
'secret_key': secret_key,
'random_str': random_str,
'enc_time': enc_time,
'enc_data': enc_data
}
encoded_session = self.e64(json.dumps(session_info))
# 9. 构建播放数据
# vod_play_url格式:房间名$平台@@base64(清晰度列表)@@base64(会话信息)
encoded_qualities = self.e64(json.dumps(qualities))
vod['vod_play_from'] = '斗鱼直播'
vod['vod_play_url'] = f"{vname}${ids[0]}@@{encoded_qualities}@@{encoded_session}"
return vod
except Exception as e:
return self.handle_exception(e)
def _generate_random_hex(self, length):
"""生成随机十六进制字符串"""
hex_chars = '0123456789abcdef'
return ''.join(random.choice(hex_chars) for _ in range(length))
def _try_legacy_douyu_api(self, channel, device_id, signature, timestamp, headers):
"""尝试使用旧版API获取播放地址"""
try:
legacy_payload = {
'did': device_id,
'tt': str(timestamp),
'sign': signature,
'cdn': '',
'rate': '-1',
'ver': 'Douyu_223061205',
'iar': '1',
'ive': '1',
'hevc': '0',
'fa': '0'
}
legacy_api = f"https://www.douyu.com/lapi/live/getH5Play/{channel}"
res = requests.post(legacy_api, data=legacy_payload, headers=headers, timeout=10)
return res.json() if res.status_code == 200 else None
except:
return None
def _get_douyu_play_url(self, channel, device_id, secret_key, random_str, enc_time, enc_data, rate):
"""
获取斗鱼指定码率的播放URL(带签名)
用于切换清晰度时重新获取URL
"""
try:
current_time = int(time.time())
# 重新计算签名
current = random_str
for _ in range(enc_time):
current = hashlib.md5(f"{current}{secret_key}".encode()).hexdigest()
signature = hashlib.md5(f"{current}{secret_key}{channel}{current_time}".encode()).hexdigest()
# 构建请求
play_payload = {
'enc_data': enc_data,
'tt': str(current_time),
'did': device_id,
'auth': signature,
'cdn': '',
'rate': str(rate) if rate > 0 else '',
'hevc': '0',
'fa': '0',
'ive': '0'
}
play_api = f"https://www.douyu.com/lapi/live/getH5PlayV1/{channel}"
headers = {
'User-Agent': self.headers[0]['User-Agent'],
'Referer': f'https://www.douyu.com/{channel}',
'Origin': 'https://www.douyu.com',
'Cookie': f'dy_did={device_id}; mantine-color-scheme-value=light',
'Content-Type': 'application/x-www-form-urlencoded'
}
play_res = requests.post(play_api, data=play_payload, headers=headers, timeout=10).json()
if not play_res or play_res.get('error') != 0:
# 尝试旧版API
return self._get_douyu_play_url_legacy(channel, device_id, signature, current_time, rate)
stream_info = play_res.get('data', {})
# 检查设备ID是否匹配
if stream_info.get('rtmp_live'):
did_match = re.search(r'did=([a-f0-9]{32})', stream_info['rtmp_live'])
if did_match and did_match.group(1) != device_id:
# 设备ID不匹配,使用新设备ID重新获取
return self._get_douyu_play_url(channel, did_match.group(1), secret_key, random_str, enc_time, enc_data, rate)
if stream_info.get('rtmp_url') and stream_info.get('rtmp_live'):
return f"{stream_info['rtmp_url']}/{stream_info['rtmp_live']}"
elif stream_info.get('hls_url'):
return stream_info['hls_url']
return None
except Exception as e:
print(f"获取斗鱼播放URL失败: {e}")
return None
def _get_douyu_play_url_legacy(self, channel, device_id, signature, timestamp, rate):
"""使用旧版API获取斗鱼播放URL"""
try:
legacy_payload = {
'did': device_id,
'tt': str(timestamp),
'sign': signature,
'cdn': '',
'rate': str(rate) if rate > 0 else '-1',
'ver': 'Douyu_223061205',
'iar': '1',
'ive': '1',
'hevc': '0',
'fa': '0'
}
legacy_api = f"https://www.douyu.com/lapi/live/getH5Play/{channel}"
headers = {
'User-Agent': self.headers[0]['User-Agent'],
'Referer': f'https://www.douyu.com/{channel}',
'Cookie': f'dy_did={device_id}',
'Content-Type': 'application/x-www-form-urlencoded'
}
res = requests.post(legacy_api, data=legacy_payload, headers=headers, timeout=10)
if res.status_code == 200:
data = res.json()
if data.get('error') == 0:
stream_info = data.get('data', {})
if stream_info.get('rtmp_url') and stream_info.get('rtmp_live'):
return f"{stream_info['rtmp_url']}/{stream_info['rtmp_live']}"
return None
except:
return None
def searchContent(self, key, quick, pg="1"):
pass
def playerContent(self, flag, id, vipFlags):
try:
ids = id.split('@@')
p = 1
if ids[0] in ['wangyi']:
p, url = 0, json.loads(self.d64(ids[1]))
elif ids[0] == 'bili':
p, url = self.biliplay(ids)
elif ids[0] == 'huya':
p, url = self.huyaplay(ids)
elif ids[0] == 'douyu':
p, url = self.douyuplay(ids)
return {'parse': p, 'url': url, 'header': self.playheaders[ids[0]]}
except Exception as e:
return {'parse': 1, 'url': self.excepturl, 'header': self.headers[0]}
def biliplay(self, ids):
"""
B站播放解析 - 使用playUrl接口获取指定清晰度直播流
ids: [平台, 房间号, 清晰度qn]
支持多线路返回
"""
try:
room_id = ids[1]
qn = ids[2] if len(ids) > 2 else '10000'
# 使用playUrl接口获取直播流
play_url = f'{self.hosts["bili"][0]}/room/v1/Room/playUrl?cid={room_id}&qn={qn}&platform=web'
data = self.fetch(play_url, headers={
**self.headers[0],
'Referer': 'https://live.bilibili.com/',
'Origin': 'https://live.bilibili.com'
}).json()
if data.get('code') != 0:
return 1, self.excepturl
play_data = data['data']
durl_list = play_data.get('durl', [])
if not durl_list:
return 1, self.excepturl
# 构建多线路结果 [线路1, URL1, 线路2, URL2, ...]
urls = []
for idx, item in enumerate(durl_list, 1):
url = item.get('url')
if url:
urls.extend([f'线路{idx}', url])
# 如果只有一条线路,直接返回URL
if len(urls) == 2:
return 0, urls[1] # 直接返回URL字符串
return 0, urls
except Exception as e:
print(f"B站播放错误: {e}")
return 1, self.excepturl
def huyaplay(self, ids):
"""
虎牙播放解析 - 返回所有清晰度选项供用户选择
ids[1] 格式: base64编码的 [清晰度名称1, URL1, 清晰度名称2, URL2, ...]
"""
try:
# ids[1] 是编码后的播放地址列表 [名称1, URL1, 名称2, URL2, ...]
decoded = json.loads(self.d64(ids[1]))
# decoded 是一个列表,奇数索引是名称,偶数索引是URL
return 0, decoded
except Exception as e:
print(f"虎牙播放解析错误: {e}")
return 1, self.excepturl
def douyuplay(self, ids):
"""
斗鱼播放解析 - 实时获取对应码率的播放URL
ids格式: [平台, base64(清晰度列表), base64(会话信息)]
清晰度列表: [名称1, #码率1, 名称2, #码率2, ...]
#表示这是码率值,需要重新获取URL
"""
try:
if len(ids) < 3:
# 兼容旧格式
decoded = json.loads(self.d64(ids[1]))
return 0, decoded
# 解析清晰度列表和会话信息
qualities = json.loads(self.d64(ids[1]))
session_info = json.loads(self.d64(ids[2]))
channel = session_info['channel']
device_id = session_info['device_id']
secret_key = session_info['secret_key']
random_str = session_info['random_str']
enc_time = session_info['enc_time']
enc_data = session_info['enc_data']
# 为每个清晰度实时获取播放URL
result = []
for i in range(0, len(qualities), 2):
name = qualities[i]
rate_marker = qualities[i + 1]
# 解析码率值(去掉#前缀)
if rate_marker.startswith('#'):
rate = int(rate_marker[1:])
else:
rate = -1
# 实时获取对应码率的URL
play_url = self._get_douyu_play_url(
channel, device_id, secret_key, random_str,
enc_time, enc_data, rate
)
if play_url:
result.extend([name, play_url])
if not result:
return 1, self.excepturl
return 0, result
except Exception as e:
print(f"斗鱼播放解析错误: {e}")
return 1, self.excepturl
def localProxy(self, param):
pass
def e64(self, text):
try:
text_bytes = text.encode('utf-8')
encoded_bytes = b64encode(text_bytes)
return encoded_bytes.decode('utf-8')
except Exception as e:
print(f"Base64编码错误: {str(e)}")
return ""
def d64(self, encoded_text):
try:
encoded_bytes = encoded_text.encode('utf-8')
decoded_bytes = b64decode(encoded_bytes)
return decoded_bytes.decode('utf-8')
except Exception as e:
print(f"Base64解码错误: {str(e)}")
return ""
def josn_to_params(self, params, skip_empty=False):
query = []
for k, v in params.items():
if skip_empty and not v:
continue
query.append(f"{k}={v}")
return "&".join(query)
def params_to_json(self, query_string):
parsed_data = parse_qs(query_string)
result = {key: value[0] for key, value in parsed_data.items()}
return result
def buildvod(self, vod_id='', vod_name='', vod_pic='', vod_year='', vod_tag='', vod_remarks='', style='',
type_name='', vod_area='', vod_actor='', vod_director='',
vod_content='', vod_play_from='', vod_play_url=''):
vod = {
'vod_id': vod_id,
'vod_name': vod_name,
'vod_pic': vod_pic,
'vod_year': vod_year,
'vod_tag': 'folder' if vod_tag else '',
'vod_remarks': vod_remarks,
'style': style,
'type_name': type_name,
'vod_area': vod_area,
'vod_actor': vod_actor,
'vod_director': vod_director,
'vod_content': vod_content,
'vod_play_from': vod_play_from,
'vod_play_url': vod_play_url
}
vod = {key: value for key, value in vod.items() if value}
return vod
def getpq(self, url, headers=None, cookies=None):
data = self.fetch(url, headers=headers, cookies=cookies).text
try:
return pq(data)
except Exception as e:
print(f"解析页面错误: {str(e)}")
return pq(data.encode('utf-8'))
def gethr(self, index, rf='', zr=''):
headers = self.headers[index]
if zr:
headers['referer'] = zr
else:
headers['referer'] = f"{self.referers[rf]}/"
return headers
def handle_exception(self, e):
print(f"报错: {str(e)}")
return {'vod_play_from': '哎呀翻车啦', 'vod_play_url': f'翻车啦${self.excepturl}'}
+191 -1880
View File
@@ -1,1881 +1,192 @@
{
"spider": "./spider.jar",
"wallpaper": "http://127.0.0.1:9978/proxy?do=wallpaper",
"logo": "http://127.0.0.1:9978/file/TVBox/logo.png",
"sites": [
{
"key": "豆瓣",
"name": "豆瓣|首页",
"type": 3,
"api": "csp_Douban",
"searchable": 0
},
{
"key": "配置中心",
"name": "配置|中心",
"type": 3,
"api": "csp_Config",
"searchable": 0,
"changeable": 0,
"indexs": 0,
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "本地",
"name": "本地|视频",
"type": 3,
"api": "csp_LocalFile"
},
{
"key": "预告",
"name": "新片|预告",
"type": 3,
"api": "csp_YGP",
"searchable": 0
},
{
"key": "热播影视",
"name": "热播|APP",
"type": 3,
"api": "csp_AppRJ",
"searchable": 1,
"quickSearch": 1,
"filterable": 0,
"ext": {
"url": "http://v.rbotv.cn"
}
},
{
"key": "三秋影视",
"name": "三秋|APP",
"type": 3,
"api": "csp_App3Q"
},
{
"key": "韩圈",
"name": "韩圈|APP",
"type": 3,
"api": "csp_Hxq",
"ext": "http://www.小不点.com/api/2026/fishhxq.php"
},
{
"key": "无极99",
"name": "无极丨APP",
"type": 3,
"api": "csp_App99",
"ext": {
"host": "http://111.170.140.70:19987/app/bn",
"LoginPath": "/app/log",
"version": "",
"appkey": "c403317c2a2946659b0bcbabdd5de43a",
"versionName": "1.0.1",
"name": "无极影视",
"package": "com.wujiys.app",
"buildNumber": "2001",
"buildSignature": "A0859BDC35AD3E81D4051E2A4678C77C62773EDB3423DDF1DEFF94CB331D398E"
}
},
{
"key": "听心99",
"name": "听心|APP",
"type": 3,
"api": "csp_App99",
"ext": {
"host": "https://api.12321app.com/api",
"LoginPath": "/app/log",
"appkey": "a0a18659a9977a47e53442cd084b536c",
"versionName": "2.8.1",
"name": "听心视频",
"package": "com.iksp.adsys.jjsp",
"buildNumber": "2001",
"buildSignature": "03DD38CE4C3D62D0F0DEFACC06768D14EB382C7BD77A05B2EBF4D66E154A0D47"
}
},
{
"key": "橙子99",
"name": "橙子丨APP",
"type": 3,
"api": "csp_App99",
"ext": {
"host": "http://113.31.180.218:19987/app/bn",
"LoginPath": "/app/log",
"appkey": "6e8f3764a0644f3686ab5cdd57bcdf48",
"versionName": "4.3.1",
"name": "小橙子",
"package": "com.xchengzix.app",
"buildNumber": "2001",
"buildSignature": "99DA983CF878CEC016616175464A91A94775E20A489F07F76FCDEA1A0F2B6B45"
}
},
{
"key": "追番99",
"name": "追番|APP",
"type": 3,
"api": "csp_App99",
"ext": {
"host": "https://api.hboqy.cn.hboqy.cn/api",
"LoginPath": "/app/log",
"appkey": "a0a18659a9977a47e53442cd084b536c",
"versionName": "6.1.7",
"name": "追番达人",
"package": "com.android.packageinstaller",
"buildNumber": "2002",
"buildSignature": "A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC"
}
},
{
"key": "剧圈99",
"name": "剧圈丨APP",
"type": 3,
"api": "csp_App99",
"ext": {
"host": "http://124.221.3.182:19987/app/bn",
"appkey": "d1f0c269eab74d93821fffc9befdbbba",
"versionName": "1.2.0",
"name": "剧圈圈",
"package": "com.qingtangxiaozhuan.xyz",
"buildNumber": "2002",
"buildSignature": "054FA8DDA4319C6B6A9B954CA5777541C993F00B1B0BD4394F7EDE48184C4594"
}
},
{
"key": "双星99",
"name": "双星丨APP",
"type": 3,
"api": "csp_App99",
"ext": {
"host": "http://175.178.65.250:19987/app/bn",
"LoginPath": "/app/log",
"appkey": "f66f65db127e48449f073c2c6eb0f993",
"versionName": "6.4.5",
"name": "双子星动漫",
"package": "com.yingfu.mobile.android.pgsp",
"buildNumber": "2003",
"buildSignature": "054FA8DDA4319C6B6A9B954CA5777541C993F00B1B0BD4394F7EDE48184C4594"
}
},
{
"key": "顾我99",
"name": "顾我丨APP",
"type": 3,
"api": "csp_App99",
"ext": {
"host": "http://117.50.200.113:19987/app/bn",
"LoginPath": "/app/log",
"appkey": "040f9b1bc5e942569b5c3e63943306ab",
"versionName": "4.3.1",
"name": "顾我追剧",
"package": "com.guwozhuijux.app",
"buildNumber": "2001",
"buildSignature": "5AD4436C4730FFE26910C86278B80F3E661C317FFC3616F702D20A729262624A"
}
},
{
"key": "天堂",
"name": "天堂|APP",
"type": 3,
"api": "csp_AppDrama",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": {
"appName": "电影天堂",
"publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCduNEnfxGaLuQRk5ABzXHhPV43zi00sCHjLo8BYc+Wi6xXm2b4v0i28Sq4WlNCKhseft9fz8kO/qLr6/022o1RcuOU7e4GFL3U9WnNODwRBYSYWd+K8nqpI/tAUDmZEBGRWqjrc7x6aMl3A+xpnWkLbPCLsuhbuuUE3tv09oeOpwIDAQAB",
"dataKey": "D2KREWRIBVNAUJJYEDL4VFHOY2Q0PQ==",
"dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E",
"pkg": "com.dytiantang.one",
"host": "",
"site": "https://dyttandroid04-1372779881.cos.ap-shanghai.myqcloud.com/app_dyttandroid.txt",
"version": "3.0.0.7",
"decrypt": "0"
}
},
{
"key": "橘汁",
"name": "橘汁|APP",
"type": 3,
"api": "csp_AppDrama",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": {
"appName": "橘汁",
"publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCr8SzZhjYy+rsya1K09t8d2K50pWFoBkgUqMpKOiW+3IEVKd4eTdvg9RSOjQ82kypL6R9BnsmrS1V8s4PVDwjQbUtYhTPPC9Hz16qY7rpD6m0d2vr09/UpWQ5uOy9PR0QTrsioveZ+DIe9jc3C+zBCu/kZSY/R8stwJoiitki3gwIDAQAB",
"dataKey": "DGVQRUX5R1LWWDLHTGJSUKG1DJRVPQ==",
"dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E",
"pkg": "com.lxf.snzlcgtzxyx",
"host": "",
"site": "https://123-1349250429.cos.ap-shanghai.myqcloud.com/app.txt",
"version": "3.0.2.1",
"decrypt": "1"
}
},
{
"key": "华谊",
"name": "华谊|APP",
"type": 3,
"api": "csp_AppDrama",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": {
"appName": "华谊",
"publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp9Ek4wIlQAtwFnuBRlsFiow2tr+4UOciGeNKbY7nL74etUqUb6fvpOSOHhFEfaWlfwUpOB17x3JEL3No19nfjCeVYrYPjlJcgoqUWH/tfIfFAQWvtxBIBlKazkhw8d3ChysWmeWRikKqkBsVRY4oqNPuj4sjm6Zult0U4I4prRQIDAQAB",
"dataKey": "NDBYSZR1DMRRZ05NSUCWEJNIYWLBPT0=",
"dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E",
"pkg": "com.muyue.tool",
"host": "",
"site": "https://vip.123pan.cn/1851089669/oss/az5.txt",
"version": "1.0.0.4",
"decrypt": "1"
}
},
{
"key": "苹果",
"name": "苹果|APP",
"type": 3,
"api": "csp_AppDrama",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": {
"appName": "小苹果",
"publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCduNEnfxGaLuQRk5ABzXHhPV43zi00sCHjLo8BYc+Wi6xXm2b4v0i28Sq4WlNCKhseft9fz8kO/qLr6/022o1RcuOU7e4GFL3U9WnNODwRBYSYWd+K8nqpI/tAUDmZEBGRWqjrc7x6aMl3A+xpnWkLbPCLsuhbuuUE3tv09oeOpwIDAQAB",
"dataKey": "S0VNDTJHOFHHCNMRAW5IV2TOS2PBPQ==",
"dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E",
"pkg": "com.juechufsh.android.xpg1",
"host": "",
"site": "https://xpgandroid03-1372779881.cos.ap-beijing.myqcloud.com/app_xpg_android.txt",
"version": "1.0.0.3",
"decrypt": "0"
}
},
{
"key": "薯条",
"name": "薯条|APP",
"type": 3,
"api": "csp_AppDrama",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": {
"appName": "薯条影视",
"publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCduNEnfxGaLuQRk5ABzXHhPV43zi00sCHjLo8BYc+Wi6xXm2b4v0i28Sq4WlNCKhseft9fz8kO/qLr6/022o1RcuOU7e4GFL3U9WnNODwRBYSYWd+K8nqpI/tAUDmZEBGRWqjrc7x6aMl3A+xpnWkLbPCLsuhbuuUE3tv09oeOpwIDAQAB",
"dataKey": "A1VACZJWDKRZY1P3MFV0DDRAZ3F3PT0=",
"dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E",
"pkg": "com.st.standroid",
"host": "",
"site": "https://dyttandroid-1372779881.cos.ap-guangzhou.myqcloud.com/app_dyttandroid.txt",
"version": "5.0.0.1",
"decrypt": "0"
}
},
{
"key": "久久",
"name": "久久|APP",
"type": 3,
"api": "csp_AppYsV2",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "http://99cms.jj99.icu:8199/api.php/app/"
},
{
"key": "闪影",
"name": "闪影|APP",
"type": 3,
"api": "csp_AppYsV2",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "http://38.47.213.61:41271/mogai_api.php/v1.vod"
},
{
"key": "飞飞",
"name": "飞飞丨APP",
"type": 3,
"api": "csp_AppYsV2",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "https://qpcj.69mini.com/api.php/app/"
},
{
"key": "云播",
"name": "云播|APP",
"type": 3,
"api": "csp_AppFox",
"searchable": 1,
"changeable": 1,
"ext": {
"host": "http://app.hktvyb.cc"
}
},
{
"key": "首发",
"name": "首发|APP",
"type": 3,
"api": "csp_AppQi",
"searchable": 1,
"changeable": 1,
"ext": {
"site": "https://yun-1316442804.cos.ap-guangzhou.myqcloud.com/600.txt",
"dataKey": "FTgP4Gq8zPiqbt7M",
"dataIv": "FTgP4Gq8zPiqbt7M",
"init": "initV122",
"ua": "okhttp/3.10.0"
}
},
{
"key": "金牌",
"name": "金牌|APP",
"type": 3,
"api": "csp_AppQi",
"searchable": 1,
"changeable": 1,
"ext": {
"url": "https://qj4.catbb.xyz",
"dataKey": "eecbio48dsq13kkk",
"dataIv": "eecbio48dsq13kkk",
"search": "searchList4",
"init": "initV122",
"ua": "okhttp/3.10.0"
}
},
{
"key": "老鹰",
"name": "老鹰|APP",
"type": 3,
"api": "csp_AppQi",
"searchable": 1,
"changeable": 1,
"ext": {
"site": "https://maotouyinghubei.oss-cn-wuhan-lr.aliyuncs.com/maotouyinghb.txt",
"dataKey": "zxPtEUDGVllIUhDB",
"dataIv": "zxPtEUDGVllIUhDB",
"ua": "okhttp/3.10.0"
}
},
{
"key": "蓝鹰",
"name": "蓝鹰|APP",
"type": 3,
"api": "csp_AppQi",
"searchable": 1,
"changeable": 1,
"ext": {
"site": "https://xinlanyinghb.oss-cn-wuhan-lr.aliyuncs.com/xly.txt",
"dataKey": "ca94b06ca359d80e",
"dataIv": "ca94b06ca359d80e",
"init": "initV120",
"ua": "okhttp/3.10.0"
}
},
{
"key": "猎豹",
"name": "猎豹|APP",
"type": 3,
"api": "csp_AppGet",
"searchable": 1,
"changeable": 1,
"ext": {
"url": "https://444421.xyz",
"dataKey": "#getapp@TMD@2025",
"dataIv": "#getapp@TMD@2025"
}
},
{
"key": "王子",
"name": "王子|APP",
"type": 3,
"api": "csp_AppGet",
"searchable": 1,
"changeable": 1,
"ext": {
"url": "https://app.95112475.xyz",
"dataKey": "5a9w6x58dsq6z3a6",
"dataIv": "5a9w6x58dsq6z3a6"
}
},
{
"key": "秒看",
"name": "秒看|APP",
"type": 3,
"api": "csp_AppGet",
"searchable": 1,
"changeable": 1,
"ext": {
"site": "https://mk1080.top/get.txt",
"dataKey": "c60d88b2eep53za8",
"dataIv": "c60d88b2eep53za8",
"token": "4181e508e7a17657d6a6246e70b1b13553e5ae9d8d287dc47000fb2df638dffa"
}
},
{
"key": "茉莉",
"name": "茉莉|APP",
"type": 3,
"api": "csp_AppGet",
"searchable": 1,
"changeable": 1,
"ext": {
"site": "https://gitee.com/wmmoliill/wimg/raw/master/img/bk/9.txt",
"dataKey": "88689667dce61725",
"dataIv": "88689667dce61725"
}
},
{
"key": "灵虎",
"name": "灵虎|APP",
"type": 3,
"api": "csp_AppGet",
"searchable": 1,
"changeable": 1,
"ext": {
"site": "https://bind.315999.xyz/89.txt",
"dataKey": "#getapp@TMD@2025",
"dataIv": "#getapp@TMD@2025"
}
},
{
"key": "哔哩视频",
"name": "哔哩|视频",
"type": 3,
"api": "csp_BiliYS",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "rect",
"ratio": 1.433
},
"ext": {
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
}
},
{
"key": "三六零",
"name": "三六零|视频",
"type": 3,
"api": "csp_SP360"
},
{
"key": "玩偶",
"name": "玩偶|4K",
"type": 3,
"api": "csp_Wogg",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"https://www.wogg.net",
"https://wogg.xxooo.cf",
"https://woggpan.xxooo.cf"
]
},
"timeout": 60
},
{
"key": "快映",
"name": "快映|4K",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"http://38.76.197.172:12521"
]
},
"timeout": 60
},
{
"key": "木偶",
"name": "木偶|4K",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"https://123.666291.xyz",
"https://666.666291.xyz",
"https://www.muou.site",
"https://www.muou.asia"
]
},
"timeout": 60
},
{
"key": "蜡笔",
"name": "蜡笔|4K",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"http://www.xiaocgege.shop",
"http://xiaocge.fun",
"http://feimo.fun",
"http://xiaocgege.shop"
]
},
"timeout": 60
},
{
"key": "至臻",
"name": "至臻|4K",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"https://mihdr.top",
"https://www.miqk.cc",
"https://www.mihdr.top"
]
},
"timeout": 60
},
{
"key": "多多",
"name": "多多|4K",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"https://tv.yydsys.top",
"https://tv.yydsys.cc",
"https://tv.214521.xyz"
]
},
"timeout": 60
},
{
"key": "欧哥",
"name": "欧哥|4K",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"https://woog.nxog.eu.org",
"https://woog.nxog.fun",
"https://woog.nxog.eu.org",
"https://woog.430520.xyz"
]
},
"timeout": 60
},
{
"key": "二小",
"name": "二小|4K",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"https://www.2xiaopan.top",
"https://www.erxiaozhan.top",
"https://www.2xiaozhan.top"
]
},
"timeout": 60
},
{
"key": "虎斑",
"name": "虎斑|4K",
"type": 3,
"api": "csp_PanWebShare",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"changeable": 1,
"ext": {
"site": [
"http://38.76.197.172:16969"
]
},
"timeout": 60
},
{
"key": "夸父",
"name": "夸父|4K",
"type": 3,
"api": "csp_PanWebShareKF",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"style": {
"type": "list",
"ratio": 1.433
},
"ext": {
"site": [
"https://www.kfzys.net"
],
"cookie": "bbs_sid=p5mugcm9r147o1d3qpi0su1ucm; bbs_token=gDMAOehNUQetTJv9Lnet0J_2FGJmgdvnx90iTZqzU_2FnO0_3D"
},
"timeout": 60
},
{
"key": "盘它",
"name": "盘它|4K",
"type": 3,
"api": "csp_PanWebSharePT",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"style": {
"type": "list"
},
"timeout": 60
},
{
"key": "123",
"name": "1234K",
"type": 3,
"api": "csp_PanWebShare123",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"style": {
"type": "list",
"ratio": 1.433
},
"ext": {
"site": [
"https://123panfx.com",
"https://pan1.me"
]
},
"timeout": 60
},
{
"key": "指南",
"name": "指南|4K",
"type": 3,
"api": "csp_4KZhinan",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"timeout": 60
},
{
"key": "人人",
"name": "人人|4K",
"type": 3,
"api": "csp_RenRen",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"timeout": 60
},
{
"key": "即刻",
"name": "即刻|4K",
"type": 3,
"api": "csp_Jike",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"style": {
"type": "list"
},
"timeout": 60
},
{
"key": "双星",
"name": "双星|4K",
"type": 3,
"api": "csp_ShuangXing",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"style": {
"type": "list"
},
"timeout": 60
},
{
"key": "好看短剧",
"name": "好看|短剧",
"type": 3,
"api": "csp_HaokanDJ",
"searchable": 1,
"changeable": 1,
"quickSearch": 1,
"filterable": 1,
"genre": "shortdrama"
},
{
"key": "围观短剧",
"name": "围观|短剧",
"type": 3,
"api": "csp_WeiguanDJ",
"searchable": 1,
"changeable": 1,
"quickSearch": 1,
"filterable": 1,
"genre": "shortdrama"
},
{
"key": "星芽短剧",
"name": "星芽|短剧",
"type": 3,
"api": "./py/星芽短剧.py",
"searchable": 1,
"changeable": 1,
"quickSearch": 1,
"filterable": 1,
"genre": "shortdrama"
},
{
"key": "独播影视",
"name": "独播|影视",
"type": 3,
"api": "csp_Duboku"
},
{
"key": "厂长影视",
"name": "厂长|影视",
"type": 3,
"api": "csp_Czsapp",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "https://cz01.vip"
},
{
"key": "金牌影视",
"name": "金牌|影视",
"type": 3,
"api": "csp_Jpys",
"ext": "https://y2s52n7.com,https://m.hkybqufgh.com,https://m.sizhengxt.com,https://m.9zhoukj.com,https://m.sizhengxt.com,https://m.jiabaide.cn"
},
{
"key": "瓜子影视",
"name": "瓜子|影视",
"type": 3,
"api": "csp_Gz360"
},
{
"key": "云播影视",
"name": "云播|影视",
"type": 3,
"api": "csp_Tvyb"
},
{
"key": "骚火影视",
"name": "骚火|影视",
"type": 3,
"api": "csp_SaoHuo",
"ext": "https://shdy5.us"
},
{
"key": "农民影视",
"name": "农民|影视",
"type": 3,
"api": "csp_Wwys",
"ext": "https://vip.wwgz.cn:5200"
},
{
"key": "爱看机器人",
"name": "爱看|影视",
"type": 3,
"api": "csp_Ikanbot",
"searchable": 1,
"quickSearch": 1,
"filterable": 1
},
{
"key": "小镇影视",
"name": "小镇|影视",
"type": 3,
"api": "csp_XBPQ",
"ext": "./XBPQ/小镇影视.json"
},
{
"key": "面包影视",
"name": "面包|影视",
"type": 3,
"api": "csp_XBPQ",
"ext": "./XBPQ/面包影视.json"
},
{
"key": "永乐影视",
"name": "永乐|影视",
"type": 3,
"api": "csp_XBPQ",
"ext": "./XBPQ/永乐影视.json"
},
{
"key": "剧圈影视",
"name": "剧圈|影视",
"type": 3,
"api": "csp_XYQHiker",
"ext": "./XYQHiker/剧圈影视.json"
},
{
"key": "1905",
"name": "1905|影视",
"type": 3,
"api": "csp_Web1905",
"searchable": 1,
"quickSearch": 0,
"filterable": 0
},
{
"key": "哆啦新番社",
"name": "哆啦|新番社",
"type": 3,
"api": "csp_XBPQ",
"style": {
"type": "list"
},
"ext": "./XBPQ/哆啦新番社.json"
},
{
"key": "Anime1",
"name": "A1|动漫",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/Anime1.js"
},
{
"key": "漫国动漫",
"name": "漫国丨动漫",
"type": 3,
"searchable": 1,
"api": "csp_AppSy",
"ext": {
"site": "https://dm-1255775577.cos.ap-guangzhou.myqcloud.com/dmg/api.txt",
"siteKey": "rectangleadsadxa",
"listKey": "aassddwwxxllsx1x",
"parsesKey": "aassddwwxxllsx1x"
}
},
{
"key": "方舟动漫",
"name": "方舟丨动漫",
"type": 3,
"searchable": 1,
"api": "csp_AppGet",
"ext": {
"url": "https://www.cyfz.top",
"dataKey": "e72cdfd629e8895d",
"dataIv": "e72cdfd629e8895d"
}
},
{
"key": "曼波动漫",
"name": "曼波|动漫",
"type": 3,
"searchable": 1,
"api": "csp_AppGet",
"ext": {
"url": "https://app.omofun1.top",
"dataKey": "66dc309cbeeca454",
"dataIv": "66dc309cbeeca454"
}
},
{
"key": "咕咕动漫",
"name": "咕咕|动漫",
"type": 3,
"searchable": 1,
"api": "csp_AppGet",
"ext": {
"url": "https://www.gugu3.com",
"dataKey": "nKfZ8KX6JTNWRzTD",
"dataIv": "nKfZ8KX6JTNWRzTD"
}
},
{
"key": "巴士动漫",
"name": "巴士|动漫",
"type": 3,
"api": "csp_XYQHiker",
"ext": "./XYQHiker/巴士动漫.json"
},
{
"key": "路漫漫",
"name": "路漫漫|动漫",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/路漫漫.js"
},
{
"key": "去看吧",
"name": "去看吧|动漫",
"type": 3,
"api": "./js/drpy2.min.js",
"ext": "./js/去看吧.js"
},
{
"key": "荐片",
"name": "荐片|磁力",
"api": "csp_JianPian",
"type": 3
},
{
"key": "修罗",
"name": "修罗|磁力",
"api": "csp_Xlys",
"type": 3,
"ext": "https://www.xlysw.ggff.net"
},
{
"key": "七味",
"name": "七味|磁力",
"type": 3,
"api": "csp_QnMp4",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "https://www.qwshow.com,https://www.qwmkv.com,https://www.qwfilm.com,https://www.qwfun.com,https://www.qnnull.com,https://www.qnnull.com"
},
{
"key": "New6v",
"name": "New6V|磁力",
"type": 3,
"api": "csp_New6v",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "https://www.xb6v.com"
},
{
"key": "美剧迷",
"name": "美剧迷|磁力",
"type": 3,
"api": "csp_MeijuMi",
"searchable": 1,
"quickSearch": 1,
"filterable": 1
},
{
"key": "迅雷吧",
"name": "迅雷吧|磁力",
"type": 3,
"api": "csp_Xunlei8",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "https://xunlei8.me"
},
{
"key": "电影港",
"name": "电影港|磁力",
"type": 3,
"api": "csp_XYQHiker",
"searchable": 1,
"quickSearch": 1,
"filterable": 1,
"ext": "./XYQHiker/电影港.json"
},
{
"key": "阿里云盘",
"name": "阿里|云盘",
"type": 3,
"api": "csp_PanAli",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
}
},
{
"key": "夸克网盘",
"name": "夸克|网盘",
"type": 3,
"api": "csp_PanQuark",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
}
},
{
"key": "UC网盘",
"name": "UC|网盘",
"type": 3,
"api": "csp_PanUC",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
}
},
{
"key": "百度网盘",
"name": "百度|网盘",
"type": 3,
"api": "csp_PanBaidu",
"searchable": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "list",
"ratio": 1.433
}
},
{
"key": "盘搜",
"name": "盘搜|搜索",
"type": 3,
"api": "csp_PanSou",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "古哥",
"name": "古哥|搜索",
"type": 3,
"api": "csp_GugeSo",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "兄弟",
"name": "兄弟|搜索",
"type": 3,
"api": "csp_XiongdiPan",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "百酷",
"name": "百酷|搜索",
"type": 3,
"api": "csp_Baiku",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "米搜",
"name": "米搜|搜索",
"type": 3,
"api": "csp_MiSou",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "鬼鬼",
"name": "鬼鬼|搜索",
"type": 3,
"api": "csp_GuiGui",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "混合",
"name": "混合|搜索",
"type": 3,
"api": "csp_HunHePan",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "天翼",
"name": "天翼|搜索",
"type": 3,
"api": "csp_TianYiSou",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "趣盘",
"name": "趣盘|搜索",
"type": 3,
"api": "csp_QuPanSo",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"timeout": 60
},
{
"key": "88看球",
"name": "88|看球",
"type": 3,
"api": "csp_Kanqiu",
"gridview": 3,
"style": {
"type": "list"
}
},
{
"key": "球通体育",
"name": "球通|体育",
"type": 3,
"api": "csp_QiutongTY",
"style": {
"type": "list"
}
},
{
"key": "瓜子体育",
"name": "瓜子|体育",
"type": 3,
"api": "csp_GuaziTY",
"style": {
"type": "list"
}
},
{
"key": "咖啡体育",
"name": "咖啡|体育",
"type": 3,
"api": "csp_KafeiTY",
"style": {
"type": "list"
}
},
{
"key": "919体育",
"name": "919|体育",
"type": 3,
"api": "csp_919TY",
"style": {
"type": "list"
}
},
{
"key": "呦呦DJ",
"name": "呦呦|DJ",
"type": 3,
"api": "csp_Djuu",
"style": {
"type": "list"
}
},
{
"key": "轮回DJ",
"name": "轮回|DJ",
"type": 3,
"api": "csp_Djlh",
"style": {
"type": "list"
}
},
{
"key": "蜻蜓FM",
"name": "蜻蜓|FM",
"type": 3,
"api": "csp_QingtingFM",
"style": {
"type": "list"
}
},
{
"key": "世界听书",
"name": "世界|听书",
"type": 3,
"api": "csp_TingShijie",
"style": {
"type": "list"
}
},
{
"key": "戏曲多多",
"name": "戏曲|多多",
"type": 3,
"api": "csp_AppLY",
"style": {
"type": "list"
}
},
{
"key": "爱听音乐",
"name": "爱听|音乐",
"type": 3,
"api": "./py/爱听音乐.py"
},
{
"key": "网络直播",
"name": "网络|直播",
"type": 3,
"api": "./py/网络直播.py"
},
{
"key": "哔哩直播",
"name": "哔哩|直播",
"type": 3,
"api": "./py/哔哩直播.py"
},
{
"key": "哔哩合集",
"name": "哔哩|合集",
"type": 3,
"api": "csp_Bili",
"searchable": 1,
"quickSearch": 0,
"filterable": 0,
"changeable": 0,
"style": {
"type": "rect",
"ratio": 1.433
},
"ext": {
"json": "./json/哔哩合集.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
}
},
{
"key": "哔哩哔哩演唱会",
"name": "哔哩|音乐",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 0,
"ext": {
"json": "./json/哔哩哔哩演唱会.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "哔哩哔哩听书",
"name": "哔哩|听书",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 0,
"ext": {
"json": "./json/哔哩哔哩听书.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "哔哩哔哩相声",
"name": "哔哩|相声",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 0,
"ext": {
"json": "./json/哔哩哔哩相声.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "哔哩哔哩小品",
"name": "哔哩|小品",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 0,
"ext": {
"json": "./json/哔哩哔哩小品.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "哔哩哔哩戏曲",
"name": "哔哩|戏曲",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 0,
"ext": {
"json": "./json/哔哩哔哩戏曲.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "少儿教育",
"name": "少儿|教育",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 1,
"ext": {
"json": "./json/少儿教育.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "小学课堂",
"name": "小学|课堂",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 1,
"ext": {
"json": "./json/小学课堂.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "初中课堂",
"name": "初中|课堂",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 1,
"ext": {
"json": "./json/初中课堂.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "高中课堂",
"name": "高中|课堂",
"type": 3,
"api": "csp_Bili",
"searchable": 0,
"quickSearch": 0,
"filterable": 1,
"ext": {
"json": "./json/高中课堂.json",
"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"
},
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "急救教学",
"name": "急救|教学",
"type": 3,
"api": "csp_FirstAid",
"searchable": 0,
"quickSearch": 0,
"changeable": 0,
"style": {
"type": "rect",
"ratio": 3.8
},
"gridview": "0-0-4.1"
},
{
"key": "养生堂",
"name": "养生|知识",
"type": 3,
"api": "csp_YST",
"searchable": 0,
"quickSearch": 0,
"changeable": 0,
"style": {
"type": "rect",
"ratio": 1.597
}
},
{
"key": "版本信息",
"name": "版本|信息",
"type": 3,
"api": "csp_Market",
"searchable": 0,
"changeable": 0,
"indexs": 0,
"ext": "https://pizazz.s3.bitiful.net/single.json"
},
{
"key": "push_agent",
"name": "手机|推送",
"type": 3,
"api": "csp_Push",
"searchable": 0,
"filterable": 0,
"changeable": 0
}
],
"lives": [
{}
],
"parses": [
{
"name": "聚合",
"type": 3,
"url": "Web"
},
{
"name": "虾米",
"type": 0,
"url": "https://jx.xmflv.com/?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "云解",
"type": 0,
"url": "https://yparse.ik9.cc/index.php?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "咸鱼",
"type": 0,
"url": "https://jx.xymp4.cc/?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "淘片",
"type": 0,
"url": "https://jx.yparse.com/index.php?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "冰豆",
"type": 0,
"url": "https://bd.jx.cn/?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "七七",
"type": 0,
"url": "https://jx.77flv.cc/?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "盘古",
"type": 0,
"url": "https://www.playm3u8.cn/jiexi.php?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
},
{
"name": "夜幕",
"type": 0,
"url": "https://yemu.xyz/?url=",
"ext": {
"header": {
"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"
}
}
}
],
"rules": [
{
"name": "农民",
"hosts": [
"toutiaovod.com"
],
"regex": [
"video/tos/cn"
]
},
{
"name": "火山",
"hosts": [
"huoshan.com"
],
"regex": [
"item_id="
]
},
{
"name": "抖音",
"hosts": [
"douyin.com"
],
"regex": [
"is_play_url="
]
},
{
"name": "磁力广告",
"hosts": [
"magnet"
],
"regex": [
"更多",
"请访问",
"example",
"社 區",
"x u u",
"直 播",
"更 新",
"社 区",
"有趣",
"有 趣",
"英皇体育",
"全中文AV在线",
"澳门皇冠赌场",
"哥哥快来",
"美女荷官",
"裸聊",
"新片首发",
"UUE29"
]
},
{
"name": "饭团点击",
"hosts": [
"dadagui",
"freeok",
"dadagui"
],
"script": [
"document.querySelector(\"#playleftiframe\").contentWindow.document.querySelector(\"#start\").click();"
]
},
{
"name": "毛驴点击",
"hosts": [
"www.maolvys.com"
],
"script": [
"document.getElementsByClassName('swal-buttonswal-button--confirm')[0].click()"
]
}
],
"doh": [
{
"name": "Google",
"url": "https://dns.google/dns-query",
"ips": [
"8.8.4.4",
"8.8.8.8"
]
},
{
"name": "Cloudflare",
"url": "https://cloudflare-dns.com/dns-query",
"ips": [
"1.1.1.1",
"1.0.0.1",
"2606:4700:4700::1111",
"2606:4700:4700::1001"
]
},
{
"name": "AdGuard",
"url": "https://dns.adguard.com/dns-query",
"ips": [
"94.140.14.140",
"94.140.14.141"
]
},
{
"name": "DNSWatch",
"url": "https://resolver2.dns.watch/dns-query",
"ips": [
"84.200.69.80",
"84.200.70.40"
]
},
{
"name": "Quad9",
"url": "https://dns.quad9.net/dns-quer",
"ips": [
"9.9.9.9",
"149.112.112.112"
]
}
],
"flags": [
"youku",
"优酷",
"优 酷",
"优酷视频",
"qq",
"腾讯",
"腾 讯",
"腾讯视频",
"iqiyi",
"qiyi",
"奇艺",
"爱奇艺",
"爱 奇 艺",
"m1905",
"xigua",
"letv",
"leshi",
"乐视",
"乐 视",
"sohu",
"搜狐",
"搜 狐",
"搜狐视频",
"tudou",
"pptv",
"mgtv",
"芒果",
"imgo",
"芒果TV",
"芒 果 T V",
"bilibili",
"哔 哩",
"哔 哩 哔 哩"
],
"ijk": [
{
"group": "软解码",
"options": [
{
"category": 4,
"name": "opensles",
"value": "0"
},
{
"category": 4,
"name": "overlay-format",
"value": "842225234"
},
{
"category": 4,
"name": "framedrop",
"value": "1"
},
{
"category": 4,
"name": "soundtouch",
"value": "1"
},
{
"category": 4,
"name": "start-on-prepared",
"value": "1"
},
{
"category": 1,
"name": "http-detect-range-support",
"value": "0"
},
{
"category": 1,
"name": "fflags",
"value": "fastseek"
},
{
"category": 2,
"name": "skip_loop_filter",
"value": "48"
},
{
"category": 4,
"name": "reconnect",
"value": "1"
},
{
"category": 4,
"name": "enable-accurate-seek",
"value": "0"
},
{
"category": 4,
"name": "mediacodec",
"value": "0"
},
{
"category": 4,
"name": "mediacodec-auto-rotate",
"value": "0"
},
{
"category": 4,
"name": "mediacodec-handle-resolution-change",
"value": "0"
},
{
"category": 4,
"name": "mediacodec-hevc",
"value": "0"
},
{
"category": 1,
"name": "dns_cache_timeout",
"value": "600000000"
}
]
},
{
"group": "硬解码",
"options": [
{
"category": 4,
"name": "opensles",
"value": "0"
},
{
"category": 4,
"name": "overlay-format",
"value": "842225234"
},
{
"category": 4,
"name": "framedrop",
"value": "1"
},
{
"category": 4,
"name": "soundtouch",
"value": "1"
},
{
"category": 4,
"name": "start-on-prepared",
"value": "1"
},
{
"category": 1,
"name": "http-detect-range-support",
"value": "0"
},
{
"category": 1,
"name": "fflags",
"value": "fastseek"
},
{
"category": 2,
"name": "skip_loop_filter",
"value": "48"
},
{
"category": 4,
"name": "reconnect",
"value": "1"
},
{
"category": 4,
"name": "enable-accurate-seek",
"value": "0"
},
{
"category": 4,
"name": "mediacodec",
"value": "1"
},
{
"category": 4,
"name": "mediacodec-auto-rotate",
"value": "1"
},
{
"category": 4,
"name": "mediacodec-handle-resolution-change",
"value": "1"
},
{
"category": 4,
"name": "mediacodec-hevc",
"value": "1"
},
{
"category": 1,
"name": "dns_cache_timeout",
"value": "600000000"
}
]
}
],
"ads": [
"static-mozai.4gtv.tv"
]
{
"spider": "./spider.jar;md5;8c879fe501ce509c5b2adacf037381c9",
"wallpaper": "http://127.0.0.1:9978/proxy?do=wallpaper",
"sites": [
{"key": "豆瓣","name": "豆瓣|首页","type": 3,"api": "csp_Douban","searchable": 0},
{"key": "配置中心","name": "配置|中心","type": 3,"api": "csp_Config","searchable": 0,"changeable": 0,"indexs": 0,"style": {"type": "rect","ratio": 1.597}},
{"key": "本地","name": "本地|视频","type": 3,"api": "csp_LocalFile"},
{"key": "预告","name": "新片|预告","type": 3,"api": "csp_YGP","searchable": 0},
{"key": "热播影视","name": "热播|APP","type": 3,"api": "csp_AppRJ","searchable": 1,"quickSearch": 1,"filterable": 0,"ext": {"url": "http://v.rbotv.cn"}},
{"key": "三秋影视","name": "三秋|APP","type": 3,"api": "csp_App3Q"},
{"key": "韩圈","name": "韩圈|APP","type": 3,"api": "csp_Hxq","ext": "http://www.小不点.com/api/2026/fishhxq.php"},
{"key": "无极99","name": "无极丨APP","type": 3,"api": "csp_App99","ext": {"host": "http://111.170.140.70:19987/app/bn","LoginPath": "/app/log","version": "","appkey": "c403317c2a2946659b0bcbabdd5de43a","versionName": "1.0.1","name": "无极影视","package": "com.wujiys.app","buildNumber": "2001","buildSignature": "A0859BDC35AD3E81D4051E2A4678C77C62773EDB3423DDF1DEFF94CB331D398E"}},
{"key": "听心99","name": "听心|APP","type": 3,"api": "csp_App99","ext": {"host": "https://api.12321app.com/api","LoginPath": "/app/log","appkey": "a0a18659a9977a47e53442cd084b536c","versionName": "2.8.1","name": "听心视频","package": "com.iksp.adsys.jjsp","buildNumber": "2001","buildSignature": "03DD38CE4C3D62D0F0DEFACC06768D14EB382C7BD77A05B2EBF4D66E154A0D47"}},
{"key": "橙子99","name": "橙子丨APP","type": 3,"api": "csp_App99","ext": {"host": "http://113.31.180.218:19987/app/bn","LoginPath": "/app/log","appkey": "6e8f3764a0644f3686ab5cdd57bcdf48","versionName": "4.3.1","name": "小橙子","package": "com.xchengzix.app","buildNumber": "2001","buildSignature": "99DA983CF878CEC016616175464A91A94775E20A489F07F76FCDEA1A0F2B6B45"}},
{"key": "追番99","name": "追番|APP","type": 3,"api": "csp_App99","ext": {"host": "https://api.hboqy.cn.hboqy.cn/api","LoginPath": "/app/log","appkey": "a0a18659a9977a47e53442cd084b536c","versionName": "6.1.7","name": "追番达人","package": "com.android.packageinstaller","buildNumber": "2002","buildSignature": "A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC"}},
{"key": "剧圈99","name": "剧圈丨APP","type": 3,"api": "csp_App99","ext": {"host": "http://124.221.3.182:19987/app/bn","appkey": "d1f0c269eab74d93821fffc9befdbbba","versionName": "1.2.0","name": "剧圈圈","package": "com.qingtangxiaozhuan.xyz","buildNumber": "2002","buildSignature": "054FA8DDA4319C6B6A9B954CA5777541C993F00B1B0BD4394F7EDE48184C4594"}},
{"key": "双星99","name": "双星丨APP","type": 3,"api": "csp_App99","ext": {"host": "http://175.178.65.250:19987/app/bn","LoginPath": "/app/log","appkey": "f66f65db127e48449f073c2c6eb0f993","versionName": "6.4.5","name": "双子星动漫","package": "com.yingfu.mobile.android.pgsp","buildNumber": "2003","buildSignature": "054FA8DDA4319C6B6A9B954CA5777541C993F00B1B0BD4394F7EDE48184C4594"}},
{"key": "顾我99","name": "顾我丨APP","type": 3,"api": "csp_App99","ext": {"host": "http://117.50.200.113:19987/app/bn","LoginPath": "/app/log","appkey": "040f9b1bc5e942569b5c3e63943306ab","versionName": "4.3.1","name": "顾我追剧","package": "com.guwozhuijux.app","buildNumber": "2001","buildSignature": "5AD4436C4730FFE26910C86278B80F3E661C317FFC3616F702D20A729262624A"}},
{"key": "天堂","name": "天堂|APP","type": 3,"api": "csp_AppDrama","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": {"appName": "电影天堂","publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCduNEnfxGaLuQRk5ABzXHhPV43zi00sCHjLo8BYc+Wi6xXm2b4v0i28Sq4WlNCKhseft9fz8kO/qLr6/022o1RcuOU7e4GFL3U9WnNODwRBYSYWd+K8nqpI/tAUDmZEBGRWqjrc7x6aMl3A+xpnWkLbPCLsuhbuuUE3tv09oeOpwIDAQAB","dataKey": "D2KREWRIBVNAUJJYEDL4VFHOY2Q0PQ==","dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E","pkg": "com.dytiantang.one","host": "","site": "https://dyttandroid04-1372779881.cos.ap-shanghai.myqcloud.com/app_dyttandroid.txt","version": "3.0.0.7","decrypt": "0"}},
{"key": "橘汁","name": "橘汁|APP","type": 3,"api": "csp_AppDrama","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": {"appName": "橘汁","publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCr8SzZhjYy+rsya1K09t8d2K50pWFoBkgUqMpKOiW+3IEVKd4eTdvg9RSOjQ82kypL6R9BnsmrS1V8s4PVDwjQbUtYhTPPC9Hz16qY7rpD6m0d2vr09/UpWQ5uOy9PR0QTrsioveZ+DIe9jc3C+zBCu/kZSY/R8stwJoiitki3gwIDAQAB","dataKey": "DGVQRUX5R1LWWDLHTGJSUKG1DJRVPQ==","dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E","pkg": "com.lxf.snzlcgtzxyx","host": "","site": "https://123-1349250429.cos.ap-shanghai.myqcloud.com/app.txt","version": "3.0.2.1","decrypt": "1"}},
{"key": "华谊","name": "华谊|APP","type": 3,"api": "csp_AppDrama","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": {"appName": "华谊","publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp9Ek4wIlQAtwFnuBRlsFiow2tr+4UOciGeNKbY7nL74etUqUb6fvpOSOHhFEfaWlfwUpOB17x3JEL3No19nfjCeVYrYPjlJcgoqUWH/tfIfFAQWvtxBIBlKazkhw8d3ChysWmeWRikKqkBsVRY4oqNPuj4sjm6Zult0U4I4prRQIDAQAB","dataKey": "NDBYSZR1DMRRZ05NSUCWEJNIYWLBPT0=","dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E","pkg": "com.muyue.tool","host": "","site": "https://vip.123pan.cn/1851089669/oss/az5.txt","version": "1.0.0.4","decrypt": "1"}},
{"key": "苹果","name": "苹果|APP","type": 3,"api": "csp_AppDrama","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": {"appName": "小苹果","publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCduNEnfxGaLuQRk5ABzXHhPV43zi00sCHjLo8BYc+Wi6xXm2b4v0i28Sq4WlNCKhseft9fz8kO/qLr6/022o1RcuOU7e4GFL3U9WnNODwRBYSYWd+K8nqpI/tAUDmZEBGRWqjrc7x6aMl3A+xpnWkLbPCLsuhbuuUE3tv09oeOpwIDAQAB","dataKey": "S0VNDTJHOFHHCNMRAW5IV2TOS2PBPQ==","dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E","pkg": "com.juechufsh.android.xpg1","host": "","site": "https://xpgandroid03-1372779881.cos.ap-beijing.myqcloud.com/app_xpg_android.txt","version": "1.0.0.3","decrypt": "0"}},
{"key": "薯条","name": "薯条|APP","type": 3,"api": "csp_AppDrama","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": {"appName": "薯条影视","publicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCduNEnfxGaLuQRk5ABzXHhPV43zi00sCHjLo8BYc+Wi6xXm2b4v0i28Sq4WlNCKhseft9fz8kO/qLr6/022o1RcuOU7e4GFL3U9WnNODwRBYSYWd+K8nqpI/tAUDmZEBGRWqjrc7x6aMl3A+xpnWkLbPCLsuhbuuUE3tv09oeOpwIDAQAB","dataKey": "A1VACZJWDKRZY1P3MFV0DDRAZ3F3PT0=","dataIv": "OC1A06E197EF10CF3F6058CA7A803B5E","pkg": "com.st.standroid","host": "","site": "https://dyttandroid-1372779881.cos.ap-guangzhou.myqcloud.com/app_dyttandroid.txt","version": "5.0.0.1","decrypt": "0"}},
{"key": "久久","name": "久久|APP","type": 3,"api": "csp_AppYsV2","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "http://99cms.jj99.icu:8199/api.php/app/"},
{"key": "闪影","name": "闪影|APP","type": 3,"api": "csp_AppYsV2","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "http://38.47.213.61:41271/mogai_api.php/v1.vod"},
{"key": "飞飞","name": "飞飞丨APP","type": 3,"api": "csp_AppYsV2","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://qpcj.69mini.com/api.php/app/"},
{"key": "云播","name": "云播|APP","type": 3,"api": "csp_AppFox","searchable": 1,"changeable": 1,"ext": {"host": "http://app.hktvyb.cc"}},
{"key": "首发","name": "首发|APP","type": 3,"api": "csp_AppQi","searchable": 1,"changeable": 1,"ext": {"site": "https://yun-1316442804.cos.ap-guangzhou.myqcloud.com/600.txt","dataKey": "FTgP4Gq8zPiqbt7M","dataIv": "FTgP4Gq8zPiqbt7M","init": "initV122","ua": "okhttp/3.10.0"}},
{"key": "金牌","name": "金牌|APP","type": 3,"api": "csp_AppQi","searchable": 1,"changeable": 1,"ext": {"url": "https://qj4.catbb.xyz","dataKey": "eecbio48dsq13kkk","dataIv": "eecbio48dsq13kkk","search": "searchList4","init": "initV122","ua": "okhttp/3.10.0"}},
{"key": "老鹰","name": "老鹰|APP","type": 3,"api": "csp_AppQi","searchable": 1,"changeable": 1,"ext": {"site": "https://maotouyinghubei.oss-cn-wuhan-lr.aliyuncs.com/maotouyinghb.txt","dataKey": "zxPtEUDGVllIUhDB","dataIv": "zxPtEUDGVllIUhDB","ua": "okhttp/3.10.0"}},
{"key": "蓝鹰","name": "蓝鹰|APP","type": 3,"api": "csp_AppQi","searchable": 1,"changeable": 1,"ext": {"site": "https://xinlanyinghb.oss-cn-wuhan-lr.aliyuncs.com/xly.txt","dataKey": "ca94b06ca359d80e","dataIv": "ca94b06ca359d80e","init": "initV120","ua": "okhttp/3.10.0"}},
{"key": "猎豹","name": "猎豹|APP","type": 3,"api": "csp_AppGet","searchable": 1,"changeable": 1,"ext": {"url": "https://444421.xyz","dataKey": "#getapp@TMD@2025","dataIv": "#getapp@TMD@2025"}},
{"key": "王子","name": "王子|APP","type": 3,"api": "csp_AppGet","searchable": 1,"changeable": 1,"ext": {"url": "https://app.95112475.xyz","dataKey": "5a9w6x58dsq6z3a6","dataIv": "5a9w6x58dsq6z3a6"}},
{"key": "秒看","name": "秒看|APP","type": 3,"api": "csp_AppGet","searchable": 1,"changeable": 1,"ext": {"site": "https://mk1080.top/get.txt","dataKey": "c60d88b2eep53za8","dataIv": "c60d88b2eep53za8","token": "4181e508e7a17657d6a6246e70b1b13553e5ae9d8d287dc47000fb2df638dffa"}},
{"key": "茉莉","name": "茉莉|APP","type": 3,"api": "csp_AppGet","searchable": 1,"changeable": 1,"ext": {"site": "https://gitee.com/wmmoliill/wimg/raw/master/img/bk/9.txt","dataKey": "88689667dce61725","dataIv": "88689667dce61725"}},
{"key": "灵虎","name": "灵虎|APP","type": 3,"api": "csp_AppGet","searchable": 1,"changeable": 1,"ext": {"site": "https://bind.315999.xyz/89.txt","dataKey": "#getapp@TMD@2025","dataIv": "#getapp@TMD@2025"}},
{"key": "哔哩视频","name": "哔哩|视频","type": 3,"api": "csp_BiliYS","searchable": 1,"quickSearch": 0,"filterable": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.433},"ext": {"cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"}},
{"key": "三六零","name": "三六零|视频","type": 3,"api": "csp_SP360"},
{"key": "玩偶","name": "玩偶|4K","type": 3,"api": "csp_Wogg","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["https://www.wogg.net","https://wogg.xxooo.cf","https://woggpan.xxooo.cf"]},"timeout": 60},
{"key": "快映","name": "快映|4K","type": 3,"api": "csp_PanWebShare","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["http://38.76.197.172:12521"]},"timeout": 60},
{"key": "木偶","name": "木偶|4K","type": 3,"api": "csp_PanWebShare","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["https://123.666291.xyz","https://666.666291.xyz","https://www.muou.site","https://www.muou.asia"]},"timeout": 60},
{"key": "蜡笔","name": "蜡笔|4K","type": 3,"api": "csp_PanWebShare","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["http://www.xiaocgege.shop","http://xiaocge.fun","http://feimo.fun","http://xiaocgege.shop"]},"timeout": 60},
{"key": "至臻","name": "至臻|4K","type": 3,"api": "csp_PanWebShare","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["https://mihdr.top","https://www.miqk.cc","https://www.mihdr.top"]},"timeout": 60},
{"key": "多多","name": "多多|4K","type": 3,"api": "csp_PanWebShare","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["https://tv.yydsys.top","https://tv.yydsys.cc","https://tv.214521.xyz"]},"timeout": 60},
{"key": "欧哥","name": "欧哥|4K","type": 3,"api": "csp_PanWebShare","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["https://woog.nxog.eu.org","https://woog.nxog.fun","https://woog.nxog.eu.org","https://woog.430520.xyz"]},"timeout": 60},
{"key": "二小","name": "二小|4K","type": 3,"api": "csp_PanWebShare","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["https://www.2xiaopan.top","https://www.erxiaozhan.top","https://www.2xiaozhan.top"]},"timeout": 60},
{"key": "虎斑","name": "虎斑|4K","type": 3,"api": "csp_PanWebShare","searchable": 1,"quickSearch": 1,"filterable": 1,"changeable": 1,"ext": {"site": ["http://38.76.197.172:16969"]},"timeout": 60},
{"key": "夸父","name": "夸父|4K","type": 3,"api": "csp_PanWebShareKF","searchable": 1,"quickSearch": 0,"filterable": 0,"style": {"type": "list","ratio": 1.433},"ext": {"site": ["https://www.kfzys.net"],"cookie": "bbs_sid=p5mugcm9r147o1d3qpi0su1ucm; bbs_token=gDMAOehNUQetTJv9Lnet0J_2FGJmgdvnx90iTZqzU_2FnO0_3D"},"timeout": 60},
{"key": "盘它","name": "盘它|4K","type": 3,"api": "csp_PanWebSharePT","searchable": 1,"quickSearch": 0,"filterable": 0,"style": {"type": "list"},"timeout": 60},
{"key": "123","name": "1234K","type": 3,"api": "csp_PanWebShare123","searchable": 1,"quickSearch": 0,"filterable": 0,"style": {"type": "list","ratio": 1.433},"ext": {"site": ["https://123panfx.com","https://pan1.me"]},"timeout": 60},
{"key": "指南","name": "指南|4K","type": 3,"api": "csp_4KZhinan","searchable": 1,"quickSearch": 1,"filterable": 1,"timeout": 60},
{"key": "人人","name": "人人|4K","type": 3,"api": "csp_RenRen","searchable": 1,"quickSearch": 1,"filterable": 1,"timeout": 60},
{"key": "即刻","name": "即刻|4K","type": 3,"api": "csp_Jike","searchable": 1,"quickSearch": 0,"filterable": 0,"style": {"type": "list"},"timeout": 60},
{"key": "双星","name": "双星|4K","type": 3,"api": "csp_ShuangXing","searchable": 1,"quickSearch": 0,"filterable": 0,"style": {"type": "list"},"timeout": 60},
{"key": "好看短剧","name": "好看|短剧","type": 3,"api": "csp_HaokanDJ","searchable": 1,"changeable": 1,"quickSearch": 1,"filterable": 1,"genre": "shortdrama"},
{"key": "围观短剧","name": "围观|短剧","type": 3,"api": "csp_WeiguanDJ","searchable": 1,"changeable": 1,"quickSearch": 1,"filterable": 1,"genre": "shortdrama"},
{"key": "星芽短剧","name": "星芽|短剧","type": 3,"api": "./py/星芽短剧.py","searchable": 1,"changeable": 1,"quickSearch": 1,"filterable": 1,"genre": "shortdrama"},
{"key": "独播影视","name": "独播|影视","type": 3,"api": "csp_Duboku"},
{"key": "厂长影视","name": "厂长|影视","type": 3,"api": "csp_Czsapp","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://cz01.vip"},
{"key": "金牌影视","name": "金牌|影视","type": 3,"api": "csp_Jpys","ext": "https://y2s52n7.com,https://m.hkybqufgh.com,https://m.sizhengxt.com,https://m.9zhoukj.com,https://m.sizhengxt.com,https://m.jiabaide.cn"},
{"key": "修罗影视","name": "修罗|影视","api": "csp_Xlys","type": 3,"ext": "https://www.xlysw.ggff.net"},
{"key": "瓜子影视","name": "瓜子|影视","type": 3,"api": "csp_Gz360"},
{"key": "云播影视","name": "云播|影视","type": 3,"api": "csp_Tvyb"},
{"key": "骚火影视","name": "骚火|影视","type": 3,"api": "csp_SaoHuo","ext": "https://shdy5.us"},
{"key": "农民影视","name": "农民|影视","type": 3,"api": "csp_Wwys","ext": "https://vip.wwgz.cn:5200"},
{"key": "爱看机器人","name": "爱看|影视","type": 3,"api": "csp_Ikanbot","searchable": 1,"quickSearch": 1,"filterable": 1},
{"key": "小镇影视","name": "小镇|影视","type": 3,"api": "csp_XBPQ","ext": "./json/XZYS.json"},
{"key": "面包影视","name": "面包|影视","type": 3,"api": "csp_XBPQ","ext": "./json/MBYS.json"},
{"key": "永乐影视","name": "永乐|影视","type": 3,"api": "csp_XBPQ","ext": "./json/YLYS.json"},
{"key": "剧圈影视","name": "剧圈|影视","type": 3,"api": "csp_XYQHiker","ext": "./json/JQYS.json"},
{"key": "1905","name": "1905|影视","type": 3,"api": "csp_Web1905","searchable": 1,"quickSearch": 0,"filterable": 0},
{"key": "哆啦新番社","name": "哆啦|新番社","type": 3,"api": "csp_XBPQ","style": {"type": "list"},"ext": "./json/DLXFS.json"},
{"key": "Anime1","name": "A1|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/Anime1.js"},
{"key": "漫国动漫","name": "漫国丨动漫","type": 3,"searchable": 1,"api": "csp_AppSy","ext": {"site": "https://dm-1255775577.cos.ap-guangzhou.myqcloud.com/dmg/api.txt","siteKey": "rectangleadsadxa","listKey": "aassddwwxxllsx1x","parsesKey": "aassddwwxxllsx1x"}},
{"key": "方舟动漫","name": "方舟丨动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://www.cyfz.top","dataKey": "e72cdfd629e8895d","dataIv": "e72cdfd629e8895d"}},
{"key": "曼波动漫","name": "曼波|动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://app.omofun1.top","dataKey": "66dc309cbeeca454","dataIv": "66dc309cbeeca454"}},
{"key": "咕咕动漫","name": "咕咕|动漫","type": 3,"searchable": 1,"api": "csp_AppGet","ext": {"url": "https://www.gugu3.com","dataKey": "nKfZ8KX6JTNWRzTD","dataIv": "nKfZ8KX6JTNWRzTD"}},
{"key": "巴士动漫","name": "巴士|动漫","type": 3,"api": "csp_XYQHiker","ext": "https://git.yylx.win/raw.githubusercontent.com/PizazzGY/NewTVBox/main/anime/json/bsdm.json"},
{"key": "路漫漫","name": "路漫漫|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/LMM.js"},
{"key": "去看吧","name": "去看吧|动漫","type": 3,"api": "https://pan.vma.cc/pan/down.php/ec67b9045d393737f073d2c9365533f0.js","ext": "./js/QKB.js"},
{"key": "荐片","name": "荐片|磁力","api": "csp_JianPian","type": 3},
{"key": "七味","name": "七味|磁力","type": 3,"api": "csp_QnMp4","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://www.qwshow.com,https://www.qwmkv.com,https://www.qwfilm.com,https://www.qwfun.com,https://www.qnnull.com,https://www.qnnull.com"},
{"key": "New6v","name": "New6V|磁力","type": 3,"api": "csp_New6v","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://www.xb6v.com"},
{"key": "美剧迷","name": "美剧迷|磁力","type": 3,"api": "csp_MeijuMi","searchable": 1,"quickSearch": 1,"filterable": 1},
{"key": "迅雷吧","name": "迅雷吧|磁力","type": 3,"api": "csp_Xunlei8","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "https://xunlei8.me"},
{"key": "电影港","name": "电影港|磁力","type": 3,"api": "csp_XYQHiker","searchable": 1,"quickSearch": 1,"filterable": 1,"ext": "./json/DYG.json"},
{"key": "阿里云盘","name": "阿里|云盘","type": 3,"api": "csp_PanAli","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
{"key": "夸克网盘","name": "夸克|网盘","type": 3,"api": "csp_PanQuark","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
{"key": "UC网盘","name": "UC|网盘","type": 3,"api": "csp_PanUC","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
{"key": "百度网盘","name": "百度|网盘","type": 3,"api": "csp_PanBaidu","searchable": 0,"filterable": 0,"changeable": 0,"style": {"type": "list","ratio": 1.433}},
{"key": "盘搜","name": "盘搜|搜索","type": 3,"api": "csp_PanSou","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "古哥","name": "古哥|搜索","type": 3,"api": "csp_GugeSo","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "兄弟","name": "兄弟|搜索","type": 3,"api": "csp_XiongdiPan","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "百酷","name": "百酷|搜索","type": 3,"api": "csp_Baiku","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "米搜","name": "米搜|搜索","type": 3,"api": "csp_MiSou","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "鬼鬼","name": "鬼鬼|搜索","type": 3,"api": "csp_GuiGui","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "混合","name": "混合|搜索","type": 3,"api": "csp_HunHePan","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "天翼","name": "天翼|搜索","type": 3,"api": "csp_TianYiSou","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "趣盘","name": "趣盘|搜索","type": 3,"api": "csp_QuPanSo","searchable": 1,"quickSearch": 0,"filterable": 0,"timeout": 60},
{"key": "88看球","name": "88|看球","type": 3,"api": "csp_Kanqiu","gridview": 3,"style": {"type": "list"}},
{"key": "球通体育","name": "球通|体育","type": 3,"api": "csp_QiutongTY","style": {"type": "list"}},
{"key": "瓜子体育","name": "瓜子|体育","type": 3,"api": "csp_GuaziTY","style": {"type": "list"}},
{"key": "咖啡体育","name": "咖啡|体育","type": 3,"api": "csp_KafeiTY","style": {"type": "list"}},
{"key": "919体育","name": "919|体育","type": 3,"api": "csp_919TY","style": {"type": "list"}},
{"key": "呦呦DJ","name": "呦呦|DJ","type": 3,"api": "csp_Djuu","style": {"type": "list"}},
{"key": "轮回DJ","name": "轮回|DJ","type": 3,"api": "csp_Djlh","style": {"type": "list"}},
{"key": "蜻蜓FM","name": "蜻蜓|FM","type": 3,"api": "csp_QingtingFM","style": {"type": "list"}},
{"key": "世界听书","name": "世界|听书","type": 3,"api": "csp_TingShijie","style": {"type": "list"}},
{"key": "戏曲多多","name": "戏曲|多多","type": 3,"api": "csp_AppLY","style": {"type": "list"}},
{"key": "爱听音乐","name": "爱听|音乐","type": 3,"api": "./py/爱听音乐.py"},
{"key": "网络直播","name": "网络|直播","type": 3,"api": "./py/WLZB.py"},
{"key": "哔哩直播","name": "哔哩|直播","type": 3,"api": "./py/BLZB.py"},
{"key": "哔哩合集","name": "哔哩|合集","type": 3,"api": "csp_Bili","searchable": 1,"quickSearch": 0,"filterable": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.433},"ext": {"json": "./json/BLHJ.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"}},
{"key": "哔哩哔哩演唱会","name": "哔哩|音乐","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLYCH.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩听书","name": "哔哩|听书","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLTS.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩相声","name": "哔哩|相声","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXS.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩小品","name": "哔哩|小品","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXP.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "哔哩哔哩戏曲","name": "哔哩|戏曲","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 0,"ext": {"json": "./json/BLXQ.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "少儿教育","name": "少儿|教育","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/SEJY.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "小学课堂","name": "小学|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/XXKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "初中课堂","name": "初中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/CZKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "高中课堂","name": "高中|课堂","type": 3,"api": "csp_Bili","searchable": 0,"quickSearch": 0,"filterable": 1,"ext": {"json": "./json/GZKT.json","cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt"},"style": {"type": "rect","ratio": 1.597}},
{"key": "急救教学","name": "急救|教学","type": 3,"api": "csp_FirstAid","searchable": 0,"quickSearch": 0,"changeable": 0,"style": {"type": "rect","ratio": 3.8},"gridview": "0-0-4.1"},
{"key": "养生堂","name": "养生|知识","type": 3,"api": "csp_YST","searchable": 0,"quickSearch": 0,"changeable": 0,"style": {"type": "rect","ratio": 1.597}},
{"key": "push_agent","name": "手机|推送","type": 3,"api": "csp_Push","searchable": 0,"filterable": 0,"changeable": 0}
],
"lives": [
{}
],
"parses": [
{"name": "聚合","type": 3,"url": "Web"},
{"name": "虾米","type": 0,"url": "https://jx.xmflv.com/?url=","ext": {"header": {"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"}}},
{"name": "云解","type": 0,"url": "https://yparse.ik9.cc/index.php?url=","ext": {"header": {"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"}}},
{"name": "咸鱼","type": 0,"url": "https://jx.xymp4.cc/?url=","ext": {"header": {"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"}}},
{"name": "淘片","type": 0,"url": "https://jx.yparse.com/index.php?url=","ext": {"header": {"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"}}},
{"name": "冰豆","type": 0,"url": "https://bd.jx.cn/?url=","ext": {"header": {"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"}}},
{"name": "七七","type": 0,"url": "https://jx.77flv.cc/?url=","ext": {"header": {"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"}}},
{"name": "盘古","type": 0,"url": "https://www.playm3u8.cn/jiexi.php?url=","ext": {"header": {"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"}}},
{"name": "夜幕","type": 0,"url": "https://yemu.xyz/?url=","ext": {"header": {"user-agent": "Mozilla/5.0 (Linux; Android 13; V2049A Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36"}}}
],
"rules": [
{"name": "农民","hosts": ["toutiaovod.com"],"regex": ["video/tos/cn"]},
{"name": "火山","hosts": ["huoshan.com"],"regex": ["item_id="]},
{"name": "抖音","hosts": ["douyin.com"],"regex": ["is_play_url="]},
{"name": "磁力广告","hosts": ["magnet"],"regex": ["更多","请访问","example","社 區","x u u","直 播","更 新","社 区","有趣","有 趣","英皇体育","全中文AV在线","澳门皇冠赌场","哥哥快来","美女荷官","裸聊","新片首发","UUE29"]},
{"name": "饭团点击","hosts": ["dadagui","freeok","dadagui"],"script": ["document.querySelector(\"#playleftiframe\").contentWindow.document.querySelector(\"#start\").click();"]},
{"name": "毛驴点击","hosts": ["www.maolvys.com"],"script": ["document.getElementsByClassName('swal-buttonswal-button--confirm')[0].click()"]}
],
"doh": [
{"name": "Google","url": "https://dns.google/dns-query","ips": ["8.8.4.4","8.8.8.8"]},
{"name": "Cloudflare","url": "https://cloudflare-dns.com/dns-query","ips": ["1.1.1.1","1.0.0.1","2606:4700:4700::1111","2606:4700:4700::1001"]},
{"name": "AdGuard","url": "https://dns.adguard.com/dns-query","ips": ["94.140.14.140","94.140.14.141"]},
{"name": "DNSWatch","url": "https://resolver2.dns.watch/dns-query","ips": ["84.200.69.80","84.200.70.40"]},
{"name": "Quad9","url": "https://dns.quad9.net/dns-quer","ips": ["9.9.9.9","149.112.112.112"]}
],
"flags": [
"youku",
"优酷",
"优酷视频",
"qq",
"腾讯",
"腾讯视频",
"iqiyi",
"qiyi",
"奇艺",
"爱奇艺",
"m1905",
"xigua",
"letv",
"leshi",
"乐视",
"sohu",
"搜狐",
"搜狐视频",
"tudou",
"pptv",
"mgtv",
"芒果",
"imgo",
"芒果TV",
"bilibili",
"哔 哩",
"哔 哩 哔 哩"
],
"ijk": [
{"group": "软解码","options": [{"category": 4,"name": "opensles","value": "0"},{"category": 4,"name": "overlay-format","value": "842225234"},{"category": 4,"name": "framedrop","value": "1"},{"category": 4,"name": "soundtouch","value": "1"},{"category": 4,"name": "start-on-prepared","value": "1"},{"category": 1,"name": "http-detect-range-support","value": "0"},{"category": 1,"name": "fflags","value": "fastseek"},{"category": 2,"name": "skip_loop_filter","value": "48"},{"category": 4,"name": "reconnect","value": "1"},{"category": 4,"name": "enable-accurate-seek","value": "0"},{"category": 4,"name": "mediacodec","value": "0"},{"category": 4,"name": "mediacodec-auto-rotate","value": "0"},{"category": 4,"name": "mediacodec-handle-resolution-change","value": "0"},{"category": 4,"name": "mediacodec-hevc","value": "0"},{"category": 1,"name": "dns_cache_timeout","value": "600000000"}]},
{"group": "硬解码","options": [{"category": 4,"name": "opensles","value": "0"},{"category": 4,"name": "overlay-format","value": "842225234"},{"category": 4,"name": "framedrop","value": "1"},{"category": 4,"name": "soundtouch","value": "1"},{"category": 4,"name": "start-on-prepared","value": "1"},{"category": 1,"name": "http-detect-range-support","value": "0"},{"category": 1,"name": "fflags","value": "fastseek"},{"category": 2,"name": "skip_loop_filter","value": "48"},{"category": 4,"name": "reconnect","value": "1"},{"category": 4,"name": "enable-accurate-seek","value": "0"},{"category": 4,"name": "mediacodec","value": "1"},{"category": 4,"name": "mediacodec-auto-rotate","value": "1"},{"category": 4,"name": "mediacodec-handle-resolution-change","value": "1"},{"category": 4,"name": "mediacodec-hevc","value": "1"},{"category": 1,"name": "dns_cache_timeout","value": "600000000"}]}
],
"ads": [
"static-mozai.4gtv.tv"
]
}
+1 -169
View File
@@ -1,169 +1 @@
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
// 3个set-Cookie
var rule = {
title:'Anime1动畫',
host:'https://anime1.me',
url: '/fyclass',
detailUrl:'/?cat=fyid',
searchUrl: '/page/fypage?s=**',
searchable:2,
quickSearch:0,
headers:{'User-Agent': 'PC_UA'},
timeout:5000,
class_name:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&更早',
class_url:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&2017',
play_parse:true,
lazy:`js:
var apiurl = 'https://v.anime1.me/api';
var html = request(apiurl, {
headers: {
'Referer': HOST,
},
body: 'd=' + input,
method: 'POST',
withHeaders: true
});
let json = JSON.parse(html);
print(json);
log(Object.keys(json));
let setCk = Object.keys(json).filter(it => it.toLowerCase() === "set-cookie");
let cookie = setCk ? json[setCk] : "";
// 3个set-Cookie
if (Array.isArray(cookie)) {
cookie = cookie.join(';');
}
cookie = cookie.split(';').filter(function(it) {
return ['e', 'p', 'h'].includes(it.split('=')[0])
}).join(';');
log(cookie);
var purl = JSON.parse(json.body).s[0].src;
if (purl.startsWith('/')) {
purl = 'https:' + purl
}
input = {
jx: 0,
url: purl,
parse: 0,
header: JSON.stringify({
'referer': HOST,
'Cookie': cookie,
'user-agent': PC_UA
}),
}
`,
limit:6,
推荐: `js:
var d = [];
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
var timestamp = new Date().getTime();
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
var list = JSON.parse(json);
let playKeys = Object.values(list).filter(function(x) {
return x[2].includes('連載中');
});
playKeys.forEach(function(it) {
d.push({
title: stripHtmlTag(it[1]),
img: 'https://sta.anicdn.com/playerImg/8.jpg',
desc: it[2],
url: it[0],
});
});
setResult(d);
`,
一级: `js:
var d = [];
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
var timestamp = new Date().getTime();
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
var list = JSON.parse(json);
let playKeys = Object.values(list).filter(function(x) {
if (MY_CATE === '連載中') return x[2].includes(MY_CATE);
else if (MY_CATE === '2017') return x[3] <= MY_CATE;
else return x[3] == MY_CATE;
});
playKeys.forEach(function(it) {
d.push({
title: stripHtmlTag(it[1]),
img: 'https://sta.anicdn.com/playerImg/8.jpg',
desc: it[2],
url: it[0],
});
});
setResult(d);
`,
二级: `js:
pdfh = jsp.pdfh; pdfa = jsp.pdfa; pd = jsp.pd;
var html = request(input);
var timestamp = new Date().getTime();
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
var list = JSON.parse(json);
var vid = input.split('=')[1];
let playKeys = Object.values(list).find(function(x) {
return x[0] === parseInt(vid);
});
VOD = {
vod_pic: 'https://sta.anicdn.com/playerImg/8.jpg',
vod_id: playKeys[0],
vod_name: playKeys[1],
vod_content: playKeys[2],
vod_year: playKeys[3],
type_name: playKeys[4],
vod_actor: playKeys[5],
};
var pageurl = pd(html, '.cat-links&&a&&href');
var pagenum = 1;
let vod_tab_list = [];
let vlist = [];
for (let p = 1; p < parseInt(pagenum) + 1; p++) {
let phtml = request(pageurl + '/page/' + pagenum);
let new_vod_list = [];
let vodList = [];
vodList = pdfa(phtml, '.site-main&&article');
for (let i = 0; i < vodList.length; i++) {
let it = vodList[i];
let ptitle = pdfh(it, '.entry-title&&Text').replace(/\\[(.*)\\]/, '$1');
let purl = pd(it, '.video-js&&data-apireq');
new_vod_list.push(ptitle + '$' + purl);
}
vlist = vlist.concat(new_vod_list);
try {
pagenum = pd(phtml, '.nav-previous&&a&&href').split('/page/')[1];
} catch(e) {}
}
let vlist2 = vlist.reverse().join("#");
vod_tab_list.push(vlist2);
VOD.vod_play_from = '在线播放';
VOD.vod_play_url = vod_tab_list.join("$$$");
`,
搜索: `js:
var d = [];
function stripHtmlTag(src) {
return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
}
var timestamp = new Date().getTime();
var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
var list = JSON.parse(json);
var wd = input.split('=')[1];
let playKeys = Object.values(list).filter(function(x) {
return x[1].includes(wd);
});
log(playKeys);
playKeys.forEach(function(it) {
d.push({
title: stripHtmlTag(it[1]),
img: 'https://sta.anicdn.com/playerImg/8.jpg',
desc: it[2],
url: it[0],
});
});
setResult(d);
`,
}
Ly8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8gM+S4qnNldC1Db29raWUKCnZhciBydWxlID0gewoJdGl0bGU6J0FuaW1lMeWKqOeVqycsCglob3N0OidodHRwczovL2FuaW1lMS5tZScsCgl1cmw6ICcvZnljbGFzcycsCglkZXRhaWxVcmw6Jy8/Y2F0PWZ5aWQnLAoJc2VhcmNoVXJsOiAnL3BhZ2UvZnlwYWdlP3M9KionLAoJc2VhcmNoYWJsZToyLAoJcXVpY2tTZWFyY2g6MCwKCWhlYWRlcnM6eydVc2VyLUFnZW50JzogJ1BDX1VBJ30sCgl0aW1lb3V0OjUwMDAsCiAgICBjbGFzc19uYW1lOifpgKPovInkuK0mMjAyNSYyMDI0JjIwMjMmMjAyMiYyMDIxJjIwMjAmMjAxOSYyMDE4JuabtOaXqScsCiAgICBjbGFzc191cmw6J+mAo+i8ieS4rSYyMDI1JjIwMjQmMjAyMyYyMDIyJjIwMjEmMjAyMCYyMDE5JjIwMTgmMjAxNycsCglwbGF5X3BhcnNlOnRydWUsCglsYXp5OmBqczoKCQl2YXIgYXBpdXJsID0gJ2h0dHBzOi8vdi5hbmltZTEubWUvYXBpJzsKCQl2YXIgaHRtbCA9IHJlcXVlc3QoYXBpdXJsLCB7CgkJCWhlYWRlcnM6IHsKCQkJCSdSZWZlcmVyJzogSE9TVCwKCQkJfSwKCQkJYm9keTogJ2Q9JyArIGlucHV0LAoJCQltZXRob2Q6ICdQT1NUJywKCQkJd2l0aEhlYWRlcnM6IHRydWUKCQl9KTsKCQlsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CgkJcHJpbnQoanNvbik7CgkJbG9nKE9iamVjdC5rZXlzKGpzb24pKTsKCQlsZXQgc2V0Q2sgPSBPYmplY3Qua2V5cyhqc29uKS5maWx0ZXIoaXQgPT4gaXQudG9Mb3dlckNhc2UoKSA9PT0gInNldC1jb29raWUiKTsKCQlsZXQgY29va2llID0gc2V0Q2sgPyBqc29uW3NldENrXSA6ICIiOwoJCS8vIDPkuKpzZXQtQ29va2llCgkJaWYgKEFycmF5LmlzQXJyYXkoY29va2llKSkgewoJCQljb29raWUgPSBjb29raWUuam9pbignOycpOwoJCX0KCQljb29raWUgPSBjb29raWUuc3BsaXQoJzsnKS5maWx0ZXIoZnVuY3Rpb24oaXQpIHsKCQkJcmV0dXJuIFsnZScsICdwJywgJ2gnXS5pbmNsdWRlcyhpdC5zcGxpdCgnPScpWzBdKQoJCX0pLmpvaW4oJzsnKTsKCQlsb2coY29va2llKTsKCQl2YXIgcHVybCA9IEpTT04ucGFyc2UoanNvbi5ib2R5KS5zWzBdLnNyYzsKCQlpZiAocHVybC5zdGFydHNXaXRoKCcvJykpIHsKCQkJcHVybCA9ICdodHRwczonICsgcHVybAoJCX0KCQlpbnB1dCA9IHsKCQkJang6IDAsCgkJCXVybDogcHVybCwKCQkJcGFyc2U6IDAsCgkJCWhlYWRlcjogSlNPTi5zdHJpbmdpZnkoewoJCQkJJ3JlZmVyZXInOiBIT1NULAoJCQkJJ0Nvb2tpZSc6IGNvb2tpZSwKCQkJCSd1c2VyLWFnZW50JzogUENfVUEKCQkJfSksCgkJfQoJYCwKCWxpbWl0OjYsCgnmjqjojZA6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maWx0ZXIoZnVuY3Rpb24oeCkgewoJCQlyZXR1cm4geFsyXS5pbmNsdWRlcygn6YCj6LyJ5LitJyk7CgkJfSk7CgkJcGxheUtleXMuZm9yRWFjaChmdW5jdGlvbihpdCkgewoJCQlkLnB1c2goewoJCQkJdGl0bGU6IHN0cmlwSHRtbFRhZyhpdFsxXSksCgkJCQlpbWc6ICdodHRwczovL3N0YS5hbmljZG4uY29tL3BsYXllckltZy84LmpwZycsCgkJCQlkZXNjOiBpdFsyXSwKCQkJCXVybDogaXRbMF0sCgkJCX0pOwoJCX0pOwoJCXNldFJlc3VsdChkKTsKCWAsCgnkuIDnuqc6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maWx0ZXIoZnVuY3Rpb24oeCkgewoJCQlpZiAoTVlfQ0FURSA9PT0gJ+mAo+i8ieS4rScpIHJldHVybiB4WzJdLmluY2x1ZGVzKE1ZX0NBVEUpOwoJCQllbHNlIGlmIChNWV9DQVRFID09PSAnMjAxNycpIHJldHVybiB4WzNdIDw9IE1ZX0NBVEU7CgkJCWVsc2UgcmV0dXJuIHhbM10gPT0gTVlfQ0FURTsKCQl9KTsKCQlwbGF5S2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CgkJCWQucHVzaCh7CgkJCQl0aXRsZTogc3RyaXBIdG1sVGFnKGl0WzFdKSwKCQkJCWltZzogJ2h0dHBzOi8vc3RhLmFuaWNkbi5jb20vcGxheWVySW1nLzguanBnJywKCQkJCWRlc2M6IGl0WzJdLAoJCQkJdXJsOiBpdFswXSwKCQkJfSk7CgkJfSk7CgkJc2V0UmVzdWx0KGQpOwoJYCwKCeS6jOe6pzogYGpzOgoJCXBkZmggPSBqc3AucGRmaDsgcGRmYSA9IGpzcC5wZGZhOyBwZCA9IGpzcC5wZDsKCQl2YXIgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJdmFyIHZpZCA9IGlucHV0LnNwbGl0KCc9JylbMV07CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maW5kKGZ1bmN0aW9uKHgpIHsKCQkJcmV0dXJuIHhbMF0gPT09IHBhcnNlSW50KHZpZCk7CgkJfSk7CgkJVk9EID0gewoJCQl2b2RfcGljOiAnaHR0cHM6Ly9zdGEuYW5pY2RuLmNvbS9wbGF5ZXJJbWcvOC5qcGcnLAoJCQl2b2RfaWQ6IHBsYXlLZXlzWzBdLAoJCQl2b2RfbmFtZTogcGxheUtleXNbMV0sCgkJCXZvZF9jb250ZW50OiBwbGF5S2V5c1syXSwKCQkJdm9kX3llYXI6IHBsYXlLZXlzWzNdLAoJCQl0eXBlX25hbWU6IHBsYXlLZXlzWzRdLAoJCQl2b2RfYWN0b3I6IHBsYXlLZXlzWzVdLAoJCX07CgkJdmFyIHBhZ2V1cmwgPSBwZChodG1sLCAnLmNhdC1saW5rcyYmYSYmaHJlZicpOwoJCXZhciBwYWdlbnVtID0gMTsKCQlsZXQgdm9kX3RhYl9saXN0ID0gW107CgkJbGV0IHZsaXN0ID0gW107CgkJZm9yIChsZXQgcCA9IDE7IHAgPCBwYXJzZUludChwYWdlbnVtKSArIDE7IHArKykgewoJCQlsZXQgcGh0bWwgPSByZXF1ZXN0KHBhZ2V1cmwgKyAnL3BhZ2UvJyArIHBhZ2VudW0pOwoJCQlsZXQgbmV3X3ZvZF9saXN0ID0gW107CgkJCWxldCB2b2RMaXN0ID0gW107CgkJCXZvZExpc3QgPSBwZGZhKHBodG1sLCAnLnNpdGUtbWFpbiYmYXJ0aWNsZScpOwoJCQlmb3IgKGxldCBpID0gMDsgaSA8IHZvZExpc3QubGVuZ3RoOyBpKyspIHsKCQkJCWxldCBpdCA9IHZvZExpc3RbaV07CgkJCQlsZXQgcHRpdGxlID0gcGRmaChpdCwgJy5lbnRyeS10aXRsZSYmVGV4dCcpLnJlcGxhY2UoL1xcWyguKilcXF0vLCAnJDEnKTsKCQkJCWxldCBwdXJsID0gcGQoaXQsICcudmlkZW8tanMmJmRhdGEtYXBpcmVxJyk7CgkJCQluZXdfdm9kX2xpc3QucHVzaChwdGl0bGUgKyAnJCcgKyBwdXJsKTsKCQkJfQoJCQl2bGlzdCA9IHZsaXN0LmNvbmNhdChuZXdfdm9kX2xpc3QpOwoJCQl0cnkgewoJCQkJcGFnZW51bSA9IHBkKHBodG1sLCAnLm5hdi1wcmV2aW91cyYmYSYmaHJlZicpLnNwbGl0KCcvcGFnZS8nKVsxXTsKCQkJfSBjYXRjaChlKSB7fQoJCX0KCQlsZXQgdmxpc3QyID0gdmxpc3QucmV2ZXJzZSgpLmpvaW4oIiMiKTsKCQl2b2RfdGFiX2xpc3QucHVzaCh2bGlzdDIpOwoJCVZPRC52b2RfcGxheV9mcm9tID0gJ+mBk+mVv+WcqOe6vyc7CgkJVk9ELnZvZF9wbGF5X3VybCA9IHZvZF90YWJfbGlzdC5qb2luKCIkJCQiKTsKCWAsCgnmkJzntKI6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJdmFyIHdkID0gaW5wdXQuc3BsaXQoJz0nKVsxXTsKCQlsZXQgcGxheUtleXMgPSBPYmplY3QudmFsdWVzKGxpc3QpLmZpbHRlcihmdW5jdGlvbih4KSB7CgkJCXJldHVybiB4WzFdLmluY2x1ZGVzKHdkKTsKCQl9KTsKCQlsb2cocGxheUtleXMpOwoJCXBsYXlLZXlzLmZvckVhY2goZnVuY3Rpb24oaXQpIHsKCQkJZC5wdXNoKHsKCQkJCXRpdGxlOiBzdHJpcEh0bWxUYWcoaXRbMV0pLAoJCQkJaW1nOiAnaHR0cHM6Ly9zdGEuYW5pY2RuLmNvbS9wbGF5ZXJJbWcvOC5qcGcnLAoJCQkJZGVzYzogaXRbMl0sCgkJCQl1cmw6IGl0WzBdLAoJCQl9KTsKCQl9KTsKCQlzZXRSZXN1bHQoZCk7CglgLAp9
+567
View File
@@ -0,0 +1,567 @@
var rule = {
title: "路漫漫",
host: "https://www.lmm50.com",
url: "/vod/show/id/fyclassfyfilter.html",
searchUrl: '/vod/search/page/fypage/wd/**.html',
searchable: 2,
quickSearch: 0,
filterable: 1,
filter: {
"3": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"4": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"5": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"6": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"7": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}],
"8": [{
"key": "年代",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "更早",
"v": "/year/2014-1980"
}]
}, {
"key": "排序",
"name": "排序",
"value": [{
"n": "最近更新",
"v": "/by/time"
}, {
"n": "最高人气",
"v": "/by/hits"
}, {
"n": "最高评分",
"v": "/by/score"
}, {
"n": "最多点赞",
"v": "/by/up"
}]
}]
},
filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage",
filter_def: "",
headers: {
"User-Agent": "MOBILE_UA"
},
timeout: 5000,
class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影",
class_url: "6&7&8&3&4&5",
class_parse: "",
cate_exclude: "",
play_parse: true,
lazy: $js.toString(() => {
function getDAesString(token) {
eval(getCryptoJS());
var key = CryptoJS.enc.Utf8.parse("ejjooopppqqqrwww");
var iv = CryptoJS.enc.Utf8.parse("1348987635684651");
var token = CryptoJS.AES.decrypt(token, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
return token.toString(CryptoJS.enc.Utf8);
}
var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);
var url = html.url;
var from = html.from;
if (html.encrypt == "1") {
url = unescape(url);
} else if (html.encrypt == "2") {
url = unescape(base64Decode(url));
}
if (/\.mp4|\.m3u8|\.flv/.test(url)) {
input = {
parse: 0,
url: url.split("&")[0],
js: ''
};
} else {
var jsh = request(HOST + "/static/player/" + from + ".js", {
headers: {
Referer: input
},
}).match(/\.src\s*=\s*(.*?);/)[1];
//log(MY_HOME);
if (/type=/.test(jsh)) {
jsh = jsh
.replace(/[\+\s']/g, "")
.replace(/MacPlayer.Parse/, "")
.replace(/MacPlayer.PlayUrl/, url)
.replace(/window.location.href/, input);
var playht = fetch(jsh, {
headers: {
Referer: HOST
}
});
} else {
jsh = jsh
.replace(/[\+\s']/g, "")
.replace(/MacPlayer.Parse/, "")
.replace(/MacPlayer.PlayUrl/, url)
.replace(/window.location.href/, input);
jsh = JSON.parse(
fetch(jsh, {
headers: {
Referer: HOST
},
onlyHeaders: true
})
).url;
var playht = fetch(jsh, {
headers: {
Referer: HOST
}
});
}
var postapi = jsh.match(/^(.*?\/\/.*?\/.*?\/)/)[1];
var posturl = postapi + playht.match(/post\("(.*?)"/)[1];
if (/act\s*=/.test(playht)) {
var vid = playht.match(/vid\s*=\s*"(.*?)"/)[1];
var t = playht.match(/var\s*t\s*=\s*"(.*?)"/)[1];
var token = playht.match(/token\s*=\s*"(.*?)"/)[1];
var act = playht.match(/act\s*=\s*"(.*?)"/)[1];
var play = playht.match(/play\s*=\s*"(.*?)"/)[1];
token = getDAesString(token);
var data = JSON.parse(
post(posturl, {
headers: {
Referer: HOST
},
body: {
vid: vid,
t: t,
token: token,
act: act,
play: play,
},
timeout: 5000
})
);
input = {
parse: 0,
url: data.url,
js: ''
};
} else {
var key = "";
playht.match(/var (\w+)="(.*?)";/g).forEach(function(list) {
key += list.match(/"(.*?)"/)[1];
});
const bodys = JSON.parse(
playht
.match(/post\(.*?,(.*?),\n/)[1]
.replace(/"keyyy"\s*:\s*''.*?''/, '"keyyy" : "' + key + '"')
);
var data = JSON.parse(
post(posturl, {
headers: {
Referer: HOST
},
body: bodys
})
);
if (data.ext == "xgplayer") {
var dataurl =
"https://yun.366day.site/mp4hls/xgplayer.php?vid=" + data.url;
var video = fetch(dataurl, {
headers: {
Referer: jsh
}
}).match(
/"url": "(.*?)"/
)[1];
input = {
parse: 0,
url: video,
js: ''
};
} else if (data.ext == "hls" || data.ext == "hls_list") {
input = {
parse: 0,
url: decodeURIComponent(data.url),
js: ''
};
} else {
input = {
parse: 0,
url: data.url,
js: ''
};
}
}
}
}),
double: false,
推荐: "*",
一级: ".video-img-box;h6.title&&Text;.lazyload&&data-src;.label&&Text;a&&href",
二级: {
title: ".page-title&&Text;.tag-link&&Text",
img: ".module-item-pic&&.lazyload&&src",
desc: ".video-info-items:eq(3)&&Text;.video-info-items:eq(2)&&Text;;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text",
content: ".video-info-content&&Text",
tabs: ".module-tab-item.tab-item",
lists: ".module-player-list:eq(#id) a",
tab_text: "body&&Text",
list_text: "body&&Text",
list_url: "a&&href"
},
detailUrl: "",
搜索: "*"
}
+1142
View File
@@ -0,0 +1,1142 @@
muban.vfed.二级.title = 'h1&&Text;.fed-col-md3--span:eq(0)&&Text';
muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text';
var rule = {
title: '去看吧',
模板: 'vfed',
host: 'https://qkan8.com',
// url: '/index.php/vod/show/id/fyclass/page/fypage.html',
url: '/index.php/vod/show/id/fyclassfyfilter.html',
filterable: 1, //是否启用分类筛选,
filter_url: '{{fl.area}}{{fl.by}}{{fl.class}}/page/fypage{{fl.year}}',
filter: {
"33": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}],
"21": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "大陆",
"v": "/area/大陆"
}, {
"n": "美国",
"v": "/area/美国"
}, {
"n": "韩国",
"v": "/area/韩国"
}, {
"n": "日本",
"v": "/area/日本"
}, {
"n": "泰国",
"v": "/area/泰国"
}, {
"n": "新加坡",
"v": "/area/新加坡"
}, {
"n": "马来西亚",
"v": "/area/马来西亚"
}, {
"n": "印度",
"v": "/area/印度"
}, {
"n": "英国",
"v": "/area/英国"
}, {
"n": "法国",
"v": "/area/法国"
}, {
"n": "加拿大",
"v": "/area/加拿大"
}, {
"n": "西班牙",
"v": "/area/西班牙"
}, {
"n": "俄罗斯",
"v": "/area/俄罗斯"
}, {
"n": "其它",
"v": "/area/其它"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}],
"50": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "大陆",
"v": "/area/大陆"
}, {
"n": "美国",
"v": "/area/美国"
}, {
"n": "韩国",
"v": "/area/韩国"
}, {
"n": "日本",
"v": "/area/日本"
}, {
"n": "泰国",
"v": "/area/泰国"
}, {
"n": "新加坡",
"v": "/area/新加坡"
}, {
"n": "马来西亚",
"v": "/area/马来西亚"
}, {
"n": "印度",
"v": "/area/印度"
}, {
"n": "英国",
"v": "/area/英国"
}, {
"n": "法国",
"v": "/area/法国"
}, {
"n": "加拿大",
"v": "/area/加拿大"
}, {
"n": "西班牙",
"v": "/area/西班牙"
}, {
"n": "俄罗斯",
"v": "/area/俄罗斯"
}, {
"n": "其它",
"v": "/area/其它"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}],
"24": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "大陆",
"v": "/area/大陆"
}, {
"n": "美国",
"v": "/area/美国"
}, {
"n": "韩国",
"v": "/area/韩国"
}, {
"n": "日本",
"v": "/area/日本"
}, {
"n": "泰国",
"v": "/area/泰国"
}, {
"n": "新加坡",
"v": "/area/新加坡"
}, {
"n": "马来西亚",
"v": "/area/马来西亚"
}, {
"n": "印度",
"v": "/area/印度"
}, {
"n": "英国",
"v": "/area/英国"
}, {
"n": "法国",
"v": "/area/法国"
}, {
"n": "加拿大",
"v": "/area/加拿大"
}, {
"n": "西班牙",
"v": "/area/西班牙"
}, {
"n": "俄罗斯",
"v": "/area/俄罗斯"
}, {
"n": "其它",
"v": "/area/其它"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}],
"22": [{
"key": "class",
"name": "类型",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "搞笑",
"v": "/class/搞笑"
}, {
"n": "经典",
"v": "/class/经典"
}, {
"n": "热血",
"v": "/class/热血"
}, {
"n": "催泪",
"v": "/class/催泪"
}, {
"n": "治愈",
"v": "/class/治愈"
}, {
"n": "猎奇",
"v": "/class/猎奇"
}, {
"n": "励志",
"v": "/class/励志"
}, {
"n": "战斗",
"v": "/class/战斗"
}, {
"n": "后宫",
"v": "/class/后宫"
}, {
"n": "机战",
"v": "/class/机战"
}, {
"n": "恋爱",
"v": "/class/恋爱"
}, {
"n": "百合",
"v": "/class/百合"
}, {
"n": "科幻",
"v": "/class/科幻"
}, {
"n": "奇幻",
"v": "/class/奇幻"
}, {
"n": "推理",
"v": "/class/推理"
}, {
"n": "校园",
"v": "/class/校园"
}, {
"n": "运动",
"v": "/class/运动"
}, {
"n": "魔法",
"v": "/class/魔法"
}, {
"n": "历史",
"v": "/class/历史"
}, {
"n": "伪娘",
"v": "/class/伪娘"
}, {
"n": "美少女",
"v": "/class/美少女"
}, {
"n": "萝莉",
"v": "/class/萝莉"
}, {
"n": "亲子",
"v": "/class/亲子"
}, {
"n": "青春",
"v": "/class/青春"
}, {
"n": "冒险",
"v": "/class/冒险"
}, {
"n": "竞技",
"v": "/class/竞技"
}]
}, {
"key": "area",
"name": "地区",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "日本",
"v": "/area/日本"
}, {
"n": "欧美",
"v": "/area/欧美"
}, {
"n": "其他",
"v": "/area/其他"
}]
}, {
"key": "year",
"name": "年代",
"value": [{
"n": "全部",
"v": ""
}, {
"n": "2026",
"v": "/year/2026"
}, {
"n": "2025",
"v": "/year/2025"
}, {
"n": "2024",
"v": "/year/2024"
}, {
"n": "2023",
"v": "/year/2023"
}, {
"n": "2022",
"v": "/year/2022"
}, {
"n": "2021",
"v": "/year/2021"
}, {
"n": "2020",
"v": "/year/2020"
}, {
"n": "2019",
"v": "/year/2019"
}, {
"n": "2018",
"v": "/year/2018"
}, {
"n": "2017",
"v": "/year/2017"
}, {
"n": "2016",
"v": "/year/2016"
}, {
"n": "2015",
"v": "/year/2015"
}, {
"n": "2014",
"v": "/year/2014"
}, {
"n": "2013",
"v": "/year/2013"
}, {
"n": "2012",
"v": "/year/2012"
}, {
"n": "2011",
"v": "/year/2011"
}, {
"n": "2010",
"v": "/year/2010"
}, {
"n": "2009",
"v": "/year/2009"
}, {
"n": "2008",
"v": "/year/2008"
}, {
"n": "2007",
"v": "/year/2007"
}, {
"n": "2006",
"v": "/year/2006"
}, {
"n": "2005",
"v": "/year/2005"
}, {
"n": "2004",
"v": "/year/2004"
}, {
"n": "2003",
"v": "/year/2003"
}, {
"n": "2002",
"v": "/year/2002"
}, {
"n": "2001",
"v": "/year/2001"
}, {
"n": "2000",
"v": "/year/2000"
}, {
"n": "1999",
"v": "/year/1999"
}, {
"n": "1998",
"v": "/year/1998"
}]
}, {
"key": "by",
"name": "排序",
"value": [{
"n": "时间",
"v": "/by/time"
}, {
"n": "人气",
"v": "/by/hits"
}, {
"n": "评分",
"v": "/by/score"
}]
}]
},
class_parse: '.fed-pops-list:eq(0)&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html',
}
+5310
View File
@@ -0,0 +1,5310 @@
{
"class": [
{
"type_name": "沙雕动漫",
"type_id": "一口气沙雕动漫"
},
{
"type_name": "纪录片",
"type_id": "纪录片超清"
},
{
"type_name": "演唱会",
"type_id": "演唱会超清"
},
{
"type_name": "美食",
"type_id": "美食超清"
},
{
"type_name": "食谱",
"type_id": "食谱"
},
{
"type_name": "体育",
"type_id": "体育超清"
},
{
"type_name": "球星",
"type_id": "球星"
},
{
"type_name": "旅游",
"type_id": "旅游"
},
{
"type_name": "风景",
"type_id": "风景4K"
},
{
"type_name": "说案",
"type_id": "说案"
},
{
"type_name": "知名UP主",
"type_id": "知名UP主"
},
{
"type_name": "探索发现",
"type_id": "探索发现超清"
},
{
"type_name": "鬼畜",
"type_id": "鬼畜"
},
{
"type_name": "搞笑",
"type_id": "搞笑超清"
},
{
"type_name": "儿童",
"type_id": "儿童超清"
},
{
"type_name": "动物世界",
"type_id": "动物世界超清"
},
{
"type_name": "相声小品",
"type_id": "相声小品超清"
},
{
"type_name": "戏曲",
"type_id": "戏曲"
},
{
"type_name": "解说",
"type_id": "解说"
},
{
"type_name": "演讲",
"type_id": "演讲"
},
{
"type_name": "小姐姐",
"type_id": "小姐姐超清"
},
{
"type_name": "荒野求生",
"type_id": "荒野求生超清"
},
{
"type_name": "健身",
"type_id": "健身"
},
{
"type_name": "帕梅拉",
"type_id": "帕梅拉"
},
{
"type_name": "太极拳",
"type_id": "太极拳"
},
{
"type_name": "广场舞",
"type_id": "广场舞"
},
{
"type_name": "舞蹈",
"type_id": "舞蹈"
},
{
"type_name": "音乐",
"type_id": "音乐"
},
{
"type_name": "歌曲",
"type_id": "歌曲"
},
{
"type_name": "MV",
"type_id": "MV4K"
},
{
"type_name": "舞曲",
"type_id": "舞曲超清"
},
{
"type_name": "4K",
"type_id": "4K"
},
{
"type_name": "电影",
"type_id": "电影"
},
{
"type_name": "电视剧",
"type_id": "电视剧"
},
{
"type_name": "白噪音",
"type_id": "白噪音超清"
},
{
"type_name": "考公考证",
"type_id": "考公考证"
},
{
"type_name": "平面设计教学",
"type_id": "平面设计教学"
},
{
"type_name": "软件教程",
"type_id": "软件教程"
},
{
"type_name": "Windows",
"type_id": "Windows"
}
],
"filters": {
"考公考证": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"演唱会超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "演唱会超清"
},
{
"n": "A阿杜",
"v": "阿杜演唱会超清"
},
{
"n": "A阿黛尔",
"v": "阿黛尔演唱会超清"
},
{
"n": "BBeyond",
"v": "Beyond演唱会超清"
},
{
"n": "BBy2",
"v": "By2演唱会超清"
},
{
"n": "BBIGBANG",
"v": "BIGBANG演唱会超清"
},
{
"n": "B布兰妮",
"v": "布兰妮演唱会超清"
},
{
"n": "B坂井泉水",
"v": "坂井泉水演唱会超清"
},
{
"n": "C陈奕迅",
"v": "陈奕迅演唱会超清"
},
{
"n": "C蔡依林",
"v": "蔡依林演唱会超清"
},
{
"n": "C初音未来",
"v": "初音未来演唱会超清"
},
{
"n": "C蔡健雅",
"v": "蔡健雅演唱会超清"
},
{
"n": "C陈小春",
"v": "陈小春演唱会超清"
},
{
"n": "C草蜢",
"v": "草蜢演唱会超清"
},
{
"n": "C陈慧娴",
"v": "陈慧娴演唱会超清"
},
{
"n": "C崔健",
"v": "崔健演唱会超清"
},
{
"n": "C仓木麻衣",
"v": "仓木麻衣演唱会超清"
},
{
"n": "D戴荃",
"v": "戴荃演唱会超清"
},
{
"n": "D动力火车",
"v": "动力火车演唱会超清"
},
{
"n": "D邓丽君",
"v": "邓丽君演唱会超清"
},
{
"n": "D丁当",
"v": "丁当演唱会超清"
},
{
"n": "D刀郎",
"v": "刀郎演唱会超清"
},
{
"n": "D邓紫棋",
"v": "邓紫棋演唱会超清"
},
{
"n": "D戴佩妮",
"v": "戴佩妮演唱会超清"
},
{
"n": "D邓丽君",
"v": "邓丽君演唱会超清"
},
{
"n": "F飞儿乐队",
"v": "飞儿乐队演唱会超清"
},
{
"n": "F费玉清",
"v": "费玉清演唱会超清"
},
{
"n": "F费翔",
"v": "费翔演唱会超清"
},
{
"n": "F方大同",
"v": "方大同演唱会超清"
},
{
"n": "F房东的猫",
"v": "房东的猫演唱会超清"
},
{
"n": "F凤飞飞",
"v": "凤飞飞演唱会超清"
},
{
"n": "F凤凰传奇",
"v": "凤凰传奇演唱会超清"
},
{
"n": "G郭采洁",
"v": "郭采洁演唱会超清"
},
{
"n": "G光良",
"v": "光良演唱会超清"
},
{
"n": "G郭静",
"v": "郭静演唱会超清"
},
{
"n": "G郭富城",
"v": "郭富城演唱会超清"
},
{
"n": "H胡彦斌",
"v": "胡彦斌演唱会超清"
},
{
"n": "H胡夏",
"v": "胡夏演唱会超清"
},
{
"n": "H韩红",
"v": "韩红演唱会超清"
},
{
"n": "H黄品源",
"v": "黄品源演唱会超清"
},
{
"n": "H黄小琥",
"v": "黄小琥演唱会超清"
},
{
"n": "H花儿乐队",
"v": "花儿乐队演唱会超清"
},
{
"n": "H黄家强",
"v": "黄家强演唱会超清"
},
{
"n": "H后街男孩",
"v": "后街男孩演唱会超清"
},
{
"n": "J经典老歌",
"v": "经典老歌演唱会超清"
},
{
"n": "J贾斯丁比伯",
"v": "贾斯丁比伯演唱会超清"
},
{
"n": "J金池",
"v": "金池演唱会超清"
},
{
"n": "J金志文",
"v": "金志文演唱会超清"
},
{
"n": "J焦迈奇",
"v": "焦迈奇演唱会超清"
},
{
"n": "K筷子兄弟",
"v": "筷子兄弟演唱会超清"
},
{
"n": "L李玟",
"v": "李玟演唱会超清"
},
{
"n": "L林忆莲",
"v": "林忆莲演唱会超清"
},
{
"n": "L李克勤",
"v": "李克勤演唱会超清"
},
{
"n": "L刘宪华",
"v": "刘宪华演唱会超清"
},
{
"n": "L李圣杰",
"v": "李圣杰演唱会超清"
},
{
"n": "L林宥嘉",
"v": "林宥嘉演唱会超清"
},
{
"n": "L梁静茹",
"v": "梁静茹演唱会超清"
},
{
"n": "L李健",
"v": "李健演唱会超清"
},
{
"n": "L林俊杰",
"v": "林俊杰演唱会超清"
},
{
"n": "L李玉刚",
"v": "李玉刚演唱会超清"
},
{
"n": "L林志炫",
"v": "林志炫演唱会超清"
},
{
"n": "L李荣浩",
"v": "李荣浩演唱会超清"
},
{
"n": "L李宇春",
"v": "李宇春演唱会超清"
},
{
"n": "L洛天依",
"v": "洛天依演唱会超清"
},
{
"n": "L林子祥",
"v": "林子祥演唱会超清"
},
{
"n": "L李宗盛",
"v": "李宗盛演唱会超清"
},
{
"n": "L黎明",
"v": "黎明演唱会超清"
},
{
"n": "L刘德华",
"v": "刘德华演唱会超清"
},
{
"n": "L罗大佑",
"v": "罗大佑演唱会超清"
},
{
"n": "L林肯公园",
"v": "林肯公园演唱会超清"
},
{
"n": "LLadyGaga",
"v": "LadyGaga演唱会超清"
},
{
"n": "L旅行团乐队",
"v": "旅行团乐队演唱会超清"
},
{
"n": "M莫文蔚",
"v": "莫文蔚演唱会超清"
},
{
"n": "M毛不易",
"v": "毛不易演唱会超清"
},
{
"n": "M梅艳芳",
"v": "梅艳芳演唱会超清"
},
{
"n": "M迈克尔杰克逊",
"v": "迈克尔杰克逊演唱会超清"
},
{
"n": "N南拳妈妈",
"v": "南拳妈妈演唱会超清"
},
{
"n": "P朴树",
"v": "朴树演唱会超清"
},
{
"n": "Q齐秦",
"v": "齐秦演唱会超清"
},
{
"n": "Q青鸟飞鱼",
"v": "青鸟飞鱼演唱会超清"
},
{
"n": "R容祖儿",
"v": "容祖儿演唱会超清"
},
{
"n": "R任贤齐",
"v": "任贤齐演唱会超清"
},
{
"n": "S水木年华",
"v": "水木年华演唱会超清"
},
{
"n": "S孙燕姿",
"v": "孙燕姿演唱会超清"
},
{
"n": "S苏打绿",
"v": "苏打绿演唱会超清"
},
{
"n": "SSHE",
"v": "SHE演唱会超清"
},
{
"n": "S孙楠",
"v": "孙楠演唱会超清"
},
{
"n": "T陶喆",
"v": "陶喆演唱会超清"
},
{
"n": "T谭咏麟",
"v": "谭咏麟演唱会超清"
},
{
"n": "T田馥甄",
"v": "田馥甄演唱会超清"
},
{
"n": "T谭维维",
"v": "谭维维演唱会超清"
},
{
"n": "T逃跑计划",
"v": "逃跑计划演唱会超清"
},
{
"n": "T田震",
"v": "田震演唱会超清"
},
{
"n": "T谭晶",
"v": "谭晶演唱会超清"
},
{
"n": "T屠洪刚",
"v": "屠洪刚演唱会超清"
},
{
"n": "T泰勒·斯威夫特",
"v": "泰勒·斯威夫特演唱会超清"
},
{
"n": "W王力宏",
"v": "王力宏演唱会超清"
},
{
"n": "W王杰",
"v": "王杰演唱会超清"
},
{
"n": "W吴克群",
"v": "吴克群演唱会超清"
},
{
"n": "W王心凌",
"v": "王心凌演唱会超清"
},
{
"n": "W王靖雯",
"v": "好声音王靖雯演唱会超清"
},
{
"n": "W汪峰",
"v": "汪峰演唱会超清"
},
{
"n": "W伍佰",
"v": "伍佰演唱会超清"
},
{
"n": "W王菲",
"v": "王菲演唱会超清"
},
{
"n": "W五月天",
"v": "五月天演唱会超清"
},
{
"n": "W汪苏泷",
"v": "汪苏泷演唱会超清"
},
{
"n": "X徐佳莹",
"v": "徐佳莹演唱会超清"
},
{
"n": "X弦子",
"v": "弦子演唱会超清"
},
{
"n": "X萧亚轩",
"v": "萧亚轩演唱会超清"
},
{
"n": "X许巍",
"v": "许巍演唱会超清"
},
{
"n": "X薛之谦",
"v": "薛之谦演唱会超清"
},
{
"n": "X许嵩",
"v": "许嵩演唱会超清"
},
{
"n": "X小虎队",
"v": "小虎队演唱会超清"
},
{
"n": "X萧敬腾",
"v": "萧敬腾演唱会超清"
},
{
"n": "X谢霆锋",
"v": "谢霆锋演唱会超清"
},
{
"n": "X徐小凤",
"v": "徐小凤演唱会超清"
},
{
"n": "X信乐队",
"v": "信乐队演唱会超清"
},
{
"n": "Y夜愿乐队",
"v": "夜愿乐队演唱会超清"
},
{
"n": "Y羽泉",
"v": "羽泉演唱会超清"
},
{
"n": "Y郁可唯",
"v": "郁可唯演唱会超清"
},
{
"n": "Y叶倩文",
"v": "叶倩文演唱会超清"
},
{
"n": "Y杨坤",
"v": "杨坤演唱会超清"
},
{
"n": "Y庾澄庆",
"v": "庾澄庆演唱会超清"
},
{
"n": "Y尤长靖",
"v": "尤长靖演唱会超清"
},
{
"n": "Y易烊千玺",
"v": "易烊千玺演唱会超清"
},
{
"n": "Y袁娅维",
"v": "袁娅维演唱会超清"
},
{
"n": "Y杨丞琳",
"v": "杨丞琳演唱会超清"
},
{
"n": "Y杨千嬅",
"v": "杨千嬅演唱会超清"
},
{
"n": "Y杨宗纬",
"v": "杨宗纬演唱会超清"
},
{
"n": "Z郑秀文",
"v": "郑秀文演唱会超清"
},
{
"n": "Z周杰伦",
"v": "周杰伦演唱会超清"
},
{
"n": "Z张学友",
"v": "张学友演唱会超清"
},
{
"n": "Z张信哲",
"v": "张信哲演唱会超清"
},
{
"n": "Z张宇",
"v": "张宇演唱会超清"
},
{
"n": "Z周华健",
"v": "周华健演唱会超清"
},
{
"n": "Z张韶涵",
"v": "张韶涵演唱会超清"
},
{
"n": "Z周深",
"v": "周深演唱会超清"
},
{
"n": "Z纵贯线",
"v": "纵贯线演唱会超清"
},
{
"n": "Z赵雷",
"v": "赵雷演唱会超清"
},
{
"n": "Z周传雄",
"v": "周传雄演唱会超清"
},
{
"n": "Z张国荣",
"v": "张国荣演唱会超清"
},
{
"n": "Z周慧敏",
"v": "周慧敏演唱会超清"
},
{
"n": "Z张惠妹",
"v": "张惠妹演唱会超清"
},
{
"n": "Z周笔畅",
"v": "周笔畅演唱会超清"
},
{
"n": "Z郑中基",
"v": "郑中基演唱会超清"
},
{
"n": "Z张艺兴",
"v": "张艺兴演唱会超清"
},
{
"n": "Z张震岳",
"v": "张震岳演唱会超清"
},
{
"n": "Z张雨生",
"v": "张雨生演唱会超清"
},
{
"n": "Z郑智化",
"v": "郑智化演唱会超清"
},
{
"n": "Z卓依婷",
"v": "卓依婷演唱会超清"
},
{
"n": "Z中岛美雪",
"v": "中岛美雪演唱会超清"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"探索发现超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"电影": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"鬼畜": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"一口气沙雕动漫": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"说案": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "说案"
},
{
"n": "汤圆",
"v": "汤圆说案"
},
{
"n": "唐唐",
"v": "唐唐说案"
},
{
"n": "罗翔",
"v": "罗翔说刑法"
},
{
"n": "何家弘",
"v": "何家弘说案"
},
{
"n": "韩诺",
"v": "韩诺说案"
},
{
"n": "老V",
"v": "老V说案"
},
{
"n": "禁播档案‼️",
"v": "禁播档案"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"演讲": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "全部演讲4K"
},
{
"n": "A艾跃进",
"v": "艾跃进演讲4K"
},
{
"n": "C超级演说家",
"v": "超级演说家4K"
},
{
"n": "D电影",
"v": "电影演讲4K"
},
{
"n": "D典籍里的中国",
"v": "典籍里的中国4K"
},
{
"n": "G感动中国",
"v": "感动中国4K"
},
{
"n": "G郭继承",
"v": "郭继承演讲4K"
},
{
"n": "H华春莹",
"v": "华春莹演讲4K"
},
{
"n": "L雷军",
"v": "雷军演讲4K"
},
{
"n": "L罗翔",
"v": "罗翔演讲4K"
},
{
"n": "R任正非",
"v": "任正非演讲4K"
},
{
"n": "TED",
"v": "TED演讲4K"
},
{
"n": "W汪文斌",
"v": "汪文斌演讲4K"
},
{
"n": "Y一刻",
"v": "一刻演讲4K"
},
{
"n": "Z赵立坚",
"v": "赵立坚演讲4K"
},
{
"n": "Z郑强",
"v": "郑强演讲4K"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"解说": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "解说"
},
{
"n": "电影",
"v": "电影解说"
},
{
"n": "电视",
"v": "电视解说"
},
{
"n": "历史",
"v": "历史解说"
},
{
"n": "动漫",
"v": "动漫解说"
},
{
"n": "小说",
"v": "小说解说"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"风景4K": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "风景4K"
},
{
"n": "A澳门",
"v": "澳门风景4K"
},
{
"n": "A安徽",
"v": "安徽风景4K"
},
{
"n": "B布达拉宫",
"v": "布达拉宫风景4K"
},
{
"n": "B北京",
"v": "北京风景4K"
},
{
"n": "C重庆",
"v": "重庆风景4K"
},
{
"n": "C草原",
"v": "草原风景4K"
},
{
"n": "D大海",
"v": "大海风景4K"
},
{
"n": "F福建",
"v": "福建风景4K"
},
{
"n": "G广东",
"v": "广东风景4K"
},
{
"n": "G广西",
"v": "广西风景4K"
},
{
"n": "G贵州",
"v": "贵州风景4K"
},
{
"n": "G甘肃",
"v": "甘肃风景4K"
},
{
"n": "H海南",
"v": "海南风景4K"
},
{
"n": "H河北",
"v": "河北风景4K"
},
{
"n": "H河南",
"v": "河南风景4K"
},
{
"n": "H湖北",
"v": "湖北风景4K"
},
{
"n": "H湖南",
"v": "湖南风景4K"
},
{
"n": "H黑龙江",
"v": "黑龙江风景4K"
},
{
"n": "J吉林",
"v": "吉林风景4K"
},
{
"n": "J江苏",
"v": "江苏风景4K"
},
{
"n": "J江西",
"v": "江西风景4K"
},
{
"n": "L辽宁",
"v": "辽宁风景4K"
},
{
"n": "M民宿",
"v": "民宿风景4K"
},
{
"n": "N内蒙古",
"v": "内蒙古风景4K"
},
{
"n": "N宁夏",
"v": "宁夏风景4K"
},
{
"n": "Q青海",
"v": "青海风景4K"
},
{
"n": "S上海",
"v": "上海风景4K"
},
{
"n": "S陕西",
"v": "陕西风景4K"
},
{
"n": "S四川",
"v": "四川风景4K"
},
{
"n": "S山西",
"v": "山西风景4K"
},
{
"n": "S山东",
"v": "山东风景4K"
},
{
"n": "T天津",
"v": "天津风景4K"
},
{
"n": "T台湾",
"v": "台湾风景4K"
},
{
"n": "T天空",
"v": "天空风景4K"
},
{
"n": "X西湖",
"v": "西湖风景4K"
},
{
"n": "X西藏",
"v": "西藏风景4K"
},
{
"n": "X新疆",
"v": "新疆风景4K"
},
{
"n": "X香港",
"v": "香港风景4K"
},
{
"n": "Y云南",
"v": "云南风景4K"
},
{
"n": "Z浙江",
"v": "浙江风景4K"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"MV4K": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "MV4K"
},
{
"n": "A阿杜",
"v": "阿杜MV4K"
},
{
"n": "A阿黛尔",
"v": "阿黛尔MV4K"
},
{
"n": "BBeyond",
"v": "BeyondMV4K"
},
{
"n": "BBy2",
"v": "By2MV4K"
},
{
"n": "BBIGBANG",
"v": "BIGBANGMV4K"
},
{
"n": "B布兰妮",
"v": "布兰妮MV4K"
},
{
"n": "C陈奕迅",
"v": "陈奕迅MV4K"
},
{
"n": "C蔡依林",
"v": "蔡依林MV4K"
},
{
"n": "C初音未来",
"v": "初音未来MV4K"
},
{
"n": "C蔡健雅",
"v": "蔡健雅MV4K"
},
{
"n": "C陈小春",
"v": "陈小春MV4K"
},
{
"n": "C草蜢",
"v": "草蜢MV4K"
},
{
"n": "C陈慧娴",
"v": "陈慧娴MV4K"
},
{
"n": "C崔健",
"v": "崔健MV4K"
},
{
"n": "C仓木麻衣",
"v": "仓木麻衣MV4K"
},
{
"n": "D戴荃",
"v": "戴荃MV4K"
},
{
"n": "D动力火车",
"v": "动力火车MV4K"
},
{
"n": "D邓丽君",
"v": "邓丽君MV4K"
},
{
"n": "D丁当",
"v": "丁当MV4K"
},
{
"n": "D刀郎",
"v": "刀郎MV4K"
},
{
"n": "D邓紫棋",
"v": "邓紫棋MV4K"
},
{
"n": "D戴佩妮",
"v": "戴佩妮MV4K"
},
{
"n": "D邓丽君",
"v": "邓丽君MV4K"
},
{
"n": "F飞儿乐队",
"v": "飞儿乐队MV4K"
},
{
"n": "F费玉清",
"v": "费玉清MV4K"
},
{
"n": "F费翔",
"v": "费翔MV4K"
},
{
"n": "F方大同",
"v": "方大同MV4K"
},
{
"n": "F房东的猫",
"v": "房东的猫MV4K"
},
{
"n": "F凤飞飞",
"v": "凤飞飞MV4K"
},
{
"n": "F凤凰传奇",
"v": "凤凰传奇MV4K"
},
{
"n": "G古风歌曲",
"v": "古风歌曲4K"
},
{
"n": "G国乐大典",
"v": "国乐大典4K"
},
{
"n": "G郭采洁",
"v": "郭采洁MV4K"
},
{
"n": "G光良",
"v": "光良MV4K"
},
{
"n": "G郭静",
"v": "郭静MV4K"
},
{
"n": "G郭富城",
"v": "郭富城MV4K"
},
{
"n": "H胡彦斌",
"v": "胡彦斌MV4K"
},
{
"n": "H胡夏",
"v": "胡夏MV4K"
},
{
"n": "H韩红",
"v": "韩红MV4K"
},
{
"n": "H黄品源",
"v": "黄品源MV4K"
},
{
"n": "H黄小琥",
"v": "黄小琥MV4K"
},
{
"n": "H花儿乐队",
"v": "花儿乐队MV4K"
},
{
"n": "H黄家强",
"v": "黄家强MV4K"
},
{
"n": "H后街男孩",
"v": "后街男孩MV4K"
},
{
"n": "J经典老歌",
"v": "经典老歌4K"
},
{
"n": "J贾斯丁比伯",
"v": "贾斯丁比伯MV4K"
},
{
"n": "J金池",
"v": "金池MV4K"
},
{
"n": "J金志文",
"v": "金志文MV4K"
},
{
"n": "J焦迈奇",
"v": "焦迈奇MV4K"
},
{
"n": "K筷子兄弟",
"v": "筷子兄弟MV4K"
},
{
"n": "L李玟",
"v": "李玟MV4K"
},
{
"n": "L林忆莲",
"v": "林忆莲MV4K"
},
{
"n": "L李克勤",
"v": "李克勤MV4K"
},
{
"n": "L刘宪华",
"v": "刘宪华MV4K"
},
{
"n": "L李圣杰",
"v": "李圣杰MV4K"
},
{
"n": "L林宥嘉",
"v": "林宥嘉MV4K"
},
{
"n": "L梁静茹",
"v": "梁静茹MV4K"
},
{
"n": "L李健",
"v": "李健MV4K"
},
{
"n": "L林俊杰",
"v": "林俊杰MV4K"
},
{
"n": "L李玉刚",
"v": "李玉刚MV4K"
},
{
"n": "L林志炫",
"v": "林志炫MV4K"
},
{
"n": "L李荣浩",
"v": "李荣浩MV4K"
},
{
"n": "L李宇春",
"v": "李宇春MV4K"
},
{
"n": "L洛天依",
"v": "洛天依MV4K"
},
{
"n": "L林子祥",
"v": "林子祥MV4K"
},
{
"n": "L李宗盛",
"v": "李宗盛MV4K"
},
{
"n": "L黎明",
"v": "黎明MV4K"
},
{
"n": "L刘德华",
"v": "刘德华MV4K"
},
{
"n": "L罗大佑",
"v": "罗大佑MV4K"
},
{
"n": "L林肯公园",
"v": "林肯公园MV4K"
},
{
"n": "LLadyGaga",
"v": "LadyGagaMV4K"
},
{
"n": "L旅行团乐队",
"v": "旅行团乐队MV4K"
},
{
"n": "M莫文蔚",
"v": "莫文蔚MV4K"
},
{
"n": "M毛不易",
"v": "毛不易MV4K"
},
{
"n": "M梅艳芳",
"v": "梅艳芳MV4K"
},
{
"n": "M迈克尔杰克逊",
"v": "迈克尔杰克逊MV4K"
},
{
"n": "N南拳妈妈",
"v": "南拳妈妈MV4K"
},
{
"n": "P朴树",
"v": "朴树MV4K"
},
{
"n": "Q齐秦",
"v": "齐秦MV4K"
},
{
"n": "Q青鸟飞鱼",
"v": "青鸟飞鱼MV4K"
},
{
"n": "R容祖儿",
"v": "容祖儿MV4K"
},
{
"n": "R热歌",
"v": "热歌MV4K"
},
{
"n": "R任贤齐",
"v": "任贤齐MV4K"
},
{
"n": "S水木年华",
"v": "水木年华MV4K"
},
{
"n": "S孙燕姿",
"v": "孙燕姿MV4K"
},
{
"n": "S苏打绿",
"v": "苏打绿MV4K"
},
{
"n": "SSHE",
"v": "SHEMV4K"
},
{
"n": "S孙楠",
"v": "孙楠MV4K"
},
{
"n": "T陶喆",
"v": "陶喆MV4K"
},
{
"n": "T谭咏麟",
"v": "谭咏麟MV4K"
},
{
"n": "T田馥甄",
"v": "田馥甄MV4K"
},
{
"n": "T谭维维",
"v": "谭维维MV4K"
},
{
"n": "T逃跑计划",
"v": "逃跑计划MV4K"
},
{
"n": "T田震",
"v": "田震MV4K"
},
{
"n": "T谭晶",
"v": "谭晶MV4K"
},
{
"n": "T屠洪刚",
"v": "屠洪刚MV4K"
},
{
"n": "T泰勒·斯威夫特",
"v": "泰勒·斯威夫特MV4K"
},
{
"n": "W王力宏",
"v": "王力宏MV4K"
},
{
"n": "W王杰",
"v": "王杰MV4K"
},
{
"n": "W吴克群",
"v": "吴克群MV4K"
},
{
"n": "W王心凌",
"v": "王心凌MV4K"
},
{
"n": "W汪峰",
"v": "汪峰MV4K"
},
{
"n": "W伍佰",
"v": "伍佰MV4K"
},
{
"n": "W王菲",
"v": "王菲MV4K"
},
{
"n": "W五月天",
"v": "五月天MV4K"
},
{
"n": "W汪苏泷",
"v": "汪苏泷MV4K"
},
{
"n": "X徐佳莹",
"v": "徐佳莹MV4K"
},
{
"n": "X弦子",
"v": "弦子MV4K"
},
{
"n": "X萧亚轩",
"v": "萧亚轩MV4K"
},
{
"n": "X许巍",
"v": "许巍MV4K"
},
{
"n": "X薛之谦",
"v": "薛之谦MV4K"
},
{
"n": "X许嵩",
"v": "许嵩MV4K"
},
{
"n": "X小虎队",
"v": "小虎队MV4K"
},
{
"n": "X萧敬腾",
"v": "萧敬腾MV4K"
},
{
"n": "X谢霆锋",
"v": "谢霆锋MV4K"
},
{
"n": "X徐小凤",
"v": "徐小凤MV4K"
},
{
"n": "X信乐队",
"v": "信乐队MV4K"
},
{
"n": "Y夜愿乐队",
"v": "夜愿乐队MV4K"
},
{
"n": "Y原创音乐",
"v": "原创音乐MV4K"
},
{
"n": "Y羽泉",
"v": "羽泉MV4K"
},
{
"n": "Y粤语",
"v": "粤语MV4K"
},
{
"n": "Y郁可唯",
"v": "郁可唯MV4K"
},
{
"n": "Y叶倩文",
"v": "叶倩文MV4K"
},
{
"n": "Y杨坤",
"v": "杨坤MV4K"
},
{
"n": "Y庾澄庆",
"v": "庾澄庆MV4K"
},
{
"n": "Y尤长靖",
"v": "尤长靖MV4K"
},
{
"n": "Y易烊千玺",
"v": "易烊千玺MV4K"
},
{
"n": "Y袁娅维",
"v": "袁娅维MV4K"
},
{
"n": "Y杨丞琳",
"v": "杨丞琳MV4K"
},
{
"n": "Y杨千嬅",
"v": "杨千嬅MV4K"
},
{
"n": "Y杨宗纬",
"v": "杨宗纬MV4K"
},
{
"n": "Z周杰伦",
"v": "周杰伦MV4K"
},
{
"n": "Z张学友",
"v": "张学友MV4K"
},
{
"n": "Z张信哲",
"v": "张信哲MV4K"
},
{
"n": "Z张宇",
"v": "张宇MV4K"
},
{
"n": "Z周华健",
"v": "周华健MV4K"
},
{
"n": "Z张韶涵",
"v": "张韶涵MV4K"
},
{
"n": "Z周深",
"v": "周深MV4K"
},
{
"n": "Z纵贯线",
"v": "纵贯线MV4K"
},
{
"n": "Z赵雷",
"v": "赵雷MV4K"
},
{
"n": "Z周传雄",
"v": "周传雄MV4K"
},
{
"n": "Z张国荣",
"v": "张国荣MV4K"
},
{
"n": "Z周慧敏",
"v": "周慧敏MV4K"
},
{
"n": "Z张惠妹",
"v": "张惠妹MV4K"
},
{
"n": "Z周笔畅",
"v": "周笔畅MV4K"
},
{
"n": "Z郑中基",
"v": "郑中基MV4K"
},
{
"n": "Z张艺兴",
"v": "张艺兴MV4K"
},
{
"n": "Z张震岳",
"v": "张震岳MV4K"
},
{
"n": "Z中国好声音",
"v": "中国好声音MV4K"
},
{
"n": "Z张雨生",
"v": "张雨生MV4K"
},
{
"n": "Z郑智化",
"v": "郑智化MV4K"
},
{
"n": "Z卓依婷",
"v": "卓依婷MV4K"
},
{
"n": "Z中岛美雪",
"v": "中岛美雪MV4K"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"帕梅拉": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "帕梅拉"
},
{
"n": "瘦腿",
"v": "帕梅拉瘦腿"
},
{
"n": "腹部",
"v": "帕梅拉腹部"
},
{
"n": "手臂",
"v": "帕梅拉手臂"
},
{
"n": "热身",
"v": "帕梅拉热身"
},
{
"n": "舞蹈",
"v": "帕梅拉舞蹈"
},
{
"n": "燃脂",
"v": "帕梅拉燃脂"
},
{
"n": "有氧",
"v": "帕梅拉有氧"
},
{
"n": "拉伸",
"v": "帕梅拉拉伸"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"知名UP主": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "知名UP主"
},
{
"n": "菠萝赛东",
"v": "菠萝赛东"
},
{
"n": "冯提莫",
"v": "冯提莫"
},
{
"n": "林延秋",
"v": "林延秋"
},
{
"n": "-LKs-",
"v": "-LKs-"
},
{
"n": "小约翰可汗",
"v": "小约翰可汗"
},
{
"n": "low馆长",
"v": "low馆长"
},
{
"n": "自说自话的总裁",
"v": "自说自话的总裁"
},
{
"n": "所长林超",
"v": "所长林超"
},
{
"n": "世界未解之谜M",
"v": "世界未解之谜M"
},
{
"n": "李永乐老师官方",
"v": "李永乐老师官方"
},
{
"n": "罗兹",
"v": "罗兹"
},
{
"n": "回到2049",
"v": "回到2049"
},
{
"n": "二次元的中科院物理所",
"v": "二次元的中科院物理所"
},
{
"n": "毕导THU",
"v": "毕导THU"
},
{
"n": "罗翔讲刑法",
"v": "罗翔讲刑法"
},
{
"n": "戴博士实验室",
"v": "戴博士实验室"
},
{
"n": "芳斯塔芙",
"v": "芳斯塔芙"
},
{
"n": "参赛者网",
"v": "参赛者网"
},
{
"n": "三维地图看世界",
"v": "三维地图看世界"
},
{
"n": "有机社会",
"v": "有机社会"
},
{
"n": "乌鸦校尉CaptainWuya",
"v": "乌鸦校尉CaptainWuya"
},
{
"n": "果壳",
"v": "果壳"
},
{
"n": "严伯钧",
"v": "严伯钧"
},
{
"n": "是你们的康康",
"v": "是你们的康康"
},
{
"n": "老爸评测",
"v": "老爸评测"
},
{
"n": "硬核的半佛仙人",
"v": "硬核的半佛仙人"
},
{
"n": "盗月社食遇记",
"v": "盗月社食遇记"
},
{
"n": "我是郭杰瑞",
"v": "我是郭杰瑞"
},
{
"n": "无穷小亮的科普日常",
"v": "无穷小亮的科普日常"
},
{
"n": "papi酱",
"v": "papi酱"
},
{
"n": "老番茄",
"v": "老番茄"
},
{
"n": "绵羊料理",
"v": "绵羊料理"
},
{
"n": "老师好我叫何同学",
"v": "老师好我叫何同学"
},
{
"n": "敬汉卿",
"v": "敬汉卿"
},
{
"n": "周六野Zoey",
"v": "周六野Zoey"
},
{
"n": "木鱼水心",
"v": "木鱼水心"
},
{
"n": "凉风Kaze",
"v": "凉风Kaze"
},
{
"n": "小潮院长",
"v": "小潮院长"
},
{
"n": "中国BOY超级大猩猩",
"v": "中国BOY超级大猩猩"
},
{
"n": "李子柒",
"v": "李子柒"
},
{
"n": "敖厂长",
"v": "敖厂长"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"太极拳": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "太极拳"
},
{
"n": "邱慧芳",
"v": "太极拳邱慧芳"
},
{
"n": "陈氏",
"v": "太极拳陈氏"
},
{
"n": "武当",
"v": "太极拳武当"
},
{
"n": "二十四式",
"v": "太极拳二十四式"
},
{
"n": "三十六式",
"v": "太极拳三十六式"
},
{
"n": "五禽戏",
"v": "五禽戏"
},
{
"n": "八段锦",
"v": "八段锦"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"舞蹈": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "舞蹈"
},
{
"n": "宅舞",
"v": "宅舞"
},
{
"n": "街舞",
"v": "街舞"
},
{
"n": "中国舞",
"v": "中国舞"
},
{
"n": "广场舞",
"v": "广场舞"
},
{
"n": "交谊舞",
"v": "交谊舞"
},
{
"n": "教程",
"v": "舞蹈教程"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"音乐": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "音乐"
},
{
"n": "钢琴曲",
"v": "钢琴曲"
},
{
"n": "协奏曲",
"v": "协奏曲r"
},
{
"n": "中国古风音乐",
"v": "中国古风音乐"
},
{
"n": "背景音乐",
"v": "背景音乐"
},
{
"n": "助眠音乐r",
"v": "助眠音乐"
},
{
"n": "胎教音乐",
"v": "胎教音乐"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"歌曲": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "歌曲"
},
{
"n": "香港歌曲",
"v": "香港歌曲"
},
{
"n": "台湾歌曲",
"v": "台湾歌曲"
},
{
"n": "内地歌曲",
"v": "内地歌曲"
},
{
"n": "英文歌曲",
"v": "英文歌曲"
},
{
"n": "日文歌曲",
"v": "日文歌曲"
},
{
"n": "小语种歌曲",
"v": "小语种歌曲"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"平面设计教学": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "平面设计教学"
},
{
"n": "Adobe Photoshop",
"v": "Adobe Photoshop教程"
},
{
"n": "Adobe Illustrator",
"v": "Adobe Illustrator教程"
},
{
"n": "CorelDRAW",
"v": "CorelDRAW教程"
},
{
"n": "Adobe InDesign",
"v": "Adobe InDesign教程"
},
{
"n": "Adobe Pagermaker",
"v": "Adobe Pagermaker教程"
},
{
"n": "SAI",
"v": "SAI教程"
},
{
"n": "Adobe Bridge",
"v": "Adobe Bridge教程"
},
{
"n": "Adobe Pagermaker",
"v": "Adobe Pagermake教程r"
},
{
"n": "3D Studio Max",
"v": "3D Studio Max教程"
},
{
"n": "PR",
"v": "PR教程"
},
{
"n": "AE",
"v": "AE教程"
},
{
"n": "CINEMA 4D",
"v": "CINEMA 4D教程"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"软件教程": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "软件教程"
},
{
"n": "MT管理器",
"v": "MT管理器"
},
{
"n": "NP管理器",
"v": "NP管理器"
},
{
"n": "mixplorer",
"v": "mixplorer"
},
{
"n": "脱壳",
"v": "脱壳"
},
{
"n": "爬虫",
"v": "爬虫"
},
{
"n": "json&jar",
"v": "json&jar"
},
{
"n": "网盘挂载",
"v": "网盘挂载"
},
{
"n": "alist+WebDav",
"v": "alist+WebDav"
},
{
"n": "TVBox修改",
"v": "TVBox修改教程"
},
{
"n": "EXCEL",
"v": "EXCEL教程"
},
{
"n": "Git入门到精通",
"v": "Git入门到精通"
},
{
"n": "java",
"v": "java教程"
},
{
"n": "phyton",
"v": "phyton教程"
},
{
"n": "xml",
"v": "xml教程"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"Windows": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"小姐姐超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"广场舞超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"舞曲超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"白噪音超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"搞笑超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"体育超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"4K": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"足球比赛合集超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"篮球超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"动物世界超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"荒野求生超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"纪录片超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"食谱": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "食谱"
},
{
"n": "川菜食谱",
"v": "川菜食谱"
},
{
"n": "豫菜食谱",
"v": "豫菜食谱"
},
{
"n": "淮扬菜食谱",
"v": "淮扬菜食谱"
},
{
"n": "湘菜食谱",
"v": "湘菜食谱"
},
{
"n": "鲁菜食谱",
"v": "鲁菜食谱"
},
{
"n": "粤菜食谱",
"v": "粤菜食谱"
},
{
"n": "潮菜食谱",
"v": "潮菜食谱"
},
{
"n": "浙菜食谱",
"v": "浙菜食谱"
},
{
"n": "徽菜食谱",
"v": "徽菜食谱"
},
{
"n": "闽菜食谱",
"v": "闽菜食谱"
},
{
"n": "苏菜食谱",
"v": "苏菜食谱"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"健身": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "健身"
},
{
"n": "瘦腿",
"v": "瘦腿"
},
{
"n": "腹部",
"v": "腹部"
},
{
"n": "手臂",
"v": "手臂"
},
{
"n": "热身",
"v": "热身"
},
{
"n": "帕梅拉",
"v": "帕梅拉"
},
{
"n": "燃脂",
"v": "燃脂"
},
{
"n": "有氧",
"v": "有氧"
},
{
"n": "拉伸",
"v": "拉伸"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"窗白噪音": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"美食超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "美食超清"
},
{
"n": "舌尖上的中国",
"v": "舌尖上的中国超清"
},
{
"n": "老字号",
"v": "老字号美食超清"
},
{
"n": "家常菜",
"v": "家常菜美食超清"
},
{
"n": "香港美食探店",
"v": "香港美食探店超清"
},
{
"n": "澳门美食探店",
"v": "澳门美食探店超清"
},
{
"n": "上海美食探店",
"v": "上海美食探店超清"
},
{
"n": "北京美食探店",
"v": "北京美食探店超清"
},
{
"n": "重庆美食探店",
"v": "重庆美食探店超清"
},
{
"n": "南京美食探店",
"v": "南京美食探店超清"
},
{
"n": "广州美食探店",
"v": "广州美食探店超清"
},
{
"n": "杭州美食探店",
"v": "杭州美食探店超清"
},
{
"n": "成都美食探店",
"v": "成都美食探店超清"
},
{
"n": "苏州美食探店",
"v": "苏州美食探店超清"
},
{
"n": "武汉美食探店",
"v": "武汉美食探店超清"
},
{
"n": "台湾美食探店",
"v": "台湾美食探店超清"
},
{
"n": "川菜",
"v": "川菜美食超清"
},
{
"n": "豫菜",
"v": "豫菜美食超清"
},
{
"n": "淮扬菜",
"v": "淮扬菜美食超清"
},
{
"n": "湘菜",
"v": "湘菜美食超清"
},
{
"n": "鲁菜",
"v": "鲁菜美食超清"
},
{
"n": "粤菜",
"v": "粤菜美食超清"
},
{
"n": "潮菜",
"v": "潮菜美食超清"
},
{
"n": "浙菜",
"v": "浙菜美食超清"
},
{
"n": "徽菜",
"v": "徽菜美食超清"
},
{
"n": "闽菜",
"v": "闽菜美食超清"
},
{
"n": "东北菜",
"v": "东北菜美食超清"
},
{
"n": "客家菜",
"v": "客家菜美食超清"
},
{
"n": "苏菜",
"v": "苏菜美食超清"
},
{
"n": "火锅",
"v": "火锅"
},
{
"n": "面食",
"v": "面食"
},
{
"n": "炒菜",
"v": "炒菜"
},
{
"n": "点心",
"v": "点心"
},
{
"n": "日料",
"v": "日料"
},
{
"n": "小吃",
"v": "小吃"
},
{
"n": "素食",
"v": "素食"
},
{
"n": "蒸菜",
"v": "蒸菜"
},
{
"n": "凉菜",
"v": "凉菜"
},
{
"n": "早餐",
"v": "早餐"
},
{
"n": "披萨",
"v": "披萨"
},
{
"n": "烤鱼",
"v": "烤鱼"
},
{
"n": "海鲜",
"v": "海鲜美食超清"
},
{
"n": "汉堡",
"v": "汉堡"
},
{
"n": "韩国菜",
"v": "韩国菜"
},
{
"n": "泰国菜",
"v": "泰国菜"
},
{
"n": "穆斯林菜",
"v": "穆斯林菜"
},
{
"n": "法国菜",
"v": "法国菜"
},
{
"n": "意大利菜",
"v": "意大利菜"
},
{
"n": "西班牙菜",
"v": "西班牙菜"
},
{
"n": "土耳其菜",
"v": "土耳其菜系"
},
{
"n": "阿拉伯菜",
"v": "阿拉伯菜"
},
{
"n": "德国菜",
"v": "德国菜"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"广场舞": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"球星": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "球星"
},
{
"n": "梅西",
"v": "梅西"
},
{
"n": "C罗",
"v": "C罗"
},
{
"n": "天下足球",
"v": "天下足球"
},
{
"n": "罗纳尔多",
"v": "罗纳尔多"
},
{
"n": "亨利",
"v": "亨利"
},
{
"n": "小罗",
"v": "小罗"
},
{
"n": "齐达内",
"v": "齐达内"
},
{
"n": "贝克汉姆",
"v": "贝克汉姆"
},
{
"n": "内马尔",
"v": "内马尔"
},
{
"n": "德布劳内",
"v": "德布劳内"
},
{
"n": "欧冠",
"v": "欧冠"
},
{
"n": "世界杯",
"v": "世界杯"
},
{
"n": "西甲",
"v": "西甲"
},
{
"n": "英超",
"v": "英超"
},
{
"n": "意甲",
"v": "意甲"
},
{
"n": "德甲",
"v": "德甲"
},
{
"n": "国米",
"v": "国米"
},
{
"n": "皇马",
"v": "皇马"
},
{
"n": "巴萨",
"v": "巴萨"
},
{
"n": "巴黎圣日耳曼",
"v": "巴黎圣日耳曼"
},
{
"n": "曼联",
"v": "曼联"
},
{
"n": "曼城",
"v": "曼城"
},
{
"n": "NBA",
"v": "NBA"
},
{
"n": "詹姆斯",
"v": "詹姆斯"
},
{
"n": "库里",
"v": "库里"
},
{
"n": "杜兰特",
"v": "杜兰特"
},
{
"n": "UFC",
"v": "UFC"
},
{
"n": "斯诺克",
"v": "斯诺克"
},
{
"n": "网球",
"v": "网球"
},
{
"n": "F1",
"v": "F1"
},
{
"n": "高尔夫",
"v": "高尔夫"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"电视剧": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"相声小品超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "相声小品"
},
{
"n": "单口相声",
"v": "单口相声"
},
{
"n": "群口相声",
"v": "群口相声"
},
{
"n": "德云社",
"v": "德云社"
},
{
"n": "青曲社",
"v": "青曲社"
},
{
"n": "郭德纲",
"v": "郭德纲"
},
{
"n": "岳云鹏",
"v": "岳云鹏"
},
{
"n": "曹云金",
"v": "曹云金"
},
{
"n": "评书",
"v": "评书"
},
{
"n": "小曲",
"v": "小曲"
},
{
"n": "二人转",
"v": "二人转"
},
{
"n": "春晚小品",
"v": "春晚小品"
},
{
"n": "赵本山",
"v": "赵本山"
},
{
"n": "陈佩斯",
"v": "陈佩斯"
},
{
"n": "冯巩",
"v": "冯巩"
},
{
"n": "宋小宝",
"v": "宋小宝"
},
{
"n": "赵丽蓉",
"v": "赵丽蓉"
},
{
"n": "郭达",
"v": "郭达"
},
{
"n": "潘长江",
"v": "潘长江"
},
{
"n": "郭冬临",
"v": "郭冬临"
},
{
"n": "严顺开",
"v": "严顺开"
},
{
"n": "文松",
"v": "文松"
},
{
"n": "开心麻花",
"v": "开心麻花"
},
{
"n": "屌丝男士",
"v": "屌丝男士"
},
{
"n": "喜剧综艺",
"v": "喜剧综艺"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"戏曲": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "戏曲"
},
{
"n": "京剧",
"v": "京剧"
},
{
"n": "越剧",
"v": "越剧"
},
{
"n": "黄梅戏",
"v": "黄梅戏"
},
{
"n": "评剧",
"v": "评剧"
},
{
"n": "豫剧",
"v": "豫剧"
},
{
"n": "昆曲",
"v": "昆曲"
},
{
"n": "高腔",
"v": "高腔"
},
{
"n": "梆子腔",
"v": "梆子腔"
},
{
"n": "河北梆子",
"v": "河北梆子"
},
{
"n": "晋剧",
"v": "晋剧"
},
{
"n": "蒲剧",
"v": "蒲剧"
},
{
"n": "雁剧",
"v": "雁剧"
},
{
"n": "上党梆子",
"v": "上党梆子"
},
{
"n": "秦腔",
"v": "秦腔"
},
{
"n": "武安平调",
"v": "武安平调"
},
{
"n": "二人台",
"v": "二人台"
},
{
"n": "吉剧",
"v": "吉剧"
},
{
"n": "龙江剧",
"v": "龙江剧"
},
{
"n": "越调",
"v": "越调"
},
{
"n": "河南曲剧",
"v": "河南曲剧"
},
{
"n": "山东梆子",
"v": "山东梆子"
},
{
"n": "淮剧",
"v": "淮剧"
},
{
"n": "沪剧",
"v": "沪剧"
},
{
"n": "滑稽戏",
"v": "滑稽戏"
},
{
"n": "婺剧",
"v": "婺剧"
},
{
"n": "绍剧",
"v": "绍剧"
},
{
"n": "徽剧",
"v": "徽剧"
},
{
"n": "闽剧",
"v": "闽剧"
},
{
"n": "莆仙戏",
"v": "莆仙戏"
},
{
"n": "梨园戏",
"v": "梨园戏"
},
{
"n": "高甲戏",
"v": "高甲戏"
},
{
"n": "赣剧",
"v": "赣剧"
},
{
"n": "采茶戏",
"v": "采茶戏"
},
{
"n": "汉剧",
"v": "汉剧"
},
{
"n": "湘剧",
"v": "湘剧"
},
{
"n": "祁剧",
"v": "祁剧"
},
{
"n": "湖南花鼓戏",
"v": "湖南花鼓戏"
},
{
"n": "粤剧",
"v": "粤剧"
},
{
"n": "潮剧",
"v": "潮剧"
},
{
"n": "桂剧",
"v": "桂剧"
},
{
"n": "彩调",
"v": "彩调"
},
{
"n": "壮剧",
"v": "壮剧"
},
{
"n": "川剧",
"v": "川剧"
},
{
"n": "黔剧",
"v": "黔剧"
},
{
"n": "滇剧",
"v": "滇剧"
},
{
"n": "傣剧",
"v": "傣剧"
},
{
"n": "藏剧",
"v": "藏剧"
},
{
"n": "皮影戏",
"v": "皮影戏"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"旅游": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"游泳": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "泳姿"
},
{
"n": "蝶泳",
"v": "蝶泳"
},
{
"n": "仰泳",
"v": "仰泳"
},
{
"n": "蛙泳",
"v": "蛙泳"
},
{
"n": "自由泳",
"v": "自由泳"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}
}
+52
View File
@@ -0,0 +1,52 @@
{
"class": [
{
"type_name": "有声小说",
"type_id": "有声小说"
},
{
"type_name": "玄幻有声小说",
"type_id": "玄幻有声小说"
},
{
"type_name": "奇幻有声小说",
"type_id": "奇幻有声小说"
},
{
"type_name": "都市有声小说",
"type_id": "都市有声小说"
},
{
"type_name": "言情有声小说",
"type_id": "言情有声小说"
},
{
"type_name": "武侠有声小说",
"type_id": "武侠有声小说"
},
{
"type_name": "仙侠有声小说",
"type_id": "仙侠有声小说"
},
{
"type_name": "科幻有声小说",
"type_id": "科幻有声小说"
},
{
"type_name": "重生有声小说",
"type_id": "重生有声小说"
},
{
"type_name": "穿越有声小说",
"type_id": "穿越有声小说"
},
{
"type_name": "恐怖惊悚有声小说",
"type_id": "恐怖惊悚有声小说"
},
{
"type_name": "网游竞技有声小说",
"type_id": "网游竞技有声小说"
}
]
}
+52
View File
@@ -0,0 +1,52 @@
{
"class": [
{
"type_name": "春晚小品",
"type_id": "春晚小品"
},
{
"type_name": "赵本山",
"type_id": "赵本山"
},
{
"type_name": "陈佩斯",
"type_id": "陈佩斯"
},
{
"type_name": "冯巩",
"type_id": "冯巩"
},
{
"type_name": "宋小宝",
"type_id": "宋小宝"
},
{
"type_name": "赵丽蓉",
"type_id": "赵丽蓉"
},
{
"type_name": "郭达",
"type_id": "郭达"
},
{
"type_name": "潘长江",
"type_id": "潘长江"
},
{
"type_name": "郭冬临",
"type_id": "郭冬临"
},
{
"type_name": "严顺开",
"type_id": "严顺开"
},
{
"type_name": "文松",
"type_id": "文松"
},
{
"type_name": "开心麻花",
"type_id": "开心麻花"
}
]
}
+200
View File
@@ -0,0 +1,200 @@
{
"class": [
{
"type_name": "潮剧",
"type_id": "潮剧"
},
{
"type_name": "粤剧",
"type_id": "粤剧"
},
{
"type_name": "京剧",
"type_id": "京剧"
},
{
"type_name": "越剧",
"type_id": "越剧"
},
{
"type_name": "芗剧",
"type_id": "芗剧"
},
{
"type_name": "蒲剧",
"type_id": "蒲剧"
},
{
"type_name": "闽剧",
"type_id": "闽剧"
},
{
"type_name": "喊麦",
"type_id": "喊麦"
},
{
"type_name": "陕北说书",
"type_id": "陕北说书"
},
{
"type_name": "庐剧",
"type_id": "庐剧"
},
{
"type_name": "吕剧",
"type_id": "吕剧"
},
{
"type_name": "眉户",
"type_id": "眉户"
},
{
"type_name": "歌仔戏",
"type_id": "歌仔戏"
},
{
"type_name": "黄梅戏",
"type_id": "黄梅戏"
},
{
"type_name": "黄梅戏",
"type_id": "黄梅戏"
},
{
"type_name": "评剧",
"type_id": "评剧"
},
{
"type_name": "豫剧",
"type_id": "豫剧"
},
{
"type_name": "沪剧",
"type_id": "沪剧"
},
{
"type_name": "昆曲",
"type_id": "昆曲"
},
{
"type_name": "花鼓戏",
"type_id": "花鼓戏"
},
{
"type_name": "超清潮剧",
"type_id": "超清潮剧"
},
{
"type_name": "百花潮剧院",
"type_id": "百花潮剧院"
},
{
"type_name": "香港潮剧",
"type_id": "香港潮剧"
},
{
"type_name": "潮剧院",
"type_id": "潮剧院"
},
{
"type_name": "潮剧团",
"type_id": "潮剧团"
},
{
"type_name": "潮剧全剧",
"type_id": "潮剧全剧"
},
{
"type_name": "潮剧选段",
"type_id": "潮剧选段"
},
{
"type_name": "名家潮剧",
"type_id": "名家潮剧"
},
{
"type_name": "潮汕小品",
"type_id": "潮汕小品"
},
{
"type_name": "潮汕讲古",
"type_id": "潮汕讲古"
},
{
"type_name": "河北梆子",
"type_id": "河北梆子"
},
{
"type_name": "梆子腔",
"type_id": "梆子腔"
},
{
"type_name": "晋剧",
"type_id": "晋剧"
},
{
"type_name": "龙江剧",
"type_id": "龙江剧"
},
{
"type_name": "越调",
"type_id": "越调"
},
{
"type_name": "河南曲剧",
"type_id": "河南曲剧"
},
{
"type_name": "山东梆子",
"type_id": "山东梆子"
},
{
"type_name": "淮剧",
"type_id": "淮剧"
},
{
"type_name": "滑稽戏",
"type_id": "滑稽戏"
},
{
"type_name": "婺剧",
"type_id": "婺剧"
},
{
"type_name": "绍剧",
"type_id": "绍剧"
},
{
"type_name": "徽剧",
"type_id": "徽剧"
},
{
"type_name": "雁剧",
"type_id": "雁剧"
},
{
"type_name": "上党梆子",
"type_id": "上党梆子"
},
{
"type_name": "秦腔",
"type_id": "秦腔"
},
{
"type_name": "武安平调",
"type_id": "武安平调"
},
{
"type_name": "二人台",
"type_id": "二人台"
},
{
"type_name": "吉剧",
"type_id": "吉剧"
},
{
"type_name": "高腔",
"type_id": "高腔"
}
]
}
+32
View File
@@ -0,0 +1,32 @@
{
"class": [
{
"type_name": "单口相声",
"type_id": "单口相声"
},
{
"type_name": "群口相声",
"type_id": "群口相声"
},
{
"type_name": "德云社",
"type_id": "德云社"
},
{
"type_name": "青曲社",
"type_id": "青曲社"
},
{
"type_name": "郭德纲",
"type_id": "郭德纲"
},
{
"type_name": "岳云鹏",
"type_id": "岳云鹏"
},
{
"type_name": "曹云金",
"type_id": "曹云金"
}
]
}
+702
View File
@@ -0,0 +1,702 @@
{
"class": [
{
"type_name": "演唱会筛选",
"type_id": "演唱会超清"
},
{
"type_name": "粤语",
"type_id": "粤语歌曲超清"
},
{
"type_name": "热榜",
"type_id": "2022年热们歌曲超清"
},
{
"type_name": "抖音神曲",
"type_id": "抖音神曲超清"
},
{
"type_name": "经典老歌",
"type_id": "经典老歌超清"
},
{
"type_name": "DJ",
"type_id": "DJ歌曲超清"
},
{
"type_name": "网红翻唱",
"type_id": "网红翻唱歌曲超清"
},
{
"type_name": "韩国女团",
"type_id": "韩国女团演唱会超清"
}
],
"filters": {
"演唱会超清": [
{
"key": "order",
"name": "排序",
"value": [
{
"n": "综合排序",
"v": "0"
},
{
"n": "最多点击",
"v": "click"
},
{
"n": "最新发布",
"v": "pubdate"
},
{
"n": "最多弹幕",
"v": "dm"
},
{
"n": "最多收藏",
"v": "stow"
}
]
},
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "演唱会超清"
},
{
"n": "A阿杜",
"v": "阿杜演唱会超清"
},
{
"n": "A阿黛尔",
"v": "阿黛尔演唱会超清"
},
{
"n": "BBeyond",
"v": "Beyond演唱会超清"
},
{
"n": "BBy2",
"v": "By2演唱会超清"
},
{
"n": "BBIGBANG",
"v": "BIGBANG演唱会超清"
},
{
"n": "B布兰妮",
"v": "布兰妮演唱会超清"
},
{
"n": "B坂井泉水",
"v": "坂井泉水演唱会超清"
},
{
"n": "C陈奕迅",
"v": "陈奕迅演唱会超清"
},
{
"n": "C蔡依林",
"v": "蔡依林演唱会超清"
},
{
"n": "C初音未来",
"v": "初音未来演唱会超清"
},
{
"n": "C蔡健雅",
"v": "蔡健雅演唱会超清"
},
{
"n": "C陈小春",
"v": "陈小春演唱会超清"
},
{
"n": "C草蜢",
"v": "草蜢演唱会超清"
},
{
"n": "C陈慧娴",
"v": "陈慧娴演唱会超清"
},
{
"n": "C崔健",
"v": "崔健演唱会超清"
},
{
"n": "C仓木麻衣",
"v": "仓木麻衣演唱会超清"
},
{
"n": "D戴荃",
"v": "戴荃演唱会超清"
},
{
"n": "D动力火车",
"v": "动力火车演唱会超清"
},
{
"n": "D邓丽君",
"v": "邓丽君演唱会超清"
},
{
"n": "D丁当",
"v": "丁当演唱会超清"
},
{
"n": "D刀郎",
"v": "刀郎演唱会超清"
},
{
"n": "D邓紫棋",
"v": "邓紫棋演唱会超清"
},
{
"n": "D戴佩妮",
"v": "戴佩妮演唱会超清"
},
{
"n": "D邓丽君",
"v": "邓丽君演唱会超清"
},
{
"n": "F飞儿乐队",
"v": "飞儿乐队演唱会超清"
},
{
"n": "F费玉清",
"v": "费玉清演唱会超清"
},
{
"n": "F费翔",
"v": "费翔演唱会超清"
},
{
"n": "F方大同",
"v": "方大同演唱会超清"
},
{
"n": "F房东的猫",
"v": "房东的猫演唱会超清"
},
{
"n": "F凤飞飞",
"v": "凤飞飞演唱会超清"
},
{
"n": "F凤凰传奇",
"v": "凤凰传奇演唱会超清"
},
{
"n": "G郭采洁",
"v": "郭采洁演唱会超清"
},
{
"n": "G光良",
"v": "光良演唱会超清"
},
{
"n": "G郭静",
"v": "郭静演唱会超清"
},
{
"n": "G郭富城",
"v": "郭富城演唱会超清"
},
{
"n": "H胡彦斌",
"v": "胡彦斌演唱会超清"
},
{
"n": "H胡夏",
"v": "胡夏演唱会超清"
},
{
"n": "H韩红",
"v": "韩红演唱会超清"
},
{
"n": "H黄品源",
"v": "黄品源演唱会超清"
},
{
"n": "H黄小琥",
"v": "黄小琥演唱会超清"
},
{
"n": "H花儿乐队",
"v": "花儿乐队演唱会超清"
},
{
"n": "H黄家强",
"v": "黄家强演唱会超清"
},
{
"n": "H后街男孩",
"v": "后街男孩演唱会超清"
},
{
"n": "J经典老歌",
"v": "经典老歌演唱会超清"
},
{
"n": "J贾斯丁比伯",
"v": "贾斯丁比伯演唱会超清"
},
{
"n": "J金池",
"v": "金池演唱会超清"
},
{
"n": "J金志文",
"v": "金志文演唱会超清"
},
{
"n": "J焦迈奇",
"v": "焦迈奇演唱会超清"
},
{
"n": "K筷子兄弟",
"v": "筷子兄弟演唱会超清"
},
{
"n": "L李玟",
"v": "李玟演唱会超清"
},
{
"n": "L林忆莲",
"v": "林忆莲演唱会超清"
},
{
"n": "L李克勤",
"v": "李克勤演唱会超清"
},
{
"n": "L刘宪华",
"v": "刘宪华演唱会超清"
},
{
"n": "L李圣杰",
"v": "李圣杰演唱会超清"
},
{
"n": "L林宥嘉",
"v": "林宥嘉演唱会超清"
},
{
"n": "L梁静茹",
"v": "梁静茹演唱会超清"
},
{
"n": "L李健",
"v": "李健演唱会超清"
},
{
"n": "L林俊杰",
"v": "林俊杰演唱会超清"
},
{
"n": "L李玉刚",
"v": "李玉刚演唱会超清"
},
{
"n": "L林志炫",
"v": "林志炫演唱会超清"
},
{
"n": "L李荣浩",
"v": "李荣浩演唱会超清"
},
{
"n": "L李宇春",
"v": "李宇春演唱会超清"
},
{
"n": "L洛天依",
"v": "洛天依演唱会超清"
},
{
"n": "L林子祥",
"v": "林子祥演唱会超清"
},
{
"n": "L李宗盛",
"v": "李宗盛演唱会超清"
},
{
"n": "L黎明",
"v": "黎明演唱会超清"
},
{
"n": "L刘德华",
"v": "刘德华演唱会超清"
},
{
"n": "L罗大佑",
"v": "罗大佑演唱会超清"
},
{
"n": "L林肯公园",
"v": "林肯公园演唱会超清"
},
{
"n": "LLadyGaga",
"v": "LadyGaga演唱会超清"
},
{
"n": "L旅行团乐队",
"v": "旅行团乐队演唱会超清"
},
{
"n": "M莫文蔚",
"v": "莫文蔚演唱会超清"
},
{
"n": "M毛不易",
"v": "毛不易演唱会超清"
},
{
"n": "M梅艳芳",
"v": "梅艳芳演唱会超清"
},
{
"n": "M迈克尔杰克逊",
"v": "迈克尔杰克逊演唱会超清"
},
{
"n": "N南拳妈妈",
"v": "南拳妈妈演唱会超清"
},
{
"n": "P朴树",
"v": "朴树演唱会超清"
},
{
"n": "Q齐秦",
"v": "齐秦演唱会超清"
},
{
"n": "Q青鸟飞鱼",
"v": "青鸟飞鱼演唱会超清"
},
{
"n": "R容祖儿",
"v": "容祖儿演唱会超清"
},
{
"n": "R任贤齐",
"v": "任贤齐演唱会超清"
},
{
"n": "S水木年华",
"v": "水木年华演唱会超清"
},
{
"n": "S孙燕姿",
"v": "孙燕姿演唱会超清"
},
{
"n": "S苏打绿",
"v": "苏打绿演唱会超清"
},
{
"n": "SSHE",
"v": "SHE演唱会超清"
},
{
"n": "S孙楠",
"v": "孙楠演唱会超清"
},
{
"n": "T陶喆",
"v": "陶喆演唱会超清"
},
{
"n": "T谭咏麟",
"v": "谭咏麟演唱会超清"
},
{
"n": "T田馥甄",
"v": "田馥甄演唱会超清"
},
{
"n": "T谭维维",
"v": "谭维维演唱会超清"
},
{
"n": "T逃跑计划",
"v": "逃跑计划演唱会超清"
},
{
"n": "T田震",
"v": "田震演唱会超清"
},
{
"n": "T谭晶",
"v": "谭晶演唱会超清"
},
{
"n": "T屠洪刚",
"v": "屠洪刚演唱会超清"
},
{
"n": "T泰勒·斯威夫特",
"v": "泰勒·斯威夫特演唱会超清"
},
{
"n": "W王力宏",
"v": "王力宏演唱会超清"
},
{
"n": "W王杰",
"v": "王杰演唱会超清"
},
{
"n": "W吴克群",
"v": "吴克群演唱会超清"
},
{
"n": "W王心凌",
"v": "王心凌演唱会超清"
},
{
"n": "W王靖雯",
"v": "好声音王靖雯演唱会超清"
},
{
"n": "W汪峰",
"v": "汪峰演唱会超清"
},
{
"n": "W伍佰",
"v": "伍佰演唱会超清"
},
{
"n": "W王菲",
"v": "王菲演唱会超清"
},
{
"n": "W五月天",
"v": "五月天演唱会超清"
},
{
"n": "W汪苏泷",
"v": "汪苏泷演唱会超清"
},
{
"n": "X徐佳莹",
"v": "徐佳莹演唱会超清"
},
{
"n": "X弦子",
"v": "弦子演唱会超清"
},
{
"n": "X萧亚轩",
"v": "萧亚轩演唱会超清"
},
{
"n": "X许巍",
"v": "许巍演唱会超清"
},
{
"n": "X薛之谦",
"v": "薛之谦演唱会超清"
},
{
"n": "X许嵩",
"v": "许嵩演唱会超清"
},
{
"n": "X小虎队",
"v": "小虎队演唱会超清"
},
{
"n": "X萧敬腾",
"v": "萧敬腾演唱会超清"
},
{
"n": "X谢霆锋",
"v": "谢霆锋演唱会超清"
},
{
"n": "X徐小凤",
"v": "徐小凤演唱会超清"
},
{
"n": "X信乐队",
"v": "信乐队演唱会超清"
},
{
"n": "Y夜愿乐队",
"v": "夜愿乐队演唱会超清"
},
{
"n": "Y羽泉",
"v": "羽泉演唱会超清"
},
{
"n": "Y郁可唯",
"v": "郁可唯演唱会超清"
},
{
"n": "Y叶倩文",
"v": "叶倩文演唱会超清"
},
{
"n": "Y杨坤",
"v": "杨坤演唱会超清"
},
{
"n": "Y庾澄庆",
"v": "庾澄庆演唱会超清"
},
{
"n": "Y尤长靖",
"v": "尤长靖演唱会超清"
},
{
"n": "Y易烊千玺",
"v": "易烊千玺演唱会超清"
},
{
"n": "Y袁娅维",
"v": "袁娅维演唱会超清"
},
{
"n": "Y杨丞琳",
"v": "杨丞琳演唱会超清"
},
{
"n": "Y杨千嬅",
"v": "杨千嬅演唱会超清"
},
{
"n": "Y杨宗纬",
"v": "杨宗纬演唱会超清"
},
{
"n": "Z郑秀文",
"v": "郑秀文演唱会超清"
},
{
"n": "Z周杰伦",
"v": "周杰伦演唱会超清"
},
{
"n": "Z张学友",
"v": "张学友演唱会超清"
},
{
"n": "Z张信哲",
"v": "张信哲演唱会超清"
},
{
"n": "Z张宇",
"v": "张宇演唱会超清"
},
{
"n": "Z周华健",
"v": "周华健演唱会超清"
},
{
"n": "Z张韶涵",
"v": "张韶涵演唱会超清"
},
{
"n": "Z周深",
"v": "周深演唱会超清"
},
{
"n": "Z纵贯线",
"v": "纵贯线演唱会超清"
},
{
"n": "Z赵雷",
"v": "赵雷演唱会超清"
},
{
"n": "Z周传雄",
"v": "周传雄演唱会超清"
},
{
"n": "Z张国荣",
"v": "张国荣演唱会超清"
},
{
"n": "Z周慧敏",
"v": "周慧敏演唱会超清"
},
{
"n": "Z张惠妹",
"v": "张惠妹演唱会超清"
},
{
"n": "Z周笔畅",
"v": "周笔畅演唱会超清"
},
{
"n": "Z郑中基",
"v": "郑中基演唱会超清"
},
{
"n": "Z张艺兴",
"v": "张艺兴演唱会超清"
},
{
"n": "Z张震岳",
"v": "张震岳演唱会超清"
},
{
"n": "Z张雨生",
"v": "张雨生演唱会超清"
},
{
"n": "Z郑智化",
"v": "郑智化演唱会超清"
},
{
"n": "Z卓依婷",
"v": "卓依婷演唱会超清"
},
{
"n": "Z中岛美雪",
"v": "中岛美雪演唱会超清"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}
}
+1398
View File
@@ -0,0 +1,1398 @@
{
"class": [
{
"type_name": "7年级语文",
"type_id": "7年级语文"
},
{
"type_name": "7年级数学",
"type_id": "7年级数学"
},
{
"type_name": "7年级英语",
"type_id": "7年级英语"
},
{
"type_name": "7年级历史",
"type_id": "7年级历史"
},
{
"type_name": "7年级地理",
"type_id": "7年级地理"
},
{
"type_name": "7年级生物",
"type_id": "7年级生物"
},
{
"type_name": "7年级物理",
"type_id": "7年级物理"
},
{
"type_name": "7年级化学",
"type_id": "7年级化学"
},
{
"type_name": "8年级语文",
"type_id": "8年级语文"
},
{
"type_name": "8年级数学",
"type_id": "8年级数学"
},
{
"type_name": "8年级英语",
"type_id": "8年级英语"
},
{
"type_name": "8年级历史",
"type_id": "8年级历史"
},
{
"type_name": "8年级地理",
"type_id": "8年级地理"
},
{
"type_name": "8年级生物",
"type_id": "8年级生物"
},
{
"type_name": "8年级物理",
"type_id": "8年级物理"
},
{
"type_name": "8年级化学",
"type_id": "8年级化学"
},
{
"type_name": "9年级语文",
"type_id": "9年级语文"
},
{
"type_name": "9年级数学",
"type_id": "9年级数学"
},
{
"type_name": "9年级英语",
"type_id": "9年级英语"
},
{
"type_name": "9年级历史",
"type_id": "9年级历史"
},
{
"type_name": "9年级地理",
"type_id": "9年级地理"
},
{
"type_name": "9年级生物",
"type_id": "9年级生物"
},
{
"type_name": "9年级物理",
"type_id": "9年级物理"
},
{
"type_name": "9年级化学",
"type_id": "9年级化学"
}
],
"filters": {
"7年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级语文"
},
{
"n": "人教版",
"v": "人教版7年级语文"
},
{
"n": "北师大版",
"v": "北师大版7年级语文"
},
{
"n": "苏教版",
"v": "苏教版7年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级英语"
},
{
"n": "人教版",
"v": "人教版7年级英语"
},
{
"n": "北师大版",
"v": "北师大版7年级英语"
},
{
"n": "苏教版",
"v": "苏教版7年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级数学"
},
{
"n": "人教版",
"v": "人教版7年级数学"
},
{
"n": "北师大版",
"v": "北师大版7年级数学"
},
{
"n": "苏教版",
"v": "苏教版7年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级化学"
},
{
"n": "人教版",
"v": "人教版7年级化学"
},
{
"n": "北师大版",
"v": "北师大版7年级化学"
},
{
"n": "苏教版",
"v": "苏教版7年级化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级物理"
},
{
"n": "人教版",
"v": "人教版7年级物理"
},
{
"n": "北师大版",
"v": "北师大版7年级物理"
},
{
"n": "苏教版",
"v": "苏教版7年级物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级生物"
},
{
"n": "人教版",
"v": "人教版7年级生物"
},
{
"n": "北师大版",
"v": "北师大版7年级生物"
},
{
"n": "苏教版",
"v": "苏教版7年级生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级历史"
},
{
"n": "人教版",
"v": "人教版7年级历史"
},
{
"n": "北师大版",
"v": "北师大版7年级历史"
},
{
"n": "苏教版",
"v": "苏教版7年级历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"7年级地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版7年级地理"
},
{
"n": "人教版",
"v": "人教版7年级地理"
},
{
"n": "北师大版",
"v": "北师大版7年级地理"
},
{
"n": "苏教版",
"v": "苏教版7年级地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级语文"
},
{
"n": "人教版",
"v": "人教版8年级语文"
},
{
"n": "北师大版",
"v": "北师大版8年级语文"
},
{
"n": "苏教版",
"v": "苏教版8年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级英语"
},
{
"n": "人教版",
"v": "人教版8年级英语"
},
{
"n": "北师大版",
"v": "北师大版8年级英语"
},
{
"n": "苏教版",
"v": "苏教版8年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级数学"
},
{
"n": "人教版",
"v": "人教版8年级数学"
},
{
"n": "北师大版",
"v": "北师大版8年级数学"
},
{
"n": "苏教版",
"v": "苏教版8年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级化学"
},
{
"n": "人教版",
"v": "人教版8年级化学"
},
{
"n": "北师大版",
"v": "北师大版8年级化学"
},
{
"n": "苏教版",
"v": "苏教版8年级化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级物理"
},
{
"n": "人教版",
"v": "人教版8年级物理"
},
{
"n": "北师大版",
"v": "北师大版8年级物理"
},
{
"n": "苏教版",
"v": "苏教版8年级物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级生物"
},
{
"n": "人教版",
"v": "人教版8年级生物"
},
{
"n": "北师大版",
"v": "北师大版8年级生物"
},
{
"n": "苏教版",
"v": "苏教版8年级生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级历史"
},
{
"n": "人教版",
"v": "人教版8年级历史"
},
{
"n": "北师大版",
"v": "北师大版8年级历史"
},
{
"n": "苏教版",
"v": "苏教版8年级历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"8年级地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版8年级地理"
},
{
"n": "人教版",
"v": "人教版8年级地理"
},
{
"n": "北师大版",
"v": "北师大版8年级地理"
},
{
"n": "苏教版",
"v": "苏教版8年级地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级语文"
},
{
"n": "人教版",
"v": "人教版9年级语文"
},
{
"n": "北师大版",
"v": "北师大版9年级语文"
},
{
"n": "苏教版",
"v": "苏教版9年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级英语"
},
{
"n": "人教版",
"v": "人教版9年级英语"
},
{
"n": "北师大版",
"v": "北师大版9年级英语"
},
{
"n": "苏教版",
"v": "苏教版9年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级数学"
},
{
"n": "人教版",
"v": "人教版9年级数学"
},
{
"n": "北师大版",
"v": "北师大版9年级数学"
},
{
"n": "苏教版",
"v": "苏教版9年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级化学"
},
{
"n": "人教版",
"v": "人教版9年级化学"
},
{
"n": "北师大版",
"v": "北师大版9年级化学"
},
{
"n": "苏教版",
"v": "苏教版9年级化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级物理"
},
{
"n": "人教版",
"v": "人教版9年级物理"
},
{
"n": "北师大版",
"v": "北师大版9年级物理"
},
{
"n": "苏教版",
"v": "苏教版9年级物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级生物"
},
{
"n": "人教版",
"v": "人教版9年级生物"
},
{
"n": "北师大版",
"v": "北师大版9年级生物"
},
{
"n": "苏教版",
"v": "苏教版9年级生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级历史"
},
{
"n": "人教版",
"v": "人教版9年级历史"
},
{
"n": "北师大版",
"v": "北师大版9年级历史"
},
{
"n": "苏教版",
"v": "苏教版9年级历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"9年级地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版9年级地理"
},
{
"n": "人教版",
"v": "人教版9年级地理"
},
{
"n": "北师大版",
"v": "北师大版9年级地理"
},
{
"n": "苏教版",
"v": "苏教版9年级地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}
}
+18
View File
@@ -0,0 +1,18 @@
{
"请求头": "User-Agent$MOBILE_UA",
"编码": "UTF-8",
"主页url": "https://dora.xiaoxinbk.com/",
"数组": "class=\"card-img-bili\"&&</a>",
"标题": "alt=\"&&\"",
"图片": "data-url=\"&&\"",
"链接": "href=\"&&\"",
"线路标题": "mt-0\">&&</h3>",
"播放数组": "class=\"card-body button-list\"&&</div>",
"播放列表": "<a&&a>",
"播放链接": "href=\"&&\"",
"播放标题": ">&&</",
"分类url": "https://www.dora-video.cn/search/sy/?niandai={year}&cat={class}&tag={cateId}&gaojijiansuo=1&zhuangtai={by}",
"分类": "全部$0#动画$20#剧场版$21#MV$22#预告片$23#直播$27#同人$25#民间$26#目录$28#中篇$30",
"剧情": "哆啦A梦新番$1#新哆啦A梦 台湾配音$2#哆啦A梦剧场版$3#最新预告片$6#剧场版集合$7#哆啦A梦MV$4#哆啦A梦七小子集合$11#生日特别篇$19#哆啦A梦生日特别篇$12#哆啦美生日特别篇$14#大雄生日特别篇$13#静香生日特别篇$15#胖虎生日特别篇$16#小夫生日特别篇$17#24小时直播$24#哆啦A梦中篇附映$29#哆啦A梦大山版 - 哆啦a梦1979版国语旧版 - 旧版$31#哆啦A梦大山修复&补档区$32#藤子·F·不二雄【其它动画】$33",
"排序": "全部$0#完结$2#连载$1#待定$-1"
}
+131
View File
@@ -0,0 +1,131 @@
//xpathjsoup2022917
//jsoupjs
//
{
//
"title": "电影港",
//
"author": "香雅情",
//UA,$#okhttp/3.12.11MOBILE_UAPC_UA使UA
//"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok",#
//UAPCUA
"Headers":"PC_UA",
//UTF-8UTF-8GBKGB2312
"Coding_format":"gb2312",
//
"PicNeedProxy":"0",
//01
"homeContent":"0",
//,
"firstpage": "1",
//,{cateId}{catePg}, [firstPage=]
"class_url": "https://www.dygang.tv/{cateId}/index_{catePg}.htm[firstPage=https://www.dygang.cc/{cateId}/index.htm]",
//1&2&3
"class_name": "最新电影&经典高清&国配电影&经典港片&国剧&日韩剧&美剧&综艺&动漫&纪录片&高清原盘&4K高清区&3D电影&电影专题",
//1&2&3&id=0&id=1
"class_value": "ys&bd&gy&gp&dsj&dsj1&yx&zy&dmq&jilupian&1080p&4K&3d&dyzt",
//jsonxpath
"filterdata":{},
//0json
"cat_mode": "1",
//3
"cat_arr_rule": "body&&table[width=388]",
//jsoupxbhtml1jsoup()0xb
"cat_is_jsoup":"1",
//
"cat_title": "img&&alt",
//
"cat_url": "a&&href",
//
"cat_pic": "img&&src",
//
"cat_subtitle":"[align=center]&&Text",
//
"cat_prefix": "https://www.dygang.tv",
//
"cat_suffix": "",
//,okhttp/3.12.11MOBILE_UAPC_UA使UA
//$#"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok"
"SHeaders":"User-Agent$PC_UA#Content-Type$charset=gb2312",
//{wd}post;post
//POST http://www.lezhutv.com/index.php?m=vod-search;post
"search_url": "https://www.dygang.tv/e/search/index123.php;post",
//POSTbodysearchwordwdPOST
"sea_PtBody":"keyboard={wd}&submit=搜+索&show=title,smalltext&tempid=1&tbname=article",
//,0jsonlist
"search_mode": "1",
//list3
"sea_arr_rule": "body&&table[width=388]",
//jsoupxbhtml1jsoup()0xb
"sea_is_jsoup":"1",
//
"sea_pic": "img&&src",
//
"sea_title": "img&&alt",
//
"sea_url": "a&&href",
//
"sea_subtitle":"",
//
"search_prefix": "https://www.dygang.tv",
//json
"search_suffix": "",
//012
//3
"force_play": "0",
//
"play_prefix": "",
//#isVideo=true#
"play_suffix": "",
//#
"play_header": "",
//jsoupxb1jsoup()0xb
"proj_is_jsoup":"0",
//&&
"proj_cate": "",
//&&
"proj_year": "",
//&&
"proj_area": "",
//&&
"proj_actor": "演  员&&</",
//&&
"proj_plot": "简  介&&</",
//线tab_titletab_arr_rule
//线
"tab_arr_rule": "#dede_content",
//线&&
"tab_title": "strong&&Text",
//
"list_arr_rule": "#dede_content",
//
"epi_arr_rule": "table&&[href*=magnet]",
//&&
"epi_title": "a&&Text",
//&&
"epi_url": "a&&href",
//
"epi_reverse": "0",
//
"epiurl_prefix": "",
//
"epiurl_suffix": "",
//
//<script type="text/javascript">var player_aaaa={"flag":"play","encrypt
//0
"Anal_MacPlayer":"0",
//01
"ManualSniffer":"0",
//#
"VideoFormat":".mp4#.m3u8#.flv",
//,#
"VideoFilter":".html#=http"
}
+1576
View File
@@ -0,0 +1,1576 @@
{
"class": [
{
"type_name": "高一语文",
"type_id": "高一语文"
},
{
"type_name": "高一数学",
"type_id": "高一数学"
},
{
"type_name": "高一英语",
"type_id": "高一英语"
},
{
"type_name": "高一历史",
"type_id": "高一历史"
},
{
"type_name": "高一地理",
"type_id": "高一地理"
},
{
"type_name": "高一生物",
"type_id": "高一生物"
},
{
"type_name": "高一思想政治",
"type_id": "高一思想政治"
},
{
"type_name": "高一物理",
"type_id": "高一物理"
},
{
"type_name": "高一化学",
"type_id": "高一化学"
},
{
"type_name": "高二语文",
"type_id": "高二语文"
},
{
"type_name": "高二数学",
"type_id": "高二数学"
},
{
"type_name": "高二英语",
"type_id": "高二英语"
},
{
"type_name": "高二历史",
"type_id": "高二历史"
},
{
"type_name": "高二地理",
"type_id": "高二地理"
},
{
"type_name": "高二生物",
"type_id": "高二生物"
},
{
"type_name": "高二思想政治",
"type_id": "高二思想政治"
},
{
"type_name": "高二物理",
"type_id": "高二物理"
},
{
"type_name": "高二化学",
"type_id": "高二化学"
},
{
"type_name": "高三语文",
"type_id": "高三语文"
},
{
"type_name": "高三数学",
"type_id": "高三数学"
},
{
"type_name": "高三英语",
"type_id": "高三英语"
},
{
"type_name": "高三历史",
"type_id": "高三历史"
},
{
"type_name": "高三地理",
"type_id": "高三地理"
},
{
"type_name": "高三生物",
"type_id": "高三生物"
},
{
"type_name": "高三思想政治",
"type_id": "高三思想政治"
},
{
"type_name": "高三物理",
"type_id": "高三物理"
},
{
"type_name": "高三化学",
"type_id": "高三化学"
},
{
"type_name": "高中信息技术",
"type_id": "高中信息技术"
}
],
"filters": {
"高一语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一语文"
},
{
"n": "人教版",
"v": "人教版高一语文"
},
{
"n": "北师大版",
"v": "北师大版高一语文"
},
{
"n": "苏教版",
"v": "苏教版高一语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一英语"
},
{
"n": "人教版",
"v": "人教版高一英语"
},
{
"n": "北师大版",
"v": "北师大版高一英语"
},
{
"n": "苏教版",
"v": "苏教版高一英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一数学"
},
{
"n": "人教版",
"v": "人教版高一数学"
},
{
"n": "北师大版",
"v": "北师大版高一数学"
},
{
"n": "苏教版",
"v": "苏教版高一数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一物理"
},
{
"n": "人教版",
"v": "人教版高一物理"
},
{
"n": "北师大版",
"v": "北师大版高一物理"
},
{
"n": "苏教版",
"v": "苏教版高一物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一化学"
},
{
"n": "人教版",
"v": "人教版高一化学"
},
{
"n": "北师大版",
"v": "北师大版高一化学"
},
{
"n": "苏教版",
"v": "苏教版高一化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一历史"
},
{
"n": "人教版",
"v": "人教版高一历史"
},
{
"n": "北师大版",
"v": "北师大版高一历史"
},
{
"n": "苏教版",
"v": "苏教版高一历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一生物"
},
{
"n": "人教版",
"v": "人教版高一生物"
},
{
"n": "北师大版",
"v": "北师大版高一生物"
},
{
"n": "苏教版",
"v": "苏教版高一生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一思想政治": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一思想政治"
},
{
"n": "人教版",
"v": "人教版高一思想政治"
},
{
"n": "北师大版",
"v": "北师大版高一思想政治"
},
{
"n": "苏教版",
"v": "苏教版高一思想政治"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高一地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高一地理"
},
{
"n": "人教版",
"v": "人教版高一地理"
},
{
"n": "北师大版",
"v": "北师大版高一地理"
},
{
"n": "苏教版",
"v": "苏教版高一地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二语文"
},
{
"n": "人教版",
"v": "人教版高二语文"
},
{
"n": "北师大版",
"v": "北师大版高二语文"
},
{
"n": "苏教版",
"v": "苏教版高二语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二英语"
},
{
"n": "人教版",
"v": "人教版高二英语"
},
{
"n": "北师大版",
"v": "北师大版高二英语"
},
{
"n": "苏教版",
"v": "苏教版高二英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二数学"
},
{
"n": "人教版",
"v": "人教版高二数学"
},
{
"n": "北师大版",
"v": "北师大版高二数学"
},
{
"n": "苏教版",
"v": "苏教版高二数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二物理"
},
{
"n": "人教版",
"v": "人教版高二物理"
},
{
"n": "北师大版",
"v": "北师大版高二物理"
},
{
"n": "苏教版",
"v": "苏教版高二物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二化学"
},
{
"n": "人教版",
"v": "人教版高二化学"
},
{
"n": "北师大版",
"v": "北师大版高二化学"
},
{
"n": "苏教版",
"v": "苏教版高二化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二历史"
},
{
"n": "人教版",
"v": "人教版高二历史"
},
{
"n": "北师大版",
"v": "北师大版高二历史"
},
{
"n": "苏教版",
"v": "苏教版高二历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二生物"
},
{
"n": "人教版",
"v": "人教版高二生物"
},
{
"n": "北师大版",
"v": "北师大版高二生物"
},
{
"n": "苏教版",
"v": "苏教版高二生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二思想政治": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二思想政治"
},
{
"n": "人教版",
"v": "人教版高二思想政治"
},
{
"n": "北师大版",
"v": "北师大版高二思想政治"
},
{
"n": "苏教版",
"v": "苏教版高二思想政治"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高二地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高二地理"
},
{
"n": "人教版",
"v": "人教版高二地理"
},
{
"n": "北师大版",
"v": "北师大版高二地理"
},
{
"n": "苏教版",
"v": "苏教版高二地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三语文"
},
{
"n": "人教版",
"v": "人教版高三语文"
},
{
"n": "北师大版",
"v": "北师大版高三语文"
},
{
"n": "苏教版",
"v": "苏教版高三语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三英语"
},
{
"n": "人教版",
"v": "人教版高三英语"
},
{
"n": "北师大版",
"v": "北师大版高三英语"
},
{
"n": "苏教版",
"v": "苏教版高三英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三数学"
},
{
"n": "人教版",
"v": "人教版高三数学"
},
{
"n": "北师大版",
"v": "北师大版高三数学"
},
{
"n": "苏教版",
"v": "苏教版高三数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三物理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三物理"
},
{
"n": "人教版",
"v": "人教版高三物理"
},
{
"n": "北师大版",
"v": "北师大版高三物理"
},
{
"n": "苏教版",
"v": "苏教版高三物理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三化学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三化学"
},
{
"n": "人教版",
"v": "人教版高三化学"
},
{
"n": "北师大版",
"v": "北师大版高三化学"
},
{
"n": "苏教版",
"v": "苏教版高三化学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三历史": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三历史"
},
{
"n": "人教版",
"v": "人教版高三历史"
},
{
"n": "北师大版",
"v": "北师大版高三历史"
},
{
"n": "苏教版",
"v": "苏教版高三历史"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三生物": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三生物"
},
{
"n": "人教版",
"v": "人教版高三生物"
},
{
"n": "北师大版",
"v": "北师大版高三生物"
},
{
"n": "苏教版",
"v": "苏教版高三生物"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三思想政治": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三思想政治"
},
{
"n": "人教版",
"v": "人教版高三思想政治"
},
{
"n": "北师大版",
"v": "北师大版高三思想政治"
},
{
"n": "苏教版",
"v": "苏教版高三思想政治"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"高三地理": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版高三地理"
},
{
"n": "人教版",
"v": "人教版高三地理"
},
{
"n": "北师大版",
"v": "北师大版高三地理"
},
{
"n": "苏教版",
"v": "苏教版高三地理"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}
}
+82
View File
@@ -0,0 +1,82 @@
{
"规则名": "剧圈圈",
"规则作者": "香雅情",
"OCR_API":"https://api.nn.ci/ocr/b64/text",
"请求头参数": "MOBILE_UA",
"网页编码格式": "UTF-8",
"图片是否需要代理": "否",
"是否开启获取首页数据": "1",
"首页推荐链接": "https://www.jqqzx.me",
"首页列表数组规则": "body&&.module-main.tab-list.active",
"首页片单列表数组规则": ".module-item",
"首页片单是否Jsoup写法": "1",
"分类起始页码": "1",
"分类链接": "https://www.jqqzx.me/vodshow/id/{cateId}/page/{catePg}.html",
"分类名称": "电影&电视剧&综艺&动漫&纪录片&爽剧",
"分类名称替换词": "dianying&juji&zongyi&dongman&jilupian&shuangju",
"筛选数据": {},
//"筛选数据": "ext",
//{cateId}
"筛选子分类名称": "",
"筛选子分类替换词": "",
//{class}
"筛选类型名称": "",
"筛选类型替换词": "*",
//{area}
"筛选地区名称": "",
"筛选地区替换词": "*",
//{year}
"筛选年份名称": "",
"筛选年份替换词": "*",
//{lang}
"筛选语言名称": "",
"筛选语言替换词": "*",
//{by}
"筛选排序名称": "时间&人气&评分",
"筛选排序替换词": "time&hits&score",
"分类截取模式": "1",
"分类列表数组规则": ".module-items&&.module-item",
"分类片单是否Jsoup写法": "是",
"分类片单标题": ".module-poster-item-title&&Text",
"分类片单链接": "a&&href",
"分类片单图片": ".lazyload&&data-original",
"分类片单副标题": ".module-item-note&&Text",
"分类片单链接加前缀": "https://www.jqqzx.me",
"分类片单链接加后缀": "",
"搜索请求头参数": "User-Agent$MOBILE_UA",
"搜索链接": "https://www.jqqzx.me/vodsearch{wd}/page/{SearchPg}.html",
"POST请求数据": "",
"搜索截取模式": "1",
"搜索列表数组规则": ".module-items&&.module-item",
"搜索片单是否Jsoup写法": "是",
"搜索片单图片": ".lazyload&&data-original",
"搜索片单标题": ".module-card-item-title&&Text",
"搜索片单链接": "a&&href",
"搜索片单副标题": ".module-item-note&&Text",
"搜索片单链接加前缀": "https://www.jqqzx.me",
"搜索片单链接加后缀": "",
"链接是否直接播放": "否",
"直接播放链接加前缀": "",
"直接播放链接加后缀": "",
"直接播放直链视频请求头": "",
"详情是否Jsoup写法": "是",
"类型详情": "",
"年代详情": ".module-info-content&&.module-info-item,3&&Text",
"地区详情": "",
"演员详情": ".module-info-content&&.module-info-item,2&&Text",
"简介详情": ".module-info-content&&.module-info-item&&Text",
"线路列表数组规则": ".module-tab-items-box&&.module-tab-item",
"线路标题": "Text",
"播放列表数组规则": "body&&.module-play-list-content",
"选集列表数组规则": "a",
"选集标题链接是否Jsoup写法": "是",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "否",
"选集链接加前缀": "https://www.jqqzx.me",
"选集链接加后缀": "",
"分析MacPlayer": "否",
"是否开启手动嗅探": "否",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
"手动嗅探视频链接过滤词": ".html#=http"
}
+7
View File
@@ -0,0 +1,7 @@
{
"请求头": "User-Agent$MOBILE_UA",
"编码": "UTF-8",
"分类url": "https://v.aiwule.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html",
"分类": "电影$20#电视剧$21#动漫$23#综艺$22#短剧$47",
"简介": "简介:&&"
}
+454
View File
@@ -0,0 +1,454 @@
{
"class": [
{
"type_name": "儿童早教",
"type_id": "儿童早教"
},
{
"type_name": "儿童启蒙故事",
"type_id": "儿童启蒙故事"
},
{
"type_name": "儿童英语启蒙",
"type_id": "儿童英语启蒙"
},
{
"type_name": "儿童歌曲",
"type_id": "儿童歌曲"
},
{
"type_name": "儿童绘画",
"type_id": "儿童绘画"
},
{
"type_name": "睡前故事",
"type_id": "睡前故事"
},
{
"type_name": "儿童动画",
"type_id": "儿童动画"
},
{
"type_name": "儿童音乐",
"type_id": "儿童音乐"
},
{
"type_name": "儿童安全教育",
"type_id": "儿童安全教育"
},
{
"type_name": "贝瓦儿歌",
"type_id": "贝瓦儿歌"
},
{
"type_name": "悟空识字",
"type_id": "悟空识字"
},
{
"type_name": "宝宝巴士",
"type_id": "宝宝巴士"
},
{
"type_name": "儿歌多多",
"type_id": "儿歌多多"
},
{
"type_name": "学而思",
"type_id": "学而思"
}
],
"filters": {
"儿童早教": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童启蒙故事": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童英语启蒙": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童歌曲": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童绘画": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"睡前故事": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童动画": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童音乐": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿童安全教育": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"贝瓦儿歌": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"悟空识字": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"宝宝巴士": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"儿歌多多": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"学而思": [
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}
}
+1050
View File
@@ -0,0 +1,1050 @@
{
"class": [
{
"type_name": "1年级语文",
"type_id": "1年级语文"
},
{
"type_name": "1年级数学",
"type_id": "1年级数学"
},
{
"type_name": "1年级英语",
"type_id": "1年级英语"
},
{
"type_name": "2年级语文",
"type_id": "2年级语文"
},
{
"type_name": "2年级数学",
"type_id": "2年级数学"
},
{
"type_name": "2年级英语",
"type_id": "2年级英语"
},
{
"type_name": "3年级语文",
"type_id": "3年级语文"
},
{
"type_name": "3年级数学",
"type_id": "3年级数学"
},
{
"type_name": "3年级英语",
"type_id": "3年级英语"
},
{
"type_name": "4年级语文",
"type_id": "4年级语文"
},
{
"type_name": "4年级数学",
"type_id": "4年级数学"
},
{
"type_name": "4年级英语",
"type_id": "4年级英语"
},
{
"type_name": "5年级语文",
"type_id": "5年级语文"
},
{
"type_name": "5年级数学",
"type_id": "5年级数学"
},
{
"type_name": "5年级英语",
"type_id": "5年级英语"
},
{
"type_name": "6年级语文",
"type_id": "6年级语文"
},
{
"type_name": "6年级数学",
"type_id": "6年级数学"
},
{
"type_name": "6年级英语",
"type_id": "6年级英语"
}
],
"filters": {
"1年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版1年级语文"
},
{
"n": "人教版",
"v": "人教版1年级语文"
},
{
"n": "北师大版",
"v": "北师大版1年级语文"
},
{
"n": "苏教版",
"v": "苏教版1年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"1年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版1年级英语"
},
{
"n": "人教版",
"v": "人教版1年级英语"
},
{
"n": "北师大版",
"v": "北师大版1年级英语"
},
{
"n": "苏教版",
"v": "苏教版1年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"1年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版1年级数学"
},
{
"n": "人教版",
"v": "人教版1年级数学"
},
{
"n": "北师大版",
"v": "北师大版1年级数学"
},
{
"n": "苏教版",
"v": "苏教版1年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"2年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版2年级语文"
},
{
"n": "人教版",
"v": "人教版2年级语文"
},
{
"n": "北师大版",
"v": "北师大版2年级语文"
},
{
"n": "苏教版",
"v": "苏教版2年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"2年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版2年级英语"
},
{
"n": "人教版",
"v": "人教版2年级英语"
},
{
"n": "北师大版",
"v": "北师大版2年级英语"
},
{
"n": "苏教版",
"v": "苏教版2年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"2年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版2年级数学"
},
{
"n": "人教版",
"v": "人教版2年级数学"
},
{
"n": "北师大版",
"v": "北师大版2年级数学"
},
{
"n": "苏教版",
"v": "苏教版2年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"3年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版3年级语文"
},
{
"n": "人教版",
"v": "人教版3年级语文"
},
{
"n": "北师大版",
"v": "北师大版3年级语文"
},
{
"n": "苏教版",
"v": "苏教版3年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"3年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版3年级英语"
},
{
"n": "人教版",
"v": "人教版3年级英语"
},
{
"n": "北师大版",
"v": "北师大版3年级英语"
},
{
"n": "苏教版",
"v": "苏教版3年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"3年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版3年级数学"
},
{
"n": "人教版",
"v": "人教版3年级数学"
},
{
"n": "北师大版",
"v": "北师大版3年级数学"
},
{
"n": "苏教版",
"v": "苏教版3年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"4年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版4年级语文"
},
{
"n": "人教版",
"v": "人教版4年级语文"
},
{
"n": "北师大版",
"v": "北师大版4年级语文"
},
{
"n": "苏教版",
"v": "苏教版4年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"4年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版4年级英语"
},
{
"n": "人教版",
"v": "人教版4年级英语"
},
{
"n": "北师大版",
"v": "北师大版4年级英语"
},
{
"n": "苏教版",
"v": "苏教版4年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"4年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版4年级数学"
},
{
"n": "人教版",
"v": "人教版4年级数学"
},
{
"n": "北师大版",
"v": "北师大版4年级数学"
},
{
"n": "苏教版",
"v": "苏教版4年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"5年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版5年级语文"
},
{
"n": "人教版",
"v": "人教版5年级语文"
},
{
"n": "北师大版",
"v": "北师大版5年级语文"
},
{
"n": "苏教版",
"v": "苏教版5年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"5年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版5年级英语"
},
{
"n": "人教版",
"v": "人教版5年级英语"
},
{
"n": "北师大版",
"v": "北师大版5年级英语"
},
{
"n": "苏教版",
"v": "苏教版5年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"5年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版5年级数学"
},
{
"n": "人教版",
"v": "人教版5年级数学"
},
{
"n": "北师大版",
"v": "北师大版5年级数学"
},
{
"n": "苏教版",
"v": "苏教版5年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"6年级语文": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版6年级语文"
},
{
"n": "人教版",
"v": "人教版6年级语文"
},
{
"n": "北师大版",
"v": "北师大版6年级语文"
},
{
"n": "苏教版",
"v": "苏教版6年级语文"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"6年级英语": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版6年级英语"
},
{
"n": "人教版",
"v": "人教版6年级英语"
},
{
"n": "北师大版",
"v": "北师大版6年级英语"
},
{
"n": "苏教版",
"v": "苏教版6年级英语"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
],
"6年级数学": [
{
"key": "tid",
"name": "分类",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "沪教版",
"v": "沪教版6年级数学"
},
{
"n": "人教版",
"v": "人教版6年级数学"
},
{
"n": "北师大版",
"v": "北师大版6年级数学"
},
{
"n": "苏教版",
"v": "苏教版6年级数学"
}
]
},
{
"key": "duration",
"name": "时长",
"value": [
{
"n": "全部",
"v": "0"
},
{
"n": "60分钟以上",
"v": "4"
},
{
"n": "30~60分钟",
"v": "3"
},
{
"n": "10~30分钟",
"v": "2"
},
{
"n": "10分钟以下",
"v": "1"
}
]
}
]
}
}
+6
View File
@@ -0,0 +1,6 @@
{
"线路数组": "<a data-toggle=\"tab\"&&/a>",
"线路标题": ">&&<",
"分类url": "http://dyxz.tv/list/{cateId}_{catePg}.html",
"分类": "电影$1#电视剧$2#动漫$3#综艺$4"
}
+7
View File
@@ -0,0 +1,7 @@
{
"请求头": "User-Agent$MOBILE_UA",
"编码": "UTF-8",
"分类": "电影$1#电视剧$2#综艺$3#动漫$4",
"类型": "动作片$6#喜剧片$7#爱情片$8#科幻片$9#奇幻片$10#恐怖片$11#剧情片$12#战争片$20#动画片$26#悬疑片$22#冒险片$23#犯罪片$24#惊悚片$45#歌舞片$46#灾难片$47#网络片$48||国产剧$13#港台剧$14#日剧$15#韩剧$33#欧美剧$16#泰剧$34#新马剧$35#其他剧$25||内地综艺$27#港台综艺$28#日本综艺$29#韩国综艺$36#欧美综艺$30#新马泰综艺$37#其他综艺$38||国产动漫$31#日本动漫$32#韩国动漫$39#港台动漫$40#新马泰动漫$41#欧美动漫$42#其他动漫$43",
"分类url": "https://www.ylys.tv/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html"
}
+314
View File
@@ -0,0 +1,314 @@
# coding=utf-8
# !/usr/bin/python
"""
作者 丢丢喵 🚓 内容均从互联网收集而来 仅供交流学习使用 版权归原创者所有 如侵犯了您的权益 请通知作者 将及时删除侵权内容
====================Diudiumiao====================
"""
from Crypto.Util.Padding import unpad
from Crypto.Util.Padding import pad
from urllib.parse import unquote
from Crypto.Cipher import ARC4
from urllib.parse import quote
from base.spider import Spider
from Crypto.Cipher import AES
from datetime import datetime
from bs4 import BeautifulSoup
from base64 import b64decode
import urllib.request
import urllib.parse
import datetime
import binascii
import requests
import base64
import json
import time
import sys
import re
import os
sys.path.append('..')
xurl = "https://search.bilibili.com"
xurl1 = "https://api.live.bilibili.com"
headerx = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0'
}
class Spider(Spider):
global xurl
global xurl1
global headerx
def getName(self):
return "首页"
def init(self, extend):
pass
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def extract_middle_text(self, text, start_str, end_str, pl, start_index1: str = '', end_index2: str = ''):
if pl == 3:
plx = []
while True:
start_index = text.find(start_str)
if start_index == -1:
break
end_index = text.find(end_str, start_index + len(start_str))
if end_index == -1:
break
middle_text = text[start_index + len(start_str):end_index]
plx.append(middle_text)
text = text.replace(start_str + middle_text + end_str, '')
if len(plx) > 0:
purl = ''
for i in range(len(plx)):
matches = re.findall(start_index1, plx[i])
output = ""
for match in matches:
match3 = re.search(r'(?:^|[^0-9])(\d+)(?:[^0-9]|$)', match[1])
if match3:
number = match3.group(1)
else:
number = 0
if 'http' not in match[0]:
output += f"#{match[1]}${number}{xurl}{match[0]}"
else:
output += f"#{match[1]}${number}{match[0]}"
output = output[1:]
purl = purl + output + "$$$"
purl = purl[:-3]
return purl
else:
return ""
else:
start_index = text.find(start_str)
if start_index == -1:
return ""
end_index = text.find(end_str, start_index + len(start_str))
if end_index == -1:
return ""
if pl == 0:
middle_text = text[start_index + len(start_str):end_index]
return middle_text.replace("\\", "")
if pl == 1:
middle_text = text[start_index + len(start_str):end_index]
matches = re.findall(start_index1, middle_text)
if matches:
jg = ' '.join(matches)
return jg
if pl == 2:
middle_text = text[start_index + len(start_str):end_index]
matches = re.findall(start_index1, middle_text)
if matches:
new_list = [f'{item}' for item in matches]
jg = '$$$'.join(new_list)
return jg
def homeContent(self, filter):
result = {}
result = {"class": [{"type_id": "", "type_name": "舞蹈"},
{"type_id": "音乐", "type_name": "音乐"},
{"type_id": "手游", "type_name": "手游"},
{"type_id": "网游", "type_name": "网游"},
{"type_id": "单机游戏", "type_name": "单机游戏"},
{"type_id": "虚拟主播", "type_name": "虚拟主播"},
{"type_id": "电台", "type_name": "电台"},
{"type_id": "体育", "type_name": "体育"},
{"type_id": "聊天", "type_name": "聊天"},
{"type_id": "娱乐", "type_name": "娱乐"},
{"type_id": "电影", "type_name": "影视"},
{"type_id": "新闻", "type_name": "新闻"}]
}
return result
def homeVideoContent(self):
pass
def categoryContent(self, cid, pg, filter, ext):
result = {}
videos = []
if pg:
page = int(pg)
else:
page = 1
url = f'{xurl}/live?keyword={cid}&page={str(page)}'
detail = requests.get(url=url, headers=headerx)
detail.encoding = "utf-8"
res = detail.text
doc = BeautifulSoup(res, "lxml")
soups = doc.find_all('div', class_="video-list-item")
for vod in soups:
names = vod.find('h3', class_="bili-live-card__info--tit")
name = names.text.strip().replace('直播中', '')
id = names.find('a')['href']
id = self.extract_middle_text(id, 'bilibili.com/', '?', 0)
pic = vod.find('img')['src']
if 'http' not in pic:
pic = "https:" + pic
remarks = vod.find('a', class_="bili-live-card__info--uname")
remark = remarks.text.strip()
video = {
"vod_id": id,
"vod_name": name,
"vod_pic": pic,
"vod_remarks": remark
}
videos.append(video)
result = {'list': videos}
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def detailContent(self, ids):
did = ids[0]
result = {}
videos = []
xianlu = ''
bofang = ''
url = f'{xurl1}/xlive/web-room/v2/index/getRoomPlayInfo?room_id={did}&platform=web&protocol=0,1&format=0,1,2&codec=0,1'
detail = requests.get(url=url, headers=headerx)
detail.encoding = "utf-8"
data = detail.json()
content = '欢迎观看哔哩直播'
setup = data['data']['playurl_info']['playurl']['stream']
nam = 0
for vod in setup:
try:
host = vod['format'][nam]['codec'][0]['url_info'][1]['host']
except (KeyError, IndexError):
continue
base = vod['format'][nam]['codec'][0]['base_url']
extra = vod['format'][nam]['codec'][0]['url_info'][1]['extra']
id = host + base + extra
nam = nam + 1
namc = f"{nam}号线路"
bofang = bofang + namc + '$' + id + '#'
bofang = bofang[:-1]
xianlu = '哔哩专线'
videos.append({
"vod_id": did,
"vod_content": content,
"vod_play_from": xianlu,
"vod_play_url": bofang
})
result['list'] = videos
return result
def playerContent(self, flag, id, vipFlags):
result = {}
result["parse"] = 0
result["playUrl"] = ''
result["url"] = id
result["header"] = headerx
return result
def searchContentPage(self, key, quick, pg):
result = {}
videos = []
if pg:
page = int(pg)
else:
page = 1
url = f'{xurl}/live?keyword={key}&page={str(page)}'
detail = requests.get(url=url, headers=headerx)
detail.encoding = "utf-8"
res = detail.text
doc = BeautifulSoup(res, "lxml")
soups = doc.find_all('div', class_="video-list-item")
for vod in soups:
names = vod.find('h3', class_="bili-live-card__info--tit")
name = names.text.strip().replace('直播中', '')
id = names.find('a')['href']
id = self.extract_middle_text(id, 'bilibili.com/', '?', 0)
pic = vod.find('img')['src']
if 'http' not in pic:
pic = "https:" + pic
remarks = vod.find('a', class_="bili-live-card__info--uname")
remark = remarks.text.strip()
video = {
"vod_id": id,
"vod_name": name,
"vod_pic": pic,
"vod_remarks": remark
}
videos.append(video)
result['list'] = videos
result['page'] = pg
result['pagecount'] = 9999
result['limit'] = 90
result['total'] = 999999
return result
def searchContent(self, key, quick, pg="1"):
return self.searchContentPage(key, quick, '1')
def localProxy(self, params):
if params['type'] == "m3u8":
return self.proxyM3u8(params)
elif params['type'] == "media":
return self.proxyMedia(params)
elif params['type'] == "ts":
return self.proxyTs(params)
return None
+1260
View File
@@ -0,0 +1,1260 @@
# -*- coding: utf-8 -*-
# by @星河
# 修复版本 - 参考最新三合一.js重构虎牙、斗鱼、B站直播逻辑
# 修复:虎牙清晰度选择,确保ratio参数正确传递码率值
# 修复:斗鱼切换分辨率只能播放1秒的问题(每次重新获取安全密钥和签名)
# 修复:B站使用特殊UA和WBI签名绕过-352风控 [^90^][^30^]
import json
import re
import sys
import time
import hashlib
import random
import urllib.parse
from base64 import b64decode, b64encode
from urllib.parse import parse_qs
import requests
from pyquery import PyQuery as pq
sys.path.append('..')
from base.spider import Spider
from concurrent.futures import ThreadPoolExecutor
class Spider(Spider):
def init(self, extend=""):
# 初始化B站WBI密钥
self.bili_wbi_keys = None
self.bili_wbi_expire = 0
pass
def getName(self):
return "直播"
def isVideoFormat(self, url):
pass
def manualVideoCheck(self):
pass
def destroy(self):
pass
headers = [
{
# 特殊UA绕过B站风控 [^90^]
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
},
{
"User-Agent": "Dart/3.4 (dart:io)"
}
]
excepturl = 'https://www.baidu.com'
hosts = {
"huya": ["https://www.huya.com", "https://mp.huya.com"],
"douyu": "https://www.douyu.com",
"wangyi": "https://cc.163.com",
"bili": ["https://api.live.bilibili.com", "https://api.bilibili.com"]
}
referers = {
"huya": "https://live.cdn.huya.com",
"douyu": "https://m.douyu.com",
"bili": "https://live.bilibili.com"
}
playheaders = {
"wangyi": {
"User-Agent": "ExoPlayer",
"Connection": "Keep-Alive",
"Icy-MetaData": "1"
},
"bili": {
'Accept': '*/*',
'Icy-MetaData': '1',
'referer': 'https://live.bilibili.com',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
},
'huya': {
'User-Agent': 'ExoPlayer',
'Connection': 'Keep-Alive',
'Icy-MetaData': '1'
},
'douyu': {
'User-Agent': 'libmpv',
'Icy-MetaData': '1'
}
}
# WBI签名相关常量 [^30^]
MIXIN_KEY_ENC_TAB = [
46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49,
33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40,
61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11,
36, 20, 34, 44, 52
]
def _get_bili_wbi_keys(self):
"""获取B站WBI密钥 [^30^]"""
try:
# 检查缓存
if self.bili_wbi_keys and time.time() < self.bili_wbi_expire:
return self.bili_wbi_keys
# 从导航接口获取 - 使用特殊UA [^90^]
resp = self.fetch(
'https://api.bilibili.com/x/web-interface/nav',
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
'Referer': 'https://www.bilibili.com/'
}
).json()
if resp.get('code') != 0:
return None
img_url = resp['data']['wbi_img']['img_url']
sub_url = resp['data']['wbi_img']['sub_url']
# 提取文件名作为key
img_key = img_url.rsplit('/', 1)[1].split('.')[0]
sub_key = sub_url.rsplit('/', 1)[1].split('.')[0]
self.bili_wbi_keys = (img_key, sub_key)
self.bili_wbi_expire = time.time() + 86400 # 24小时过期
return self.bili_wbi_keys
except Exception as e:
print(f"获取B站WBI密钥失败: {e}")
return None
def _get_mixin_key(self, orig: str):
"""生成mixin_key [^30^]"""
return ''.join([orig[i] for i in self.MIXIN_KEY_ENC_TAB])[:32]
def _enc_wbi(self, params: dict):
"""WBI签名 [^30^]"""
keys = self._get_bili_wbi_keys()
if not keys:
return params
img_key, sub_key = keys
mixin_key = self._get_mixin_key(img_key + sub_key)
# 添加时间戳
params['wts'] = round(time.time())
# 排序参数
params = dict(sorted(params.items()))
# 过滤特殊字符
params = {
k: ''.join(filter(lambda c: c not in "!'()*", str(v)))
for k, v in params.items()
}
# 计算签名
query = urllib.parse.urlencode(params)
w_rid = hashlib.md5((query + mixin_key).encode()).hexdigest()
params['w_rid'] = w_rid
return params
def process_bili(self):
"""获取B站分类列表 - 使用WBI签名 [^30^]"""
try:
# 尝试获取分类列表 - 使用特殊UA和WBI签名
params = {'need_entrance': 1, 'parent_id': 0}
signed_params = self._enc_wbi(params)
data = self.fetch(
f'{self.hosts["bili"][0]}/room/v1/Area/getList',
params=signed_params,
headers=self.headers[0]
).json()
if data.get('code') == 0 and data.get('data'):
# 保存分类数据供后续使用
self.bili_areas = data['data']
return ('bili', [{'key': 'cate', 'name': '分类',
'value': [{'n': i['name'], 'v': str(i['id'])}
for i in data['data']]}])
return 'bili', None
except Exception as e:
print(f"bili处理错误: {e}")
# 使用默认分类
return 'bili', [{'key': 'cate', 'name': '分类',
'value': [{'n': '网游', 'v': '2'}, {'n': '手游', 'v': '3'},
{'n': '单机', 'v': '6'}, {'n': '娱乐', 'v': '1'},
{'n': '电台', 'v': '5'}, {'n': '虚拟主播', 'v': '9'},
{'n': '生活', 'v': '10'}, {'n': '知识', 'v': '11'},
{'n': '赛事', 'v': '13'}]}]
def process_douyu(self):
try:
self.dyufdata = self.fetch(
f'{self.referers["douyu"]}/api/cate/list',
headers=self.headers[1]
).json()
return ('douyu', [{'key': 'cate', 'name': '分类',
'value': [{'n': i['cate1Name'], 'v': str(i['cate1Id'])}
for i in self.dyufdata['data']['cate1Info']]}])
except Exception as e:
print(f"douyu错误: {e}")
return 'douyu', None
def homeContent(self, filter):
result = {}
cateManual = {
"虎牙": "huya",
"斗鱼": "douyu",
"网易": "wangyi",
"B站": "bili"
}
classes = []
filters = {
'huya': [{'key': 'cate', 'name': '分类',
'value': [{'n': '网游', 'v': '1'}, {'n': '单机', 'v': '2'},
{'n': '娱乐', 'v': '8'}, {'n': '手游', 'v': '3'}]}]
}
with ThreadPoolExecutor(max_workers=2) as executor:
futures = {
executor.submit(self.process_bili): 'bili',
executor.submit(self.process_douyu): 'douyu'
}
for future in futures:
platform, filter_data = future.result()
if filter_data:
filters[platform] = filter_data
for k in cateManual:
classes.append({
'type_name': k,
'type_id': cateManual[k]
})
result['class'] = classes
result['filters'] = filters
return result
def homeVideoContent(self):
pass
def categoryContent(self, tid, pg, filter, extend):
vdata = []
result = {}
pagecount = 9999
result['page'] = pg
result['limit'] = 90
result['total'] = 999999
if tid == 'wangyi':
vdata, pagecount = self.wyccContent(tid, pg, filter, extend, vdata)
elif 'bili' in tid:
vdata, pagecount = self.biliContent(tid, pg, filter, extend, vdata)
elif 'huya' in tid:
vdata, pagecount = self.huyaContent(tid, pg, filter, extend, vdata)
elif 'douyu' in tid:
vdata, pagecount = self.douyuContent(tid, pg, filter, extend, vdata)
result['list'] = vdata
result['pagecount'] = pagecount
return result
def wyccContent(self, tid, pg, filter, extend, vdata):
params = {
'format': 'json',
'start': (int(pg) - 1) * 20,
'size': '20',
}
response = self.fetch(f'{self.hosts[tid]}/api/category/live/', params=params, headers=self.headers[0]).json()
for i in response['lives']:
if i.get('cuteid'):
bvdata = self.buildvod(
vod_id=f"{tid}@@{i['cuteid']}",
vod_name=i.get('title'),
vod_pic=i.get('cover'),
vod_remarks=i.get('nickname'),
style={"type": "rect", "ratio": 1.33}
)
vdata.append(bvdata)
return vdata, 9999
def biliContent(self, tid, pg, filter, extend, vdata):
"""B站分类内容 - 使用WBI签名绕过风控 [^30^][^90^]"""
try:
# 分类列表 - 显示子分类
if extend.get('cate') and pg == '1' and 'click' not in tid:
# 从已保存的分类数据中找到对应分类的子分类
if hasattr(self, 'bili_areas'):
for area in self.bili_areas:
if str(area['id']) == extend['cate']:
for sub_area in area.get('list', []):
v = self.buildvod(
vod_id=f"click_{tid}@@{extend['cate']}@@{sub_area['id']}",
vod_name=sub_area.get('name'),
vod_pic=sub_area.get('pic'),
vod_tag=1,
style={"type": "oval", "ratio": 1}
)
vdata.append(v)
return vdata, 1
# 如果没有找到子分类,直接返回空,让用户进入房间列表
return vdata, 1
# 房间列表 - 使用getList接口并添加WBI签名 [^30^]
if 'click' in tid:
# 子分类房间
ids = tid.split('_')[1].split('@@')
tid = ids[0]
parent_area_id = ids[1]
area_id = ids[2]
else:
# 默认使用分类ID作为parent_area_idarea_id为0表示该分类下所有
parent_area_id = extend.get('cate', '2') # 默认网游
area_id = 0
# 构建请求参数并添加WBI签名 [^30^]
params = {
'parent_area_id': parent_area_id,
'area_id': area_id,
'page': pg,
'platform': 'web',
'sort_type': 'online' # 按热度排序
}
signed_params = self._enc_wbi(params)
# 调用getList接口
api_url = f'{self.hosts[tid][0]}/xlive/web-interface/v1/second/getList'
data = self.fetch(api_url, params=signed_params, headers=self.headers[0]).json()
# 如果WBI签名失败,尝试不带签名
if data.get('code') == -352:
print("WBI签名失败,尝试无签名请求...")
params = {
'parent_area_id': parent_area_id,
'area_id': area_id,
'page': pg,
'platform': 'web',
'sort_type': 'online'
}
data = self.fetch(api_url, params=params, headers=self.headers[0]).json()
if data.get('code') == 0:
room_list = data.get('data', {}).get('list', [])
for room in room_list:
if room.get('roomid'):
# 处理在线人数显示
online = room.get('online', 0)
if online > 10000:
online_str = f"{online / 10000:.1f}"
else:
online_str = str(online)
v = self.buildvod(
f"{tid}@@{room['roomid']}",
room.get('title', '未知标题'),
room.get('cover') or room.get('system_cover'),
f"{online_str}",
0,
room.get('uname', ''),
style={"type": "rect", "ratio": 1.33}
)
vdata.append(v)
# 检查是否有更多数据
has_more = data.get('data', {}).get('has_more', 0)
if not has_more:
pagecount = int(pg)
else:
pagecount = 9999
else:
print(f"B站API返回错误: {data.get('message', '未知错误')} (code: {data.get('code')})")
pagecount = 1
return vdata, pagecount
except Exception as e:
print(f"B站内容获取错误: {e}")
return vdata, 1
def huyaContent(self, tid, pg, filter, extend, vdata):
if extend.get('cate') and pg == '1' and 'click' not in tid:
id = extend.get('cate')
data = self.fetch(f'{self.referers[tid]}/liveconfig/game/bussLive?bussType={id}',
headers=self.headers[1]).json()
for i in data['data']:
v = self.buildvod(
vod_id=f"click_{tid}@@{int(i['gid'])}",
vod_name=i.get('gameFullName'),
vod_pic=f'https://huyaimg.msstatic.com/cdnimage/game/{int(i["gid"])}-MS.jpg',
vod_tag=1,
style={"type": "oval", "ratio": 1}
)
vdata.append(v)
return vdata, 1
else:
gid = ''
if 'click' in tid:
ids = tid.split('_')[1].split('@@')
tid = ids[0]
gid = f'&gameId={ids[1]}'
data = self.fetch(f'{self.hosts[tid][0]}/cache.php?m=LiveList&do=getLiveListByPage&tagAll=0{gid}&page={pg}',
headers=self.headers[1]).json()
for i in data['data']['datas']:
if i.get('profileRoom'):
v = self.buildvod(
f"{tid}@@{i['profileRoom']}",
i.get('introduction'),
i.get('screenshot'),
str(int(i.get('totalCount', '1')) / 10000) + '',
0,
i.get('nick'),
style={"type": "rect", "ratio": 1.33}
)
vdata.append(v)
return vdata, 9999
def douyuContent(self, tid, pg, filter, extend, vdata):
if extend.get('cate') and pg == '1' and 'click' not in tid:
for i in self.dyufdata['data']['cate2Info']:
if str(i['cate1Id']) == extend['cate']:
v = self.buildvod(
vod_id=f"click_{tid}@@{i['cate2Id']}",
vod_name=i.get('cate2Name'),
vod_pic=i.get('icon'),
vod_remarks=i.get('count'),
vod_tag=1,
style={"type": "oval", "ratio": 1}
)
vdata.append(v)
return vdata, 1
else:
path = f'/japi/weblist/apinc/allpage/6/{pg}'
if 'click' in tid:
ids = tid.split('_')[1].split('@@')
tid = ids[0]
path = f'/gapi/rkc/directory/mixList/2_{ids[1]}/{pg}'
url = f'{self.hosts[tid]}{path}'
data = self.fetch(url, headers=self.headers[1]).json()
for i in data['data']['rl']:
v = self.buildvod(
vod_id=f"{tid}@@{i['rid']}",
vod_name=i.get('rn'),
vod_pic=i.get('rs16'),
vod_year=str(int(i.get('ol', 1)) / 10000) + '',
vod_remarks=i.get('nn'),
style={"type": "rect", "ratio": 1.33}
)
vdata.append(v)
return vdata, 9999
def detailContent(self, ids):
ids = ids[0].split('@@')
if ids[0] == 'wangyi':
vod = self.wyccDetail(ids)
elif ids[0] == 'bili':
vod = self.biliDetail(ids)
elif ids[0] == 'huya':
vod = self.huyaDetail(ids)
elif ids[0] == 'douyu':
vod = self.douyuDetail(ids)
return {'list': [vod]}
def wyccDetail(self, ids):
try:
vdata = self.getpq(f'{self.hosts[ids[0]]}/{ids[1]}', self.headers[0])('script').eq(-1).text()
def get_quality_name(vbr):
if vbr <= 600:
return "标清"
elif vbr <= 1000:
return "高清"
elif vbr <= 2000:
return "超清"
else:
return "蓝光"
data = json.loads(vdata)['props']['pageProps']['roomInfoInitData']
name = data['live'].get('title', ids[0])
vod = self.buildvod(vod_name=data.get('keywords_suffix'), vod_remarks=data['live'].get('title'),
vod_content=data.get('description_suffix'))
resolution_data = data['live']['quickplay']['resolution']
all_streams = {}
sorted_qualities = sorted(resolution_data.items(),
key=lambda x: x[1]['vbr'],
reverse=True)
for quality, data in sorted_qualities:
vbr = data['vbr']
quality_name = get_quality_name(vbr)
for cdn_name, url in data['cdn'].items():
if cdn_name not in all_streams and type(url) == str and url.startswith('http'):
all_streams[cdn_name] = []
if isinstance(url, str) and url.startswith('http'):
all_streams[cdn_name].extend([quality_name, url])
plists = []
names = []
for i, (cdn_name, stream_list) in enumerate(all_streams.items(), 1):
names.append(f'线路{i}')
pstr = f"{name}${ids[0]}@@{self.e64(json.dumps(stream_list))}"
plists.append(pstr)
vod['vod_play_from'] = "$$$".join(names)
vod['vod_play_url'] = "$$$".join(plists)
return vod
except Exception as e:
return self.handle_exception(e)
def biliDetail(self, ids):
"""
B站直播详情 - 使用playUrl接口获取多清晰度
"""
try:
room_id = ids[1]
# 获取房间信息
info_res = self.fetch(
f'{self.hosts["bili"][0]}/room/v1/Room/get_info?room_id={room_id}',
headers=self.headers[0]
).json()
if info_res.get('code') != 0:
return self.handle_exception(Exception("获取房间信息失败"))
room_info = info_res['data']
title = room_info.get('title', 'B站直播')
vod = self.buildvod(
vod_name=title,
type_name=f"{room_info.get('parent_area_name', '')}/{room_info.get('area_name', '')}",
vod_director=room_info.get('uname', ''),
vod_remarks=f"在线{room_info.get('online', 0)}"
)
# 获取播放地址信息
play_res = self.fetch(
f'{self.hosts["bili"][0]}/room/v1/Room/playUrl?cid={room_id}&qn=10000&platform=web',
headers={
**self.headers[0],
'Referer': 'https://live.bilibili.com/',
'Origin': 'https://live.bilibili.com'
}
).json()
if play_res.get('code') != 0:
return self.handle_exception(Exception("获取播放地址失败"))
play_data = play_res['data']
accept_quality = play_data.get('accept_quality', ['10000', '400', '250', '150'])
quality_desc = {item['qn']: item['desc'] for item in play_data.get('quality_description', [])}
# 构建清晰度列表
qualities = []
for qn in sorted([int(q) for q in accept_quality], reverse=True):
desc = quality_desc.get(qn, f'清晰度{qn}')
qualities.append(f"{desc}$bili@@{room_id}@@{qn}")
vod['vod_play_from'] = 'B站直播'
vod['vod_play_url'] = '#'.join(qualities)
return vod
except Exception as e:
print(f"B站详情错误: {e}")
return self.handle_exception(e)
def huyaDetail(self, ids):
"""
虎牙播放详情 - 参考最新三合一.js重构
支持多线路多清晰度选择
核心算法通过房间信息API获取uidstreamName和rateArray为每个清晰度生成签名URL
清晰度说明
- 蓝光8M/6M/4M/10M = 8000/6000/4000/10000 kbps = 1080P+
- 蓝光 = 3000 kbps = 1080P
- 超清 = 2000 kbps = 1080P (官方标准)
- 高清 = 1200 kbps = 720P
- 标清/流畅 = 500-800 kbps = 480P/540P
"""
try:
room_id = ids[1]
# 1. 获取房间信息
api_url = f'{self.hosts[ids[0]][1]}/cache.php?m=Live&do=profileRoom&roomid={room_id}'
res = self.fetch(api_url, headers=self.headers[0])
if res.status_code != 200:
return self.handle_exception(Exception(f"API请求失败: {res.status_code}"))
data = res.json()
if not data or not data.get('data'):
return self.handle_exception(Exception("房间数据为空"))
room_data = data['data']
# 2. 提取关键信息
uid = room_data.get('profileInfo', {}).get('uid')
stream_info = room_data.get('stream', {})
live_data = room_data.get('liveData', {})
if not uid:
return self.handle_exception(Exception("缺少uid"))
# 3. 获取streamName和码率信息
base_stream_list = stream_info.get('baseSteamInfoList', [])
if not base_stream_list:
return self.handle_exception(Exception("无直播流信息"))
# 获取第一个CDN的streamName作为基准
base_stream = base_stream_list[0]
stream_name = base_stream.get('sStreamName')
if not stream_name:
return self.handle_exception(Exception("无法获取streamName"))
# 4. 构建VOD对象
vod = self.buildvod(
vod_name=live_data.get('introduction', '虎牙直播'),
type_name=live_data.get('gameFullName', ''),
vod_director=live_data.get('nick', ''),
vod_remarks=live_data.get('contentIntro', ''),
)
# 5. 获取所有CDN线路
cdn_list = []
for stream in base_stream_list:
cdn_type = stream.get('sCdnType', 'AL')
flv_url = stream.get('sFlvUrl', '')
hls_url = stream.get('sHlsUrl', '')
stream_name_cdn = stream.get('sStreamName', stream_name)
if flv_url:
cdn_list.append({
'cdn': cdn_type,
'flv_base': flv_url,
'hls_base': hls_url,
'stream_name': stream_name_cdn,
'priority': stream.get('iWebPriorityRate', 0)
})
# 按优先级排序
cdn_list.sort(key=lambda x: x['priority'], reverse=True)
# 6. 获取清晰度列表 (rateArray)
rate_array = stream_info.get('rateArray', [])
# 如果没有rateArray,尝试从vMultiStreamInfo获取
if not rate_array and 'vMultiStreamInfo' in room_data:
rate_array = room_data['vMultiStreamInfo']
# 如果仍然没有,使用默认清晰度(按虎牙官方标准)
if not rate_array:
rate_array = [
{'sDisplayName': '蓝光4M', 'iBitRate': 4000},
{'sDisplayName': '蓝光', 'iBitRate': 3000},
{'sDisplayName': '超清', 'iBitRate': 2000}, # 2000kbps = 1080P
{'sDisplayName': '高清', 'iBitRate': 1200}, # 1200kbps = 720P
{'sDisplayName': '流畅', 'iBitRate': 500}
]
# 过滤和排序清晰度
# 虎牙的rateArray中,iBitRate就是码率值,sDisplayName是显示名称
# 需要确保:超清=2000kbps(1080P),高清=1200kbps(720P)
filtered_rates = []
seen_bitrates = set()
for rate in rate_array:
bit_rate = rate.get('iBitRate', 0)
name = rate.get('sDisplayName', '')
# 跳过重复的码率
if bit_rate in seen_bitrates:
continue
# 修正清晰度名称,确保符合虎牙标准
# 2000kbps应该是超清(1080P),不是高清
if bit_rate == 2000 and ('高清' in name or '720' in name):
name = '超清' # 强制修正为超清
elif bit_rate == 1200 and ('标清' in name or '480' in name):
name = '高清' # 1200kbps对应高清
elif bit_rate == 2000 and name == '原画':
name = '超清' # 修正原画为超清
seen_bitrates.add(bit_rate)
filtered_rates.append({
'sDisplayName': name,
'iBitRate': bit_rate
})
# 按码率从高到低排序
sorted_rates = sorted(filtered_rates, key=lambda x: x['iBitRate'], reverse=True)
# 7. 为每个CDN生成各清晰度的播放URL
play_lines = []
line_names = []
for cdn_idx, cdn in enumerate(cdn_list[:3]): # 最多取3个CDN
cdn_name = cdn['cdn']
line_names.append(f"线路{cdn_idx + 1}({cdn_name})")
qualities = []
for rate in sorted_rates:
quality_name = rate['sDisplayName']
bit_rate = rate['iBitRate']
# 生成该清晰度的URL
quality_url = self._generate_huya_play_url(
cdn, uid, stream_name, bit_rate
)
qualities.extend([quality_name, quality_url])
# 编码该线路的所有清晰度
encoded_qualities = self.e64(json.dumps(qualities))
play_lines.append(f"{live_data.get('introduction', '直播')}${ids[0]}@@{encoded_qualities}")
# 8. 构建播放数据
vod['vod_play_from'] = "$$$".join(line_names)
vod['vod_play_url'] = "$$$".join(play_lines)
return vod
except Exception as e:
return self.handle_exception(e)
def _generate_huya_play_url(self, cdn, uid, stream_name, bit_rate):
"""
生成虎牙播放URL参考最新三合一.js算法
关键ratio参数必须正确设置为iBitRate值如20004000
"""
# 基础URL构建
flv_base = cdn['flv_base']
stream = cdn['stream_name']
# 生成时间戳和签名参数
timestamp = int(time.time())
seqid = f"{uid}{timestamp}"
ss = hashlib.md5(f"{seqid}|huya_adr|102".encode()).hexdigest()
ws_time = hex(timestamp + 21600)[2:] # 16进制,有效期6小时
# 计算wsSecret
ws_secret = hashlib.md5(
f"DWq8BcJ3h6DJt6TY_{uid}_{stream_name}_{ss}_{ws_time}".encode()
).hexdigest()
# 构建基础URL
base_url = f"{flv_base}/{stream}.flv"
# 关键修复:ratio参数直接使用iBitRate值
# 超清=2000,高清=1200,蓝光=3000/4000/6000/8000
if bit_rate > 0:
ratio_param = f"ratio={bit_rate}"
else:
# 原画/0码率时,使用默认2000或从URL推断
ratio_param = "ratio=2000"
# 构建完整URL
play_url = (
f"{base_url}?{ratio_param}&wsSecret={ws_secret}&wsTime={ws_time}"
f"&ctype=huya_adr&seqid={seqid}&uid={uid}"
f"&fs=bgct&ver=1&t=102"
)
return play_url
def douyuDetail(self, ids):
"""
斗鱼播放详情 - 参考最新三合一.js重构
核心算法设备ID生成 -> 获取加密密钥 -> 计算签名 -> 获取播放地址
修复切换分辨率只能播放1秒的问题
方案存储房间号和码率信息在playerContent中实时获取对应码率的URL
"""
try:
channel = ids[1]
headers = self.gethr(0, zr=f'{self.hosts[ids[0]]}/{channel}')
# 1. 初始化会话和设备ID (参考JS中的initialize和setupDeviceId)
session = {}
# 请求首页获取Cookie
try:
home_res = self.fetch(f'{self.hosts[ids[0]]}/{channel}', headers=headers)
if home_res.headers.get('Set-Cookie'):
cookie_str = home_res.headers.get('Set-Cookie')
# 解析dy_did
did_match = re.search(r'dy_did=([a-f0-9]{32})', cookie_str)
if did_match:
device_id = did_match.group(1)
else:
device_id = self._generate_random_hex(32)
else:
device_id = self._generate_random_hex(32)
except:
device_id = self._generate_random_hex(32)
session['dy_did'] = device_id
session['mantine-color-scheme-value'] = 'light'
# 2. 获取房间基本信息
betard_res = self.fetch(f'{self.hosts[ids[0]]}/betard/{channel}', headers=headers).json()
if not betard_res or not betard_res.get('room'):
return self.handle_exception(Exception("获取房间信息失败"))
room_info = betard_res['room']
vname = room_info.get('room_name', '斗鱼直播')
vod = self.buildvod(
vod_name=vname,
vod_remarks=room_info.get('second_lvl_name', ''),
vod_director=room_info.get('nickname', ''),
)
# 3. 获取安全密钥 (参考JS中的getSecurityKey)
sec_url = f"{self.hosts[ids[0]]}/wgapi/livenc/liveweb/websec/getEncryption?did={device_id}"
sec_res = self.fetch(sec_url, headers=headers).json()
if not sec_res or sec_res.get('error') != 0:
return self.handle_exception(Exception("获取加密密钥失败"))
security_data = sec_res['data']
secret_key = security_data.get('key')
random_str = security_data.get('rand_str')
enc_time = security_data.get('enc_time', 1)
enc_data = security_data.get('enc_data')
# 4. 计算签名 (参考JS中的computeSignature)
current_time = int(time.time())
# 迭代计算MD5
current = random_str
for _ in range(enc_time):
current = hashlib.md5(f"{current}{secret_key}".encode()).hexdigest()
signature = hashlib.md5(f"{current}{secret_key}{channel}{current_time}".encode()).hexdigest()
# 5. 请求播放地址 (参考JS中的requestStreamData)
play_payload = {
'enc_data': enc_data,
'tt': str(current_time),
'did': device_id,
'auth': signature,
'cdn': '',
'rate': '',
'hevc': '0',
'fa': '0',
'ive': '0'
}
play_api = f"{self.hosts[ids[0]]}/lapi/live/getH5PlayV1/{channel}"
# 构建请求头带Cookie
play_headers = headers.copy()
cookie_str = '; '.join([f"{k}={v}" for k, v in session.items()])
play_headers['Cookie'] = cookie_str
play_headers['Content-Type'] = 'application/x-www-form-urlencoded'
play_res = requests.post(play_api, data=play_payload, headers=play_headers, timeout=10).json()
if not play_res or play_res.get('error') != 0:
# 尝试旧版API
play_res = self._try_legacy_douyu_api(channel, device_id, signature, current_time, play_headers)
if not play_res:
return self.handle_exception(Exception("获取播放地址失败"))
stream_info = play_res.get('data', {})
# 6. 检查并更新设备ID (参考JS中的checkAndUpdateDeviceId)
rtmp_live = stream_info.get('rtmp_live', '')
if rtmp_live:
did_match = re.search(r'did=([a-f0-9]{32})', rtmp_live)
if did_match and did_match.group(1) != device_id:
device_id = did_match.group(1)
session['dy_did'] = device_id
# 重新请求
play_payload['did'] = device_id
play_res = requests.post(play_api, data=play_payload, headers=play_headers, timeout=10).json()
if play_res and play_res.get('error') == 0:
stream_info = play_res.get('data', {})
# 7. 提取播放URL和多码率信息
stream_url = None
if stream_info.get('rtmp_url') and stream_info.get('rtmp_live'):
stream_url = f"{stream_info['rtmp_url']}/{stream_info['rtmp_live']}"
elif stream_info.get('hls_url'):
stream_url = stream_info['hls_url']
if not stream_url:
return self.handle_exception(Exception("无法获取播放地址"))
# 8. 构建多码率选项
multirates = stream_info.get('multirates', [])
# 关键修复:存储房间号和码率信息,而不是直接存储URL
# 这样在切换清晰度时可以重新获取对应码率的签名URL
qualities = []
if multirates:
# 按码率排序
sorted_rates = sorted(multirates, key=lambda x: x.get('bit', 0), reverse=True)
for rate in sorted_rates:
bit_rate = rate.get('rate', -1)
name = rate.get('name', f"{bit_rate}P")
# 存储格式:码率值,用于playerContent中重新获取URL
# 使用特殊标记#来区分这是码率值而不是URL
qualities.extend([name, f"#{bit_rate}"])
else:
# 只有原画
qualities = ['原画', '#-1']
# 同时存储房间号和设备信息,用于重新获取URL
# 格式:房间号|设备ID|签名信息(base64编码)
session_info = {
'channel': channel,
'device_id': device_id,
'secret_key': secret_key,
'random_str': random_str,
'enc_time': enc_time,
'enc_data': enc_data
}
encoded_session = self.e64(json.dumps(session_info))
# 9. 构建播放数据
# vod_play_url格式:房间名$平台@@base64(清晰度列表)@@base64(会话信息)
encoded_qualities = self.e64(json.dumps(qualities))
vod['vod_play_from'] = '斗鱼直播'
vod['vod_play_url'] = f"{vname}${ids[0]}@@{encoded_qualities}@@{encoded_session}"
return vod
except Exception as e:
return self.handle_exception(e)
def _generate_random_hex(self, length):
"""生成随机十六进制字符串"""
hex_chars = '0123456789abcdef'
return ''.join(random.choice(hex_chars) for _ in range(length))
def _try_legacy_douyu_api(self, channel, device_id, signature, timestamp, headers):
"""尝试使用旧版API获取播放地址"""
try:
legacy_payload = {
'did': device_id,
'tt': str(timestamp),
'sign': signature,
'cdn': '',
'rate': '-1',
'ver': 'Douyu_223061205',
'iar': '1',
'ive': '1',
'hevc': '0',
'fa': '0'
}
legacy_api = f"https://www.douyu.com/lapi/live/getH5Play/{channel}"
res = requests.post(legacy_api, data=legacy_payload, headers=headers, timeout=10)
return res.json() if res.status_code == 200 else None
except:
return None
def _get_douyu_play_url(self, channel, device_id, secret_key, random_str, enc_time, enc_data, rate):
"""
获取斗鱼指定码率的播放URL带签名
用于切换清晰度时重新获取URL
"""
try:
current_time = int(time.time())
# 重新计算签名
current = random_str
for _ in range(enc_time):
current = hashlib.md5(f"{current}{secret_key}".encode()).hexdigest()
signature = hashlib.md5(f"{current}{secret_key}{channel}{current_time}".encode()).hexdigest()
# 构建请求
play_payload = {
'enc_data': enc_data,
'tt': str(current_time),
'did': device_id,
'auth': signature,
'cdn': '',
'rate': str(rate) if rate > 0 else '',
'hevc': '0',
'fa': '0',
'ive': '0'
}
play_api = f"https://www.douyu.com/lapi/live/getH5PlayV1/{channel}"
headers = {
'User-Agent': self.headers[0]['User-Agent'],
'Referer': f'https://www.douyu.com/{channel}',
'Origin': 'https://www.douyu.com',
'Cookie': f'dy_did={device_id}; mantine-color-scheme-value=light',
'Content-Type': 'application/x-www-form-urlencoded'
}
play_res = requests.post(play_api, data=play_payload, headers=headers, timeout=10).json()
if not play_res or play_res.get('error') != 0:
# 尝试旧版API
return self._get_douyu_play_url_legacy(channel, device_id, signature, current_time, rate)
stream_info = play_res.get('data', {})
# 检查设备ID是否匹配
if stream_info.get('rtmp_live'):
did_match = re.search(r'did=([a-f0-9]{32})', stream_info['rtmp_live'])
if did_match and did_match.group(1) != device_id:
# 设备ID不匹配,使用新设备ID重新获取
return self._get_douyu_play_url(channel, did_match.group(1), secret_key, random_str, enc_time, enc_data, rate)
if stream_info.get('rtmp_url') and stream_info.get('rtmp_live'):
return f"{stream_info['rtmp_url']}/{stream_info['rtmp_live']}"
elif stream_info.get('hls_url'):
return stream_info['hls_url']
return None
except Exception as e:
print(f"获取斗鱼播放URL失败: {e}")
return None
def _get_douyu_play_url_legacy(self, channel, device_id, signature, timestamp, rate):
"""使用旧版API获取斗鱼播放URL"""
try:
legacy_payload = {
'did': device_id,
'tt': str(timestamp),
'sign': signature,
'cdn': '',
'rate': str(rate) if rate > 0 else '-1',
'ver': 'Douyu_223061205',
'iar': '1',
'ive': '1',
'hevc': '0',
'fa': '0'
}
legacy_api = f"https://www.douyu.com/lapi/live/getH5Play/{channel}"
headers = {
'User-Agent': self.headers[0]['User-Agent'],
'Referer': f'https://www.douyu.com/{channel}',
'Cookie': f'dy_did={device_id}',
'Content-Type': 'application/x-www-form-urlencoded'
}
res = requests.post(legacy_api, data=legacy_payload, headers=headers, timeout=10)
if res.status_code == 200:
data = res.json()
if data.get('error') == 0:
stream_info = data.get('data', {})
if stream_info.get('rtmp_url') and stream_info.get('rtmp_live'):
return f"{stream_info['rtmp_url']}/{stream_info['rtmp_live']}"
return None
except:
return None
def searchContent(self, key, quick, pg="1"):
pass
def playerContent(self, flag, id, vipFlags):
try:
ids = id.split('@@')
p = 1
if ids[0] in ['wangyi']:
p, url = 0, json.loads(self.d64(ids[1]))
elif ids[0] == 'bili':
p, url = self.biliplay(ids)
elif ids[0] == 'huya':
p, url = self.huyaplay(ids)
elif ids[0] == 'douyu':
p, url = self.douyuplay(ids)
return {'parse': p, 'url': url, 'header': self.playheaders[ids[0]]}
except Exception as e:
return {'parse': 1, 'url': self.excepturl, 'header': self.headers[0]}
def biliplay(self, ids):
"""
B站播放解析 - 使用playUrl接口获取指定清晰度直播流
ids: [平台, 房间号, 清晰度qn]
支持多线路返回
"""
try:
room_id = ids[1]
qn = ids[2] if len(ids) > 2 else '10000'
# 使用playUrl接口获取直播流
play_url = f'{self.hosts["bili"][0]}/room/v1/Room/playUrl?cid={room_id}&qn={qn}&platform=web'
data = self.fetch(play_url, headers={
**self.headers[0],
'Referer': 'https://live.bilibili.com/',
'Origin': 'https://live.bilibili.com'
}).json()
if data.get('code') != 0:
return 1, self.excepturl
play_data = data['data']
durl_list = play_data.get('durl', [])
if not durl_list:
return 1, self.excepturl
# 构建多线路结果 [线路1, URL1, 线路2, URL2, ...]
urls = []
for idx, item in enumerate(durl_list, 1):
url = item.get('url')
if url:
urls.extend([f'线路{idx}', url])
# 如果只有一条线路,直接返回URL
if len(urls) == 2:
return 0, urls[1] # 直接返回URL字符串
return 0, urls
except Exception as e:
print(f"B站播放错误: {e}")
return 1, self.excepturl
def huyaplay(self, ids):
"""
虎牙播放解析 - 返回所有清晰度选项供用户选择
ids[1] 格式: base64编码的 [清晰度名称1, URL1, 清晰度名称2, URL2, ...]
"""
try:
# ids[1] 是编码后的播放地址列表 [名称1, URL1, 名称2, URL2, ...]
decoded = json.loads(self.d64(ids[1]))
# decoded 是一个列表,奇数索引是名称,偶数索引是URL
return 0, decoded
except Exception as e:
print(f"虎牙播放解析错误: {e}")
return 1, self.excepturl
def douyuplay(self, ids):
"""
斗鱼播放解析 - 实时获取对应码率的播放URL
ids格式: [平台, base64(清晰度列表), base64(会话信息)]
清晰度列表: [名称1, #码率1, 名称2, #码率2, ...]
#表示这是码率值,需要重新获取URL
"""
try:
if len(ids) < 3:
# 兼容旧格式
decoded = json.loads(self.d64(ids[1]))
return 0, decoded
# 解析清晰度列表和会话信息
qualities = json.loads(self.d64(ids[1]))
session_info = json.loads(self.d64(ids[2]))
channel = session_info['channel']
device_id = session_info['device_id']
secret_key = session_info['secret_key']
random_str = session_info['random_str']
enc_time = session_info['enc_time']
enc_data = session_info['enc_data']
# 为每个清晰度实时获取播放URL
result = []
for i in range(0, len(qualities), 2):
name = qualities[i]
rate_marker = qualities[i + 1]
# 解析码率值(去掉#前缀)
if rate_marker.startswith('#'):
rate = int(rate_marker[1:])
else:
rate = -1
# 实时获取对应码率的URL
play_url = self._get_douyu_play_url(
channel, device_id, secret_key, random_str,
enc_time, enc_data, rate
)
if play_url:
result.extend([name, play_url])
if not result:
return 1, self.excepturl
return 0, result
except Exception as e:
print(f"斗鱼播放解析错误: {e}")
return 1, self.excepturl
def localProxy(self, param):
pass
def e64(self, text):
try:
text_bytes = text.encode('utf-8')
encoded_bytes = b64encode(text_bytes)
return encoded_bytes.decode('utf-8')
except Exception as e:
print(f"Base64编码错误: {str(e)}")
return ""
def d64(self, encoded_text):
try:
encoded_bytes = encoded_text.encode('utf-8')
decoded_bytes = b64decode(encoded_bytes)
return decoded_bytes.decode('utf-8')
except Exception as e:
print(f"Base64解码错误: {str(e)}")
return ""
def josn_to_params(self, params, skip_empty=False):
query = []
for k, v in params.items():
if skip_empty and not v:
continue
query.append(f"{k}={v}")
return "&".join(query)
def params_to_json(self, query_string):
parsed_data = parse_qs(query_string)
result = {key: value[0] for key, value in parsed_data.items()}
return result
def buildvod(self, vod_id='', vod_name='', vod_pic='', vod_year='', vod_tag='', vod_remarks='', style='',
type_name='', vod_area='', vod_actor='', vod_director='',
vod_content='', vod_play_from='', vod_play_url=''):
vod = {
'vod_id': vod_id,
'vod_name': vod_name,
'vod_pic': vod_pic,
'vod_year': vod_year,
'vod_tag': 'folder' if vod_tag else '',
'vod_remarks': vod_remarks,
'style': style,
'type_name': type_name,
'vod_area': vod_area,
'vod_actor': vod_actor,
'vod_director': vod_director,
'vod_content': vod_content,
'vod_play_from': vod_play_from,
'vod_play_url': vod_play_url
}
vod = {key: value for key, value in vod.items() if value}
return vod
def getpq(self, url, headers=None, cookies=None):
data = self.fetch(url, headers=headers, cookies=cookies).text
try:
return pq(data)
except Exception as e:
print(f"解析页面错误: {str(e)}")
return pq(data.encode('utf-8'))
def gethr(self, index, rf='', zr=''):
headers = self.headers[index]
if zr:
headers['referer'] = zr
else:
headers['referer'] = f"{self.referers[rf]}/"
return headers
def handle_exception(self, e):
print(f"报错: {str(e)}")
return {'vod_play_from': '哎呀翻车啦', 'vod_play_url': f'翻车啦${self.excepturl}'}
BIN
View File
Binary file not shown.