Add files via upload

This commit is contained in:
n3rddd 2024-06-21 23:03:27 +08:00 committed by GitHub
parent fd8aa40ef4
commit 17af9b7141
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 342 additions and 38 deletions

View File

@ -0,0 +1,73 @@
var rule = {
title: 'script直播[飞]',
host: 'https://zh.superchat.live',
url: '/girls/fyclass#fypage',
searchUrl: '',
searchable: 0,
quickSearch: 0,
filterable: 0,
headers: {
"User-Agent": "okhttp/3.11.0"
},
class_name: 'live',
class_url: 'chinese',
play_parse: true,
lazy: $js.toString(() => {
if (/\.(m3u8|mp4)/.test(input)) {
input = {parse: 0, url: input}
} else {
if (rule.parse_url.startsWith('json:')) {
let purl = rule.parse_url.replace('json:', '') + input;
let html = request(purl);
input = {parse: 0, url: JSON.parse(html).url}
} else {
input = rule.parse_url + input;
}
}
}),
limit: 6,
推荐: '',
double: true,
//一级: '.models-list-container&&.model-list-item;img&&alt;img&&src;;a&&href',
一级: $js.toString(() => {
let html = request('https://zh.stripchatgirls.com/api/front/v2/models?limit=20&topLimit=2000&favoritesLimit=12&primaryTag=girls');
let d = [];
let blocks = JSON.parse(html).blocks;
if (MY_PAGE <= blocks.length) {
let list = JSON.parse(html).blocks[MY_PAGE].models;
//log('长度'+blocks.length)
for (let i in list) {
d.push({
title: list[i].username,
img: list[i].previewUrlThumbBig,
url: 'https://b-hls-14.doppiocdn.net/hls/' + list[i].id + '/' + list[i].id + '.m3u8' + '##' + list[i].previewUrlThumbBig + '##' + list[i].username,
});
}
}
setResult(d)
}),
二级: $js.toString(() => {
// log(MY_URL)
let urls = [];
let URL = MY_URL.split('##')[0];
let PIC = MY_URL.split('##')[1];
let Name = MY_URL.split('##')[2];
let url = URL.split('.m3u8')[0];
let list1 = ['原画', '720p', '480p', '240p'];
let list = [URL, url + '_720p.m3u8', url + '_480p.m3u8', url + '_240p.m3u8'];
list.forEach((it, index) => {
urls.push(list1[index] + '$' + it);
});
//log(urls)
VOD = {
vod_content: URL,
vod_name: Name,
type_name: Name,
vod_pic: PIC,
vod_play_from: '直播源↓',
//vod_play_url: '点击播放$' + MY_URL,
vod_play_url: urls.join('#')
};
}),
搜索: '*',
}

34
JN/dr_py/js/剧哥哥.js Normal file
View File

