diff --git a/JN/dr_py/js/MuteFun动漫.js b/JN/dr_py/js/MuteFun动漫.js
new file mode 100644
index 00000000..35120c09
--- /dev/null
+++ b/JN/dr_py/js/MuteFun动漫.js
@@ -0,0 +1,6 @@
+var rule = {
+ 模板: 'mxpro',
+ title: 'MuteFun动漫',
+ host: 'https://www.mutedm.com/',
+ class_parse: '.navbar-items li;a&&Text;a&&href;/(\\d+).html',
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/丫丫电子书[书].js b/JN/dr_py/js/丫丫电子书[书].js
new file mode 100644
index 00000000..a22d8240
--- /dev/null
+++ b/JN/dr_py/js/丫丫电子书[书].js
@@ -0,0 +1,68 @@
+var rule = {
+ 类型: '小说',//影视|听书|漫画|小说
+ title: '丫丫电子书[书]',
+ host: 'http://www.shuyy8.cc/',
+ url: '/fyclass/list_update_fypage.html',
+ searchUrl: '/all/#key=**',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ hikerListCol: "text_1",
+ hikerClassListCol: "text_1",
+ class_parse: '#nav a;a&&Text;a&&href;.*/(.*?)/',
+ cate_exclude: '全部小说',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ let html = request(input);
+ let title = pdfh(html, 'h1&&Text');
+ let content = pdfh(html, '#content--.readbutton&&Html').replace(/\n/g, "").split("
").filter(v => v).slice(0).join("\n").replace(/ /g, ' ').split('
{
+ log('执行重定向:' + MY_URL);
+ // let html = request(MY_URL);
+ MY_URL = pd(html, 'a.diralinks&&href', MY_URL);
+ log('二级重定向到:' + MY_URL);
+ html = request(MY_URL);
+ }),
+ title: 'h1&&Text',
+ img: 'img&&src',
+ desc: '.lastrecord&&Text',
+ content: '.r_cons&&Text',
+ tabs: '.dirtitone&&h2',
+ lists: 'ul&&li',
+ tab_text: 'body&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href',
+ list_url_prefix: '',
+ },
+ 搜索: $js.toString(() => {
+ let html = request(input.split('#')[0]);
+ let lis = pdfa(html, '.aubook2&&h4').filter(it => it.includes(KEY));
+ let d = [];
+ lis.forEach(it => {
+ d.push({
+ title: pdfh(it, 'a&&Text'),
+ desc: pdfh(it, 'h4--a&&Text'),
+ img: "",
+ url: pd(it, 'a&&href', MY_URL),
+ })
+ });
+ setResult(d);
+ }),
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/动漫网.js b/JN/dr_py/js/动漫网.js
new file mode 100644
index 00000000..e65686df
--- /dev/null
+++ b/JN/dr_py/js/动漫网.js
@@ -0,0 +1,10 @@
+muban.首图2.二级.tabs = '.tabt3&&span';
+muban.首图2.二级.lists = '.ulNumList&&ul&&li';
+var rule = {
+ title: '动漫网',
+ 模板: '首图2',
+ host: 'https://www.dongman8.cc',
+ url: '/vodtype/fyclass-fypage.html',
+ searchUrl: '/vodsearch/**----------fypage---.html',
+ 搜索: 'ul.stui-vodlist__media:eq(0),ul.stui-vodlist:eq(0),#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/包子漫画.js b/JN/dr_py/js/包子漫画.js
new file mode 100644
index 00000000..7666d2f4
--- /dev/null
+++ b/JN/dr_py/js/包子漫画.js
@@ -0,0 +1,72 @@
+var rule = {
+ 类型: '漫画',//影视|听书|漫画|小说
+ title: '包子漫画',
+ host: 'https://baozimh.org/',
+ url: 'fyclass/page/fypage',
+ searchUrl: '/s/**?page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ class_name: '全部',
+ class_url: '/manga',
+ class_parse: '.homenavtax&&a;a&&Text;a&&href;org/(.*)',
+ cate_exclude: '',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ log(input);
+ let _id = input.split('@@')[0];
+ let _url = input.split('@@')[1];
+ let mid = _url.split('/').slice(-1)[0].split('-')[0];
+ let html = request(`https://api-get.mgsearcher.com/api/chapter/getinfo?m=${mid}&c=${_id}`, {headers: {Referer: 'https://m.baozimh.one/'}});
+ let json = JSON.parse(html);
+ let imgs = json.data.info.images.map(it => it.url);
+ //log(imgs);
+ input = {url: 'pics://' + imgs.join('&&')};
+ }),
+ double: true,
+ 推荐: '.cardlist;.pb-2;*;*;*;*',
+ 一级: '.cardlist&&.pb-2;.cardtitle&&Text;img&&src;;a&&href',
+ 二级: {
+ 重定向: $js.toString(() => {
+ log('执行重定向:' + MY_URL);
+ // let html = request(MY_URL);
+ MY_URL = pd(html, '#morechap&&a&&href', MY_URL);
+ log('二级重定向到:' + MY_URL);
+ html = request(MY_URL);
+ }),
+ title: 'h1&&Text',
+ img: 'img&&src',
+ desc: '#lastchap&&Text',
+ content: 'p.text-medium&&Text',
+ tabs: 'h2.text-medium',
+ lists: $js.toString(() => {
+ //log(input);
+ let data_id = pdfh(html, '#allchapters&&data-mid');
+ //log(data_id);
+ let html1 = request(`https://api-get.mgsearcher.com/api/manga/get?mid=${data_id}&mode=all`, {headers: {Referer: 'https://m.baozimh.one/'}});
+ let json = JSON.parse(html1);
+ //log(json);
+ let list1 = [];
+ let url_prefix = input.replace('chapterlist', 'manga');
+ json.data.chapters.forEach(it => {
+ let _tt = it.attributes.title;
+ let _slug = it.attributes.slug;
+ let _id = it.id;
+ list1.push(_tt + '$' + _id + '@@' + url_prefix + '/' + _slug);
+ });
+ LISTS = [list1];
+ }),
+ tab_text: 'body&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href',
+ list_url_prefix: '',
+ },
+ 搜索: '*',
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/古风漫画.js b/JN/dr_py/js/古风漫画.js
new file mode 100644
index 00000000..51fadfb2
--- /dev/null
+++ b/JN/dr_py/js/古风漫画.js
@@ -0,0 +1,60 @@
+var rule = {
+ 类型: '漫画',//影视|听书|漫画|小说
+ title: '古风漫画',
+ host: 'https://www.gufengmh9.com/',
+ //host:'https://www.gufengmh.com/',
+ url: '/list/fyclass/fypage/',
+ searchUrl: '/search/?keywords=**&page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ class_parse: '.filter-nav&&ul&&li;a&&Text;a&&href;.*/(.*?)/',
+ cate_exclude: '全部',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ //log(input);
+ let html = request(input);
+ let scripts = pdfa(html, 'script');
+ //log(scripts);
+ let scode = scripts.filter(it => it.includes('var chapterImages'))[0];
+ scode = pdfh(scode, 'script&&Html');
+ //log(scode);
+ let cpath = scode.match(/var chapterPath =.*?"(.*?)"/)[1];
+ //log(cpath);
+ let pgpath = scode.match(/var pageImage =.*?"(.*?)"/)[1];
+ //log(pgpath);
+ let img_str = scode.match(/chapterImages = (.*?);/)[1];
+ // https://res.xiaoqinre.com/images/comic/1366/2730910/1702075658iUtiEMC70Hu8l1AE.jpg
+ //log(img_str);
+ let img_prefix = getHome(pgpath) + '/' + cpath;
+ log(img_prefix);
+ let imgs = eval(img_str);
+ //log(imgs);
+ imgs = imgs.map(it => img_prefix + it);
+ //log(imgs);
+ input = {url: 'pics://' + imgs.join('&&')};
+ }),
+ double: false,
+ 推荐: '.cover-list li;*;*;*;*;*',
+ 一级: '#w1&&.book-list&&li;a&&title;img&&src;.tt&&Text;a&&href;.updateon&&Text',
+ 二级: {
+ title: 'h1&&Text',
+ img: 'img.pic&&src',
+ desc: '.detail-list&&.sj&&Text',
+ content: '#intro-cut&&p&&Text',
+ tabs: '.caption&&span',
+ lists: '.chapter-body&&ul&&li',
+ tab_text: 'body&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href',
+ list_url_prefix: '',
+ },
+ 搜索: '#w0&&.book-list&&li;*;*;*;*;*',
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/大米动漫.js b/JN/dr_py/js/大米动漫.js
new file mode 100644
index 00000000..04d471d7
--- /dev/null
+++ b/JN/dr_py/js/大米动漫.js
@@ -0,0 +1,8 @@
+var rule = {
+ 模板: 'mxpro',
+ title: '大米动漫',
+ host: 'https://damidm.com/',
+ url: 'show/fyclass--------fypage---.html',
+ searchUrl: '/search/**----------fypage---.html',
+ class_parse: '.navbar-items li;a&&Text;a&&href;/(\\d+).html',
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/橘子柚[盘].js b/JN/dr_py/js/橘子柚[盘].js
new file mode 100644
index 00000000..6284ba93
--- /dev/null
+++ b/JN/dr_py/js/橘子柚[盘].js
@@ -0,0 +1,44 @@
+var rule = {
+ title: '橘子柚[盘]',
+ host: 'https://juziyou.vip/',
+ url: '/vodshow/fyclass--------fypage---.html',
+ //url: '/index.php/vodshow/fyfilter.html',
+ searchUrl: 'https://juziyou.vip/vodsearch/**----------fypage---.html',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 0,//是否启用分类筛选,
+
+ filter_def: {
+ 20: {cateId: '21'},
+ 21: {cateId: '22'},
+ 23: {cateId: '23'},
+ 22: {cateId: '24'}
+ },
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ class_parse: '.navbar-items&&li;span&&Text;a&&href;.*/(.*?).html',
+ cate_exclude: '今日|热榜',
+ play_parse: true,
+ //推送阿里播放 支持影视壳
+ lazy: `js:
+ var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
+ var url = html.url;
+ if (url.includes("www.alipan.com") || input.includes("www.aliyundrive.com")){
+ input = 'push://'+url.trim();
+ }
+ `,
+ limit: 6,
+ 推荐: '.module-main;.module-items&&.module-poster-item;a&&title;img&&data-original;.module-item-note&&Text;a&&href',
+ double: true,
+ 一级: '.module-items&&.module-poster-item;a&&title;img&&data-original;.module-item-note&&Text;a&&href',
+ 二级: {
+ title: '.module-info-heading&&h1',
+ img: '.module-item-pic&&img&&data-original',
+ desc: ';.module-info-item-content:eq(2)&&Text;.module-info-tag-link:eq(1)&&Text;.module-info-item-content:eq(1)&&Text;.module-info-item-content:eq(0)&&Text',
+ content: '.module-info-introduction-content&&Text',
+ tabs: '.module-tab-item',
+ lists: '.module-play-list-content&&a',
+ },
+ 搜索: '.module-items .module-card-item;img&&alt;img&&data-original;.module-item-note&&Text;a&&href',
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/顶点小说2[书].js b/JN/dr_py/js/顶点小说2[书].js
new file mode 100644
index 00000000..c879de0f
--- /dev/null
+++ b/JN/dr_py/js/顶点小说2[书].js
@@ -0,0 +1,94 @@
+var rule = {
+ 类型: '小说',//影视|听书|漫画|小说
+ title: '顶点小说2[书]',
+ host: 'https://www.ddyueshu.cc/',
+ 编码: 'gb18030',
+ url: '/fyclass/#fypage',
+
+ searchUrl: '/xiaoshuodaquan/#key=',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ hikerListCol: "text_1",
+ hikerClassListCol: "text_1",
+ //class_name: '全本',
+ //class_url: '0',
+ class_parse: '.nav&&ul&&li;a&&Text;a&&href;.*/(.*?)/',
+ cate_exclude: '书架|排行',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ let html = request(input);
+ let title = pdfh(html, '.bookname&&h1&&Text');
+ let content = pdfh(html, '#content&&Html').replace(/\n/g, "").split("
").filter(v => v).slice(0, -2).join("\n").replace(/ /g, ' ');
+ let ret = JSON.stringify({
+ title,
+ content
+ });
+ input = {parse: 0, url: 'novel://' + ret, js: ''};
+ }),
+ double: false,
+ 推荐: '#newscontent&&ul&&li;.s2&&Text;;.s5&&Text;a&&href',
+ 一级: $js.toString(() => {
+ let d = [];
+ if (MY_CATE == '0') {
+ input = urljoin(rule.host, '/quanben/' + MY_PAGE);
+ let html = request(input);
+ let lis = pdfa(html, 'table.grid&&tr:gt(0)');
+ lis.forEach(it => {
+ d.push({
+ title: pdfh(it, 'a&&Text'),
+ desc: pdfh(it, 'a:eq(1)&&Text'),
+ img: "",
+ url: pd(it, 'a&&href', MY_URL),
+ });
+ });
+ } else {
+ let html = request(input.split('#')[0]);
+ let lis = pdfa(html, '.up&&ul&&li');
+ lis.forEach(it => {
+ d.push({
+ title: pdfh(it, '.s2&&Text'),
+ desc: pdfh(it, '.s4&&Text'),
+ img: "",
+ url: pd(it, 'a&&href', MY_URL),
+ });
+ });
+ }
+ setResult(d);
+ }),
+ 二级: {
+ title: 'h1&&Text',
+ img: '#fmimg&&img&&src',
+ desc: '#info&&p:eq(-1)&&Text',
+ content: '#intro&&p&&Text',
+ tabs: '#list&&dt&&b',
+ lists: '#list&&dd',
+ tab_text: 'b&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href',
+ list_url_prefix: '',
+ },
+ 搜索: $js.toString(() => {
+ let html = request(input.split('#')[0]);
+ let key = decodeStr(KEY, rule.编码);
+ //log(key);
+ let lis = pdfa(html, '.novellist&&ul&&li').filter(it => it.includes(key));
+ let d = [];
+ lis.forEach(it => {
+ d.push({
+ title: pdfh(it, 'a&&Text'),
+ desc: "",
+ img: "",
+ url: pd(it, 'a&&href', MY_URL),
+ })
+ });
+ setResult(d);
+ }),
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/顶点小说[书].js b/JN/dr_py/js/顶点小说[书].js
new file mode 100644
index 00000000..e05f2907
--- /dev/null
+++ b/JN/dr_py/js/顶点小说[书].js
@@ -0,0 +1,79 @@
+var rule = {
+ 类型: '小说',//影视|听书|漫画|小说
+ title: '顶点小说[书]',
+ host: 'https://www.23ddw.cc/',
+ 编码: 'gb18030',
+ url: '/fyclass/#fypage',
+
+ searchUrl: '/modules/article/search.php?searchkey=**&page=fypage',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ hikerListCol: "text_1",
+ hikerClassListCol: "text_1",
+ class_name: '全本',
+ class_url: '0',
+ class_parse: '.nav&&ul&&li;a&&Text;a&&href;class/(.*?)_',
+ cate_exclude: '',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ let html = request(input);
+ let title = pdfh(html, '.bookname&&h1&&Text');
+ let content = pdfh(html, '#content&&Html').replace(/\n/g, "").split("
").filter(v => v).slice(0).join("\n").replace(/ /g, ' ');
+ let ret = JSON.stringify({
+ title,
+ content
+ });
+ input = {parse: 0, url: 'novel://' + ret, js: ''};
+ }),
+ double: false,
+ 推荐: '#newscontent&&ul&&li;.s2&&Text;;.s5&&Text;a&&href',
+ 一级: $js.toString(() => {
+ let d = [];
+ if (MY_CATE == '0') {
+ input = urljoin(rule.host, '/quanben/' + MY_PAGE);
+ let html = request(input);
+ let lis = pdfa(html, 'table.grid&&tr:gt(0)');
+ lis.forEach(it => {
+ d.push({
+ title: pdfh(it, 'a&&Text'),
+ desc: pdfh(it, 'a:eq(1)&&Text'),
+ img: "",
+ url: pd(it, 'a&&href', MY_URL),
+ });
+ });
+ } else {
+ let html = request(input.split('#')[0]);
+ let lis = pdfa(html, '#newscontent&&ul&&li');
+ lis.forEach(it => {
+ d.push({
+ title: pdfh(it, '.s2&&Text'),
+ desc: pdfh(it, '.s5&&Text'),
+ img: "",
+ url: pd(it, 'a&&href', MY_URL),
+ });
+ });
+ }
+ setResult(d);
+ }),
+ 二级: {
+ title: 'h1&&Text',
+ img: '#fmimg&&img&&src',
+ desc: '#info&&p:eq(-1)&&Text',
+ content: '#intro&&p&&Text',
+ tabs: '#list&&dt',
+ lists: '#list&&dd',
+ tab_text: 'body&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href',
+ list_url_prefix: '',
+ },
+ 搜索: 'table.grid&&tr:gt(0);a&&Text;;.odd:eq(1)&&Text;a&&href;a:eq(1)&&Text',
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/飞刀资源[采].js b/JN/dr_py/js/飞刀资源[采].js
new file mode 100644
index 00000000..914cd7d8
--- /dev/null
+++ b/JN/dr_py/js/飞刀资源[采].js
@@ -0,0 +1,7 @@
+var rule = {
+ 模板: '采集1',
+ title: '飞刀资源',
+ host: 'http://www.feidaozy.com',
+ cate_exclude: '电视剧|电影|综艺|动漫',
+ tab_rename: {'feidaozy': '飞刀'}
+}
\ No newline at end of file
diff --git a/JN/dr_py/js/飞翔鸟[书].js b/JN/dr_py/js/飞翔鸟[书].js
new file mode 100644
index 00000000..8feddeab
--- /dev/null
+++ b/JN/dr_py/js/飞翔鸟[书].js
@@ -0,0 +1,58 @@
+var rule = {
+ 类型: '小说',//影视|听书|漫画|小说
+ title: '飞翔鸟[书]',
+ host: 'https://www.fxnzw.com/',
+ url: '/fxnlist/fyclass_fypage.html',
+
+ searchUrl: '/fxnlist/**_fypage.html',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 1,
+ filter: '',
+ filter_url: '',
+ filter_def: {},
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ timeout: 5000,
+ hikerListCol: "text_1",
+ hikerClassListCol: "text_1",
+ //class_name: '全本',
+ //class_url: '0',
+ class_parse: '.nav&&ul&&li;a&&Text;a&&href;.*/(.*?)\.html',
+ cate_exclude: '',
+ play_parse: true,
+ lazy: $js.toString(() => {
+ let html = request(input);
+ let title = pdfh(html, 'h1&&Text');
+ let content = pdfh(html, '#content&&div:eq(-2)&&Html').replace(/\n/g, "").split("
").filter(v => v).slice(0).join("\n").replace(/ /g, ' ').split('请记住:飞翔鸟中文小说网')[0];
+ let ret = JSON.stringify({
+ title,
+ content
+ });
+ input = {parse: 0, url: 'novel://' + ret, js: ''};
+ }),
+ double: false,
+ 推荐: '',
+ 一级: '#CrListText;a&&Text;;a:eq(1)&&Text;a&&href',
+ 二级: {
+ 重定向: $js.toString(() => {
+ log('执行重定向:' + MY_URL);
+ // let html = request(MY_URL);
+ MY_URL = pd(html, 'li.as&&a&&href', MY_URL);
+ log('二级重定向到:' + MY_URL);
+ html = request(MY_URL);
+ }),
+ title: 'h2&&Text',
+ img: '#Lab_BookImg&&img&&src',
+ desc: '#zhangx&&Text',
+ content: '#CommentText&&Text',
+ tabs: '#NclassTitle',
+ lists: '#BookText&&ul&&li:not(:contains(中文阅读))',
+ tab_text: 'body&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href',
+ list_url_prefix: '',
+ },
+ 搜索: '*',
+}
\ No newline at end of file