更新源 202606130919

This commit is contained in:
github-actions[bot] committed 2026-06-13 09:19:17 +00:00
1 parent 8e2ac15646
commit 95f93a0f65
31 files changed
+17884 -2266

No files matched your search

+191 -1880
View File
File diff suppressed because it is too large. Load diff
+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/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJdmFyIHZpZCA9IGlucHV0LnNwbGl0KCc9JylbMV07CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maW5kKGZ1bmN0aW9uKHgpIHsKCQkJcmV0dXJuIHhbMF0gPT09IHBhcnNlSW50KHZpZCk7CgkJfSk7CgkJVk9EID0gewoJCQl2b2RfcGljOiAnaHR0cHM6Ly9zdGEuYW5pY2RuLmNvbS9wbGF5ZXJJbWcvOC5qcGcnLAoJCQl2b2RfaWQ6IHBsYXlLZXlzWzBdLAoJCQl2b2RfbmFtZTogcGxheUtleXNbMV0sCgkJCXZvZF9jb250ZW50OiBwbGF5S2V5c1syXSwKCQkJdm9kX3llYXI6IHBsYXlLZXlzWzNdLAoJCQl0eXBlX25hbWU6IHBsYXlLZXlzWzRdLAoJCQl2b2RfYWN0b3I6IHBsYXlLZXlzWzVdLAoJCX07CgkJdmFyIHBhZ2V1cmwgPSBwZChodG1sLCAnLmNhdC1saW5rcyYmYSYmaHJlZicpOwoJCXZhciBwYWdlbnVtID0gMTsKCQlsZXQgdm9kX3RhYl9saXN0ID0gW107CgkJbGV0IHZsaXN0ID0gW107CgkJZm9yIChsZXQgcCA9IDE7IHAgPCBwYXJzZUludChwYWdlbnVtKSArIDE7IHArKykgewoJCQlsZXQgcGh0bWwgPSByZXF1ZXN0KHBhZ2V1cmwgKyAnL3BhZ2UvJyArIHBhZ2VudW0pOwoJCQlsZXQgbmV3X3ZvZF9saXN0ID0gW107CgkJCWxldCB2b2RMaXN0ID0gW107CgkJCXZvZExpc3QgPSBwZGZhKHBodG1sLCAnLnNpdGUtbWFpbiYmYXJ0aWNsZScpOwoJCQlmb3IgKGxldCBpID0gMDsgaSALine truncated
+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
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+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"
}
]
}
]
}
}
File diff suppressed because it is too large. Load diff
+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 @@
//写法思路来海阔视界,xpath筛选。本人是海阔用户,所以搬了海阔的jsoup写法过来。2022年9月17日
//jsoup规则写法请查阅海阔视界或者海阔影视相关教程。不支持js写法
//本文档为完整模板,请不要去无中生有添加多余的键值参数。
{
//规则名
"title": "电影港",
//作者
"author": "香雅情",
//请求头UA,键名$键值,每一组用#分开,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA
//多个请求头参数写法示例,"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok",每一组用#分开。
//习惯查看手机源码写建议用手机版UA,习惯查看PC版源码写建议用电脑版UA
"Headers":"PC_UA",
//网页编码格式默认UTF-8编码,UTF-8,GBK,GB2312
"Coding_format":"gb2312",
//图片是否需要代理
"PicNeedProxy":"0",
//是否开启获取首页数据,0关闭,1开启
"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",
//筛选数据,json格式,参考xpath的筛选写法
"filterdata":{},
//分类页面截取数据模式,0为json,其它数字为普通网页。
"cat_mode": "1",
//分类列表数组定位,最多支持3层,能力有限,不是所有页面都能支持
"cat_arr_rule": "body&&table[width=388]",
//分类片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法
"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.11,可填MOBILE_UA或PC_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",
//POST搜索body,填写搜索关键字的键值,一般常见的是searchword和wd,不是POST搜索的可留空或删除。
"sea_PtBody":"keyboard={wd}&submit=搜+索&show=title,smalltext&tempid=1&tbname=article",
//搜索截取模式,0为json搜索,只支持列表在list数组里的,其它数字为网页截取。
"search_mode": "1",
//搜索列表数组定位,不填默认内置list,最多支持3层,能力有限,不是所有页面都能支持。
"sea_arr_rule": "body&&table[width=388]",
//搜索片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法
"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": "",
//片单链接是否直接播放,0否,1分类片单链接直接播放,2详情选集链接直接播放。
//设置成直接播放后,后面3个参数请注意该留空的请务必留空。
"force_play": "0",
//直接播放链接补前缀
"play_prefix": "",
//直接播放链接补后缀,设置为#isVideo=true#可强制识别为视频链接
"play_suffix": "",
//直接播放链接设置请求头,只对直链视频有效,每一组用#分开
"play_header": "",
//项目信息jsoup与xb截取写法切换,1为jsoup写法(默认),0为xb写法
"proj_is_jsoup":"0",
//类型数据,截取前缀&&截取后缀
"proj_cate": "",
//年代数据,截取前缀&&截取后缀
"proj_year": "",
//地区数据,截取前缀&&截取后缀
"proj_area": "",
//演员数据,截取前缀&&截取后缀
"proj_actor": "演  员&&</",
//简介内容,截取前缀&&截取后缀
"proj_plot": "简  介&&</",
//线路截取区域,如果不需要请把tab_title或tab_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",
//是否开启手动嗅探,只对网页嗅探有效,0否,1是
"ManualSniffer":"0",
//手动嗅探视频链接关键字,每个用#隔开
"VideoFormat":".mp4#.m3u8#.flv",
//手动嗅探视频链接过滤关键词,每个用#隔开
"VideoFilter":".html#=http"
}
File diff suppressed because it is too large. Load diff
+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"
}
]
}
]
}
}
File diff suppressed because it is too large. Load diff
+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
File diff suppressed because it is too large. Load diff
BIN
View File
Binary file not shown.