@ -0,0 +1,34 @@
Object.assign(muban.mxpro.二级, {
tab_text: 'div--small&&Text',
});
var rule = {
模板: 'mxpro',
title: '剧哥哥',//https://jugege.com/
host: 'https://www.jugege.top',
class_parse: '.navbar-items li:gt(0):lt(8);a&&Text;a&&href;/(\\d+).html',
url: '/vodshow/fyfilter.html',
filter_url: '{{fl.cateId}}-{{fl.area}}-{{fl.by}}-{{fl.class}}-----fypage---{{fl.year}}',
searchUrl: '/rss/index.xml?wd=**',
搜索: $js.toString(() => {
let html = request(input);
let items = pdfa(html, 'rss&&item');
// log(items);
let d = [];
items.forEach(it => {
it = it.replace(/title|link|author|pubdate|description/g, 'p');
let url = pdfh(it, 'p:eq(1)&&Text');
d.push({
title: pdfh(it, 'p&&Text'),
url: url,
desc: pdfh(it, 'p:eq(3)&&Text'),
content: pdfh(it, 'p:eq(2)&&Text'),
pic_url: "",
});
});
setResult(d);
}),
filter_def: {
1: {cateId: '1'}, 2: {cateId: '2'}, 4: {cateId: '4'}, 3: {cateId: '3'}
},
filter: 'H4sIAAAAAAAAA+2W308aQRDH/5d79sEDf9V/pfGBGpKaWpuAbUIMSSuCoFaEIEpFa1P5oRWB1lo5cvDP3O7Jf9GF3ZlZWnshbR/v7T7f2dmd2dnduQ3DNBafbhgvwjFj0VheDUWjxpSxFnoZFsgyNZ5ICn4TWn0dHo1bG8rJ+iBRH8oCjPiUUotlMV6pCsDmpttqIgKw8XcH/G1R2RTgnDt1xy7DnBJwzlqOdbowpwT0w8AJcL30sWNlYD0JYHtoVNnelbIpwPV2mq4NNgVanG6hS3EOAW2VbYpTAcbSqDq9c4hFAvql8oPSJfhJQL+zKxE5+EmYZD/55rVbzIFNAtoSO3zzA9gkYO7dLEveQ+4SwDY4zfPjirIpwDmL2w8ZC+aUgPn1btzCd2a3IUVkHJG9ePiMVZSAtv0Uy34FmwSsYv9A1ACqKIF2tcxPc7irI0DbVt/9ApkowB2wc263PBbwmBRfGo6UtygUCYe0S1RusT1r0kt0URuUUhCCBNzoaonfN2GjJdBWtXinh1s1Agy9t89ObAhaAhbo2yHZFOA27rbJpgD9jiq8fA1+EjDOj5fkp4CK/oNsCiiWlh5La8zvfYtZVfCTgH5bWbFTLA13hRgzqfTdbMPNlCAZZLrA53y3L9zwDgPjiOSd04VrpUAveiwcimhF79w6XXvCogemAzNKG31qepD0oK4HSA/oukm6qevTpE9ruvkEdfGp6QukL+j6POnzuj5H+pyuz5I+q+uUr6nna1K+pp6vSfmaer4m5Wvq+ZqUr/jUy/QsRkXi+3lmZX8rEj+6GxzdqgnWV8RQmNixLN4qKMvzlfUonbDmFkvDvY0uv4qEh6suTRmB/9VdPd5Cr47m1ZXZzR2zGmCTMGG3+2NX9up2Xl3Z6z336j5iDl6CR1EBlqvzid56BbjeYYo6qIJJ/lY8/zoe69h+X/D7gt8X/L7wS18Ian3BPyL+EXnkiMxoR+RfWseJ7Vj4fkmY5Lnm1zXRFMAmwX/0/BP91yc6/hNlKCPlbBIAAA=='
}

View File

@ -2,7 +2,11 @@ var rule = {
title: '百忙无果[官]',
host: 'https://pianku.api.%6d%67%74%76.com',
homeUrl: '',
searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/pc/search/v1?q=**&pn=fypage&pc=10',
// searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/pc/search/v1?q=**&pn=fypage&pc=10',
// 新版接口搜索变成v2并且加了验证蛋疼
// searchUrl: 'https://mobileso.bz.mgtv.com/pc/search/v2?allowedRC=1&src=mgtv&did=cf03b959-6945-4cb6-bcb3-88762459354d&timestamp=2024-06-21T15%3A52%3A55Z&signVersion=1&signNonce=8dae67a1fafc4bda984ec8deb47666ad&q=**&pn=fypage&pc=10&corr=1&_support=10000000&signature=4e27fddcd2a1a66d6c1764ed6b74bab7',
// 用手机的吧,搞不定这个
searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/msite/search/v2?q=**&pn=fypage&pc=10',
detailUrl: 'https://pcweb.api.mgtv.com/episode/list?page=1&size=50&video_id=fyid',
searchable: 2,
quickSearch: 0,
@ -131,6 +135,40 @@ var rule = {
setResult(d);
}),
// 搜索: $js.toString(() => {
// fetch_params.headers.Referer = "https://www.mgtv.com";
// fetch_params.headers["User-Agent"] = UA;
// let d = [];
// let html = request(input);
// let json = JSON.parse(html);
// json.data.contents.forEach(function (data) {
// if (data.data.sourceList || data.data.yearList) {
// let list = data.data.sourceList ? data.data.sourceList : data.data.yearList[0].sourceList;
// let desc = "";
// list.forEach(function (it) {
// desc += it.name + "\t"
// });
// let fyclass = '';
// if (list[0].source === "imgo") {
// let img = data.data.pic ? data.data.pic : data.data.yearList[0].pic;
// try {
// fyclass = data.data.desc.find(it => it.label === '类型').url.match(/lib\/(\d+)/)[1] + '$';
// } catch (e) {
// fyclass = '';
// }
// log(fyclass);
// d.push({
// title: data.data.title ? data.data.title : data.data.yearList[0].title,
// img: img,
// content: data.data.story ? data.data.story : data.data.yearList[0].story,
// desc: data.data.playTime,
// url: fyclass + list[0].vid
// })
// }
// }
// });
// setResult(d);
// }),
搜索: $js.toString(() => {
fetch_params.headers.Referer = "https://www.mgtv.com";
fetch_params.headers["User-Agent"] = UA;
@ -138,27 +176,25 @@ var rule = {
let html = request(input);
let json = JSON.parse(html);
json.data.contents.forEach(function (data) {
if (data.data.sourceList || data.data.yearList) {
let list = data.data.sourceList ? data.data.sourceList : data.data.yearList[0].sourceList;
let desc = "";
list.forEach(function (it) {
desc += it.name + "\t"
});
if (data.type && data.type == 'media') {
let item = data.data[0];
let desc = item.desc.join(',');
let fyclass = '';
if (list[0].source === "imgo") {
let img = data.data.pic ? data.data.pic : data.data.yearList[0].pic;
if (item.source === "imgo") {
let img = item.img ? item.img : '';
try {
fyclass = data.data.desc.find(it => it.label === '类型').url.match(/lib\/(\d+)/)[1] + '$';
fyclass = item.rpt.match(/idx=(.*?)&/)[1] + '$';
} catch (e) {
log(e.message);
fyclass = '';
}
log(fyclass);
d.push({
title: data.data.title ? data.data.title : data.data.yearList[0].title,
title: item.title.replace(/<B>|<\/B>/g, ''),
img: img,
content: data.data.story ? data.data.story : data.data.yearList[0].story,
desc: data.data.playTime,
url: fyclass + list[0].vid
content: '',
desc: desc,
url: fyclass + item.url.match(/.*\/(.*?)\.html/)[1]
})
}
}

View File

@ -0,0 +1,26 @@
var rule = {
模板: '自动',
title: '策驰影院',
host: 'https://www.cecidy.cc',
url: '/vodshow/fyclass--------fypage---/',
class_parse: '.nav-list&&li;a&&Text;a&&href;/vodtype/(.*?)/',
searchUrl: '/rss.xml?wd=**',
搜索: $js.toString(() => {
let html = post(input.split('?')[0], {body: input.split('?')[1]});
let items = pdfa(html, 'rss&&item');
// log(items);
let d = [];
items.forEach(it => {
it = it.replace(/title|link|author|pubdate|description/g, 'p');
let url = pdfh(it, 'p:eq(1)&&Text');
d.push({
title: pdfh(it, 'p&&Text'),
url: url,
desc: pdfh(it, 'p:eq(3)&&Text'),
content: pdfh(it, 'p:eq(2)&&Text'),
pic_url: "",
});
});
setResult(d);
}),
}

View File

@ -1,13 +1,14 @@
var rule={
var rule = {
title: '耐看',
host: 'https://nkvod.com',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/nk/-------------.html?wd=**',
// searchUrl: '/nk/-------------.html?wd=**',
searchUrl: '/index.php/rss/index.xml?wd=**',
searchable: 2,
quickSearch: 0,
filterable: 0,
headers: {
'User-Agent': 'MOBILE_UA',
'User-Agent': 'MOBILE_UA',
},
class_parse: '.navbar&&ul&&li;a&&Text;a&&href;/(\\d+).html',
play_parse: false,
@ -17,10 +18,30 @@ var rule={
double: true,
一级: 'a.module-poster-item.module-item;a&&title;img&&data-original;.module-item-note&&Text;a&&href',
二级: {
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".hisSwiper&&span",
"lists": ".his-tab-list:eq(#id) a"},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',}
"title": "h1&&Text;.module-info-tag&&Text",
"img": ".lazyload&&data-original",
"desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
"content": ".module-info-introduction&&Text",
"tabs": ".hisSwiper&&span",
"lists": ".his-tab-list:eq(#id) a"
},
// 搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
搜索: $js.toString(() => {
let html = request(input);
let items = pdfa(html, 'rss&&item');
// log(items);
let d = [];
items.forEach(it => {
it = it.replace(/title|link|author|pubdate|description/g, 'p');
let url = pdfh(it, 'p:eq(1)&&Text');
d.push({
title: pdfh(it, 'p&&Text'),
url: url,
desc: pdfh(it, 'p:eq(3)&&Text'),
content: pdfh(it, 'p:eq(2)&&Text'),
pic_url: "",
});
});
setResult(d);
}),
}

View File

@ -0,0 +1,28 @@
Object.assign(muban.首图2.二级, {
"tabs": ".nav-tabs&&li",
});
var rule = {
模板: '首图2',
title: '西瓜影院',
host: 'https://www.xigua1100.com',
url: '/show/fyclass--------fypage---.html',
searchUrl: '/index.php/rss/index.xml?wd=**',
搜索: $js.toString(() => {
let html = request(input);
let items = pdfa(html, 'rss&&item');
// log(items);
let d = [];
items.forEach(it => {
it = it.replace(/title|link|author|pubdate|description/g, 'p');
let url = pdfh(it, 'p:eq(1)&&Text');
d.push({
title: pdfh(it, 'p&&Text'),
url: url,
desc: pdfh(it, 'p:eq(3)&&Text'),
content: pdfh(it, 'p:eq(2)&&Text'),
pic_url: "",
});
});
setResult(d);
}),
}

15
JN/dr_py/js/豆角网.js Normal file
View File

@ -0,0 +1,15 @@
Object.assign(muban.首图2.二级, {
img: 'img&&src',
tabs: '.stui-pannel__head h4',
});
var rule = {
模板: '首图2',
title: '豆角网',
host: 'https://www.dongkandi.com',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
推荐: 'ul.stui-vodlist.clearfix;li;a&&title;img&&src;.pic-text&&Text;a&&href',
一级: '.stui-vodlist li;a&&title;img&&src;.pic-text&&Text;a&&href',
搜索: 'ul.stui-vodlist__media:eq(0),ul.stui-vodlist:eq(0),#searchList li;a&&title;img&&src;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
}

View File

@ -1,10 +1,13 @@
/**
* 强烈推荐静态分类可以加快速度!!!
* 传参 ?type=url&params=../json/采集.json
* 传参 ?type=url&params=../json/采集静态.json
* [{"name":"暴风资源","url":"https://bfzyapi.com","parse_url":""},{"name":"飞刀资源","url":"http://www.feidaozy.com","parse_url":""},{"name":"黑木耳资源","url":"https://www.heimuer.tv","parse_url":""}]
*/
var rule = {
title: '采集之王[合]',
author: '道长',
version: '20240621 beta6',
host: '',
homeTid: '', // 首页推荐。一般填写第一个资源站的想要的推荐分类的id.可以空
homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
@ -16,15 +19,44 @@ var rule = {
headers: {'User-Agent': 'MOBILE_UA'},
timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
limit: 20,
search_limit: 5, // 搜索限制取前5个可以注释掉就不限制搜索
searchable: 1,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 1,//是否启用分类筛选,
play_parse: true,
parse_url: '', // 这个参数暂时不起作用。聚合类的每个资源应该有自己独立的解析口
parse_url: '', // 这个参数暂时不起作用。聚合类的每个资源应该有自己独立的解析口。单独配置在采集.json里的parse_url有效
// params: 'http://127.0.0.1:5707/files/json/%E9%87%87%E9%9B%86.json',
// params: 'http://127.0.0.1:5707/files/json/采集静态.json',
// hostJs:$js.toString(()=>{
//
// }),
预处理: $js.toString(() => {
function getClasses(item) {
let classes = [];
if (item.class_name && item.class_url) {
if (!/&|电影|电视剧|综艺|动漫[\u4E00-\u9FA5]+/.test(item.class_name)) {
try {
item.class_name = ungzip(item.class_name)
} catch (e) {
log(`不识别的class_name导致gzip解码失败:${e}`)
return classes
}
}
let names = item.class_name.split('&');
let urls = item.class_url.split('&');
let cnt = Math.min(names.length, urls.length);
for (let i = 0; i < cnt; i++) {
classes.push({
'type_id': urls[i],
'type_name': names[i]
});
}
}
return classes
}
let _url = rule.params;
if (_url && typeof (_url) === 'string' && _url.startsWith('http')) {
if (_url && typeof (_url) === 'string' && /^(http|file)/.test(_url)) {
let html = request(_url);
let json = JSON.parse(html);
let _classes = [];
@ -35,11 +67,19 @@ var rule = {
type_name: it.name,
type_id: it.url,
parse_url: it.parse_url || '',
api: it.api || '',
cate_exclude: it.cate_exclude || '',
// class_name: it.class_name || '',
// class_url: it.class_url || '',
};
_classes.push(_obj);
try {
let json1 = JSON.parse(request(urljoin(_obj.type_id, rule.classUrl))).class;
let json1 = [];
if (it.class_name && it.class_url) {
json1 = getClasses(it);
} else {
json1 = JSON.parse(request(urljoin(_obj.type_id, _obj.api || rule.classUrl))).class;
}
if (_obj.cate_exclude) {
json1 = json1.filter(cl => !new RegExp(_obj.cate_exclude, 'i').test(cl.type_name));
}
@ -99,14 +139,21 @@ var rule = {
input = rule.classes;
}),
推荐: $js.toString(() => {
VODS = [];
if (rule.classes) {
let _url = urljoin(rule.classes[0].type_id, input);
let html = request(_url);
let json = JSON.parse(html);
VODS = json.list;
VODS.forEach(it => {
it.vod_id = rule.classes[0].type_id + '$' + it.vod_id
});
if (rule.classes[0].api) {
_url = _url.replace('/api.php/provide/vod/', rule.classes[0].api)
}
try {
let html = request(_url);
let json = JSON.parse(html);
VODS = json.list;
VODS.forEach(it => {
it.vod_id = rule.classes[0].type_id + '$' + it.vod_id
});
} catch (e) {
}
}
}),
一级: $js.toString(() => {
@ -114,6 +161,10 @@ var rule = {
if (rule.classes) {
// log(input);
let _url = urljoin(MY_CATE, input);
let current_vod = rule.classes.find(item => item.type_id === MY_CATE);
if (current_vod && current_vod.api) {
_url = _url.replace('/api.php/provide/vod/', current_vod.api)
}
let html = request(_url);
let json = JSON.parse(html);
VODS = json.list;
@ -127,24 +178,36 @@ var rule = {
VOD = [];
if (rule.classes) {
let _url = urljoin(fyclass, input);
let current_vod = rule.classes.find(item => item.type_id === fyclass);
if (current_vod && current_vod.api) {
_url = _url.replace('/api.php/provide/vod/', current_vod.api)
}
let html = request(_url);
let json = JSON.parse(html);
let data = json.list;
VOD = data[0];
if (current_vod && current_vod.type_name) {
VOD.vod_play_from = VOD.vod_play_from.split('$$$').map(it => current_vod.type_name + '|' + it).join('$$$')
}
}
}),
搜索: $js.toString(() => {
VODS = [];
if (rule.classes) {
rule.classes.forEach(it => {
let search_classes = rule.search_limit?rule.classes.slice(0, rule.search_limit):rule.classes;
search_classes.forEach(it => {
let _url = urljoin(it.type_id, input);
if (it.api) {
_url = _url.replace('/api.php/provide/vod/', it.api)
}
// log(_url);
try {
let html = request(_url);
let json = JSON.parse(html);
let data = json.list;
data.forEach(i => {
i.vod_id = it.type_id + '$' + i.vod_id
i.vod_id = it.type_id + '$' + i.vod_id;
i.vod_remarks = i.vod_remarks + '|' + it.type_name;
});
VODS = VODS.concat(data);
} catch (e) {
@ -156,15 +219,23 @@ var rule = {
}),
lazy: $js.toString(() => {
// lazy想办法用对应的parse_url但是有难度暂未实现
let parse_url = '';
if (flag && flag.includes('|')) {
let type_name = flag.split('|')[0];
let current_vod = rule.classes.find(item => item.type_name === type_name);
if (current_vod && current_vod.parse_url) {
parse_url = current_vod.parse_url
}
}
if (/\.(m3u8|mp4)/.test(input)) {
input = {parse: 0, url: input}
} else {
if (rule.parse_url.startsWith('json:')) {
let purl = rule.parse_url.replace('json:', '') + input;
if (parse_url.startsWith('json:')) {
let purl = parse_url.replace('json:', '') + input;
let html = request(purl);
input = {parse: 0, url: JSON.parse(html).url}
} else {
input = rule.parse_url + input;
input = parse_url + input;
}
}
}),