├── .github
└── workflows
│ ├── monitor_file_update.yml
│ └── update-urls.yml
├── TVBoxOSC
├── tvbox
│ ├── .版本.png
│ ├── ITV.txt
│ ├── JS
│ │ ├── 56动漫.js
│ │ ├── APPV2.js
│ │ ├── Anime1.js
│ │ ├── NT动漫.js
│ │ ├── NyaFun.js
│ │ ├── alishare.txt
│ │ ├── cheerio.min.js
│ │ ├── crypto-hiker.js
│ │ ├── crypto-js.js
│ │ ├── drpy2.js
│ │ ├── drpy2.min.js
│ │ ├── gbk.js
│ │ ├── jinja.js
│ │ ├── jinja.min.js
│ │ ├── jsencrypt.js
│ │ ├── json5.js
│ │ ├── jsonpathplus.min.js
│ │ ├── node-rsa.js
│ │ ├── pako.min.js
│ │ ├── quark.min.js
│ │ ├── uri.min.js
│ │ ├── 三六零弹幕.js
│ │ ├── 优酷弹幕.js
│ │ ├── 剧圈圈.js
│ │ ├── 动漫岛.js
│ │ ├── 动漫巴士.js
│ │ ├── 动画片大全.js
│ │ ├── 去看吧.js
│ │ ├── 奇米动漫.js
│ │ ├── 好看动漫.js
│ │ ├── 小熊弹幕.js
│ │ ├── 小虎斑弹幕.js
│ │ ├── 巨人弹幕.js
│ │ ├── 异世界.js
│ │ ├── 思古影视.js
│ │ ├── 怡萱动漫.js
│ │ ├── 机器人.js
│ │ ├── 梦米弹幕.js
│ │ ├── 模板.js
│ │ ├── 樱花动漫.js
│ │ ├── 爱奇艺弹幕.js
│ │ ├── 爱弹幕.js
│ │ ├── 瓜子影视.js
│ │ ├── 看了么.js
│ │ ├── 短剧合集.js
│ │ ├── 碟调影视.js
│ │ ├── 磁力熊.js
│ │ ├── 米兔弹幕.js
│ │ ├── 素白白.js
│ │ ├── 腾讯弹幕.js
│ │ ├── 芒果弹幕.js
│ │ ├── 花子动漫.js
│ │ ├── 茶杯狐.js
│ │ ├── 路漫漫.js
│ │ ├── 达达龟.js
│ │ ├── 追剧弹幕.js
│ │ ├── 追剧迷.js
│ │ ├── 采集之王.js
│ │ └── 魔力高清.js
│ ├── JSON
│ │ ├── alist.json
│ │ ├── webdav.json
│ │ ├── 哔哩合集.json
│ │ └── 采集静态.json
│ ├── PY
│ │ └── 猎手影视.py
│ ├── XBPQ
│ │ ├── 修罗影视.json
│ │ ├── 农民影视.json
│ │ ├── 可可影视.json
│ │ ├── 吉吉短剧.json
│ │ ├── 哆啦新番社.json
│ │ ├── 布谷TV.json
│ │ ├── 樱花影视.json
│ │ ├── 永乐影视.json
│ │ ├── 流光影视.json
│ │ ├── 海纳影视.json
│ │ ├── 爱我短剧.json
│ │ ├── 狐狸君.json
│ │ ├── 皮皮虾.json
│ │ ├── 短剧网.json
│ │ ├── 秀儿影视.json
│ │ ├── 雪糕影视.json
│ │ └── 面包影视.json
│ ├── XYQHiker
│ │ ├── BT天堂.json
│ │ ├── 七新影视.json
│ │ ├── 九八影视.json
│ │ ├── 八号影视.json
│ │ ├── 星辰影视.json
│ │ ├── 电影港.json
│ │ ├── 电影牛.json
│ │ ├── 百思派.json
│ │ ├── 盒子影视.json
│ │ ├── 看看影视.json
│ │ ├── 短剧屋.json
│ │ └── 骚火影视.json
│ ├── api.json
│ ├── spider.jar
│ └── wex.jar
└── 订阅链接.txt
├── _worker.js
├── buye.json
├── requirements.txt
├── url.json
├── url.py
├── yuan.json
└── 单线路.zip
/.github/workflows/monitor_file_update.yml:
--------------------------------------------------------------------------------
1 | name: Download and Update Files
2 |
3 | on:
4 | # 允许手动触发
5 | workflow_dispatch:
6 | # 定时运行
7 | schedule:
8 | - cron: '*/60 * * * *' # 每60分钟运行一次
9 |
10 | jobs:
11 | download-and-update:
12 | runs-on: ubuntu-latest
13 | permissions:
14 | contents: write
15 |
16 | steps:
17 | - name: Checkout repository
18 | uses: actions/checkout@v4
19 |
20 | - name: Download and extract file
21 | run: |
22 | # 创建临时目录
23 | mkdir -p temp_download
24 | cd temp_download
25 |
26 | # 下载文件
27 | echo "开始下载文件..."
28 | curl -L -o "single_line.zip" "https://jihulab.com/fourd/FourD/-/raw/main/local/单线路.zip"
29 |
30 | if [ -f "single_line.zip" ]; then
31 | echo "文件下载成功,开始解压..."
32 | # 解压到项目根目录,覆盖现有文件
33 | unzip -o single_line.zip -d ../
34 | echo "文件解压完成"
35 | else
36 | echo "文件下载失败"
37 | exit 1
38 | fi
39 |
40 | # 清理临时文件
41 | cd ..
42 | rm -rf temp_download
43 |
44 | - name: Check and commit changes
45 | run: |
46 | git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
47 | git config --local user.name "github-actions[bot]"
48 |
49 | if [[ -n "$(git status --porcelain)" ]]; then
50 | echo "检测到文件变更,提交更新..."
51 | git add .
52 | git commit -m "Update: 更新单线路文件 $(date '+%Y-%m-%d %H:%M:%S')"
53 | git push
54 | echo "更新已推送到仓库"
55 | else
56 | echo "没有检测到文件变更"
57 | fi
58 |
--------------------------------------------------------------------------------
/.github/workflows/update-urls.yml:
--------------------------------------------------------------------------------
1 | name: Update URLs
2 |
3 | on:
4 | schedule:
5 | - cron: "0 */1 * * *" # 每小时运行一次
6 | workflow_dispatch: # 允许手动触发
7 | push:
8 | paths:
9 | - 'TVBoxOSC/tvbox/api.json'
10 | - 'url.py'
11 |
12 | jobs:
13 | update-urls:
14 | runs-on: ubuntu-latest
15 |
16 | steps:
17 | - name: 检出代码
18 | uses: actions/checkout@v4
19 |
20 | - name: 设置 Python 环境
21 | uses: actions/setup-python@v4
22 | with:
23 | python-version: '3.x'
24 |
25 | - name: 安装依赖
26 | run: |
27 | python -m pip install --upgrade pip
28 | pip install requests urllib3
29 |
30 | - name: 运行脚本
31 | run: python url.py
32 |
33 | - name: 提交更改
34 | run: |
35 | git config --global user.name "github-actions"
36 | git config --global user.email "github-actions@github.com"
37 | git add url.json buye.json
38 | git commit -m "更新 url.json 和 buye.json" || echo "No changes to commit"
39 | git push
40 |
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/.版本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/celin1286/Wogg-Series-URL/56761595da27cafb561363c6b7dcba7349d59510/TVBoxOSC/tvbox/.版本.png
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/56动漫.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | title: '56动漫',
3 | host: 'https://www.56dm.cc/',
4 | url: 'https://www.56dm.cc/type/fyclass-fypage.html',
5 | searchUrl: 'https://www.56dm.cc/search/**----------fypage---.html',
6 | searchable: 2, //是否启用全局搜索,
7 | quickSearch: 0, //是否启用快速搜索,
8 | filterable: 0, //是否启用分类筛选,
9 | headers: {
10 | 'User-Agent': 'UC_UA', // "Cookie": ""
11 | }, // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
12 | class_parse: '.snui-header-menu-nav li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html',
13 | play_parse: true,
14 | lazy: `js:
15 | if(/\\.(m3u8|mp4)/.test(input)){
16 | input = {parse:0,url:input}
17 | }else{
18 | if(rule.parse_url.startsWith('json:')){
19 | let purl = rule.parse_url.replace('json:','')+input;
20 | let html = request(purl);
21 | input = {parse:0,url:JSON.parse(html).url}
22 | }else{
23 | input= rule.parse_url+input;
24 | }
25 | }
26 | `,
27 | limit: 6,
28 | 推荐: '.cCBf_FAAEfbc;li;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href',
29 | double: true, // 推荐内容是否双层定位
30 | 一级: '.cCBf_FAAEfbc li;a&&title;a&&data-original;.dAD_BBCI&&Text;a&&href',
31 | 二级: {
32 | "title": "h1&&Text",
33 | "img": ".stui-content__thumb .lazyload&&data-original",
34 | "desc": ".cCBf_DABCcac__hcIdeE p:eq(0)&&Text;.cCBf_DABCcac__hcIdeE p:eq(1)&&Text;.cCBf_DABCcac__hcIdeE p:eq(2)&&Text;.cCBf_DABCcac__hcIdeE p:eq(3)&&Text;.cCBf_DABCcac__hcIdeE p:eq(4)&&Text",
35 | "content": ".detail&&Text",
36 | "tabs": ".channel-tab li",
37 | "lists": ".play-list-content:eq(#id) li"
38 | },
39 | 搜索: '.cCBf_FAAEfbc__dbD;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href;.cCBf_FAAEfbc__hcIdeE&&p:eq(0) p&&Text',
40 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/APPV2.js:
--------------------------------------------------------------------------------
1 | /**
2 | * 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少1
3 | * 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少2
4 | */
5 |
6 | var rule = {
7 | title: 'APPV2[模板]',
8 | author: '道长',
9 | version: '20241012 beta1',
10 | update_info: `
11 | 20241012:
12 | 1.根据群友嗷呜的appv2模板修改成可传参源,类似采集之王用法传参
13 | `.trim(),
14 | host: '',
15 | url: '/api.php/app/video?tid=fyclassfyfilter&limit=20&pg=fypage',
16 | filter_url: '',
17 | filter: {},
18 | homeUrl: '/api.php/app/index_video',
19 | detailUrl: '/api.php/app/video_detail?id=fyid',
20 | searchUrl: '/api.php/app/search?text=**&pg=fypage',
21 | parseUrl: '',
22 | searchable: 2,
23 | quickSearch: 1,
24 | filterable: 1,
25 | headers: {
26 | 'User-Agent': 'okhttp/4.1.0'
27 | },
28 | params: 'http://122.228.85.203:1000$http://122.228.85.203:1000/play?url=',
29 | hostJs: $js.toString(() => {
30 | HOST = rule.params.split('$')[0];
31 | }),
32 | 预处理: $js.toString(() => {
33 | log(`传入参数:${rule.params}`);
34 | let _host = rule.params.split('$')[0];
35 | rule.parseUrl = rule.params.split('$')[1];
36 | let _url = _host.rstrip('/') + '/api.php/app/nav?token';
37 | let _headers = {'User-Agent': 'Dart/2.14 (dart:io)'};
38 | let html = request(_url, {headers: _headers});
39 | let data = JSON.parse(html);
40 | let _classes = [];
41 | let _filter = {};
42 | let _filter_url = '';
43 | let dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序"};
44 | let jsonData = data.list;
45 | for (let k = 0; k < jsonData.length; k++) {
46 | let hasNonEmptyField = false;
47 | let _obj = {
48 | type_name: jsonData[k].type_name,
49 | type_id: jsonData[k].type_id,
50 | };
51 | _classes.push(_obj);
52 | for (let key in dy) {
53 | if (key in jsonData[k].type_extend && jsonData[k].type_extend[key].trim() !== "") {
54 | hasNonEmptyField = true;
55 | break
56 | }
57 | }
58 | if (hasNonEmptyField) {
59 | _filter[String(jsonData[k].type_id)] = [];
60 | for (let dkey in jsonData[k].type_extend) {
61 | if (dkey in dy && jsonData[k].type_extend[dkey].trim() !== "") {
62 | if (k === 0) {
63 | _filter_url += `&${dkey}={{fl.${dkey}}}`
64 | }
65 | let values = jsonData[k].type_extend[dkey].split(',');
66 | let valueArray = values.map(value => ({"n": value.trim(), "v": value.trim()}));
67 | _filter[String(jsonData[k].type_id)].push({"key": dkey, "name": dy[dkey], "value": valueArray})
68 | }
69 | }
70 | }
71 | }
72 | rule.classes = _classes;
73 | rule.filter = _filter;
74 | rule.filter_url = _filter_url;
75 | }),
76 | class_parse: $js.toString(() => {
77 | input = rule.classes;
78 | }),
79 | play_parse: true,
80 | lazy: $js.toString(() => {
81 | if (!/^http/.test(input)) {
82 | input = rule.parseUrl + input
83 | } else {
84 | input = {
85 | url: input,
86 | parse: 0,
87 | header: ''
88 | }
89 | }
90 |
91 | }),
92 | 推荐: $js.toString(() => {
93 | let data = JSON.parse(request(input)).list;
94 | let com = [];
95 | data.forEach(item => {
96 | if (Array.isArray(item.vlist) && item.vlist.length !== 0) {
97 | com = com.concat(item.vlist)
98 | }
99 | })
100 | VODS = com
101 | }),
102 | 一级: $js.toString(() => {
103 | VODS = JSON.parse(request(input)).list
104 | }),
105 | 二级: $js.toString(() => {
106 | VOD = JSON.parse(request(input)).data
107 | }),
108 | 搜索: '*',
109 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/Anime1.js:
--------------------------------------------------------------------------------
1 | // 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
2 | // 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
3 | // 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版
4 | // 3个set-Cookie
5 |
6 | var rule = {
7 | title:'Anime1动畫',
8 | host:'https://anime1.me',
9 | url: '/fyclass',
10 | detailUrl:'/?cat=fyid',
11 | searchUrl: '/page/fypage?s=**',
12 | searchable:2,
13 | quickSearch:0,
14 | headers:{'User-Agent': 'PC_UA'},
15 | timeout:5000,
16 | class_name:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&更早',
17 | class_url:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&2017',
18 | play_parse:true,
19 | lazy:`js:
20 | var apiurl = 'https://v.anime1.me/api';
21 | var html = request(apiurl, {
22 | headers: {
23 | 'Referer': HOST,
24 | },
25 | body: 'd=' + input,
26 | method: 'POST',
27 | withHeaders: true
28 | });
29 | let json = JSON.parse(html);
30 | print(json);
31 | log(Object.keys(json));
32 | let setCk = Object.keys(json).filter(it => it.toLowerCase() === "set-cookie");
33 | let cookie = setCk ? json[setCk] : "";
34 | // 3个set-Cookie
35 | if (Array.isArray(cookie)) {
36 | cookie = cookie.join(';');
37 | }
38 | cookie = cookie.split(';').filter(function(it) {
39 | return ['e', 'p', 'h'].includes(it.split('=')[0])
40 | }).join(';');
41 | log(cookie);
42 | var purl = JSON.parse(json.body).s[0].src;
43 | if (purl.startsWith('/')) {
44 | purl = 'https:' + purl
45 | }
46 | input = {
47 | jx: 0,
48 | url: purl,
49 | parse: 0,
50 | header: JSON.stringify({
51 | 'referer': HOST,
52 | 'Cookie': cookie,
53 | 'user-agent': PC_UA
54 | }),
55 | }
56 | `,
57 | limit:6,
58 | 推荐: `js:
59 | var d = [];
60 | function stripHtmlTag(src) {
61 | return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
62 | }
63 | var timestamp = new Date().getTime();
64 | var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
65 | var list = JSON.parse(json);
66 | let playKeys = Object.values(list).filter(function(x) {
67 | return x[2].includes('連載中');
68 | });
69 | playKeys.forEach(function(it) {
70 | d.push({
71 | title: stripHtmlTag(it[1]),
72 | img: 'https://sta.anicdn.com/playerImg/8.jpg',
73 | desc: it[2],
74 | url: it[0],
75 | });
76 | });
77 | setResult(d);
78 | `,
79 | 一级: `js:
80 | var d = [];
81 | function stripHtmlTag(src) {
82 | return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
83 | }
84 | var timestamp = new Date().getTime();
85 | var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
86 | var list = JSON.parse(json);
87 | let playKeys = Object.values(list).filter(function(x) {
88 | if (MY_CATE === '連載中') return x[2].includes(MY_CATE);
89 | else if (MY_CATE === '2017') return x[3] <= MY_CATE;
90 | else return x[3] == MY_CATE;
91 | });
92 | playKeys.forEach(function(it) {
93 | d.push({
94 | title: stripHtmlTag(it[1]),
95 | img: 'https://sta.anicdn.com/playerImg/8.jpg',
96 | desc: it[2],
97 | url: it[0],
98 | });
99 | });
100 | setResult(d);
101 | `,
102 | 二级: `js:
103 | pdfh = jsp.pdfh; pdfa = jsp.pdfa; pd = jsp.pd;
104 | var html = request(input);
105 | var timestamp = new Date().getTime();
106 | var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
107 | var list = JSON.parse(json);
108 | var vid = input.split('=')[1];
109 | let playKeys = Object.values(list).find(function(x) {
110 | return x[0] === parseInt(vid);
111 | });
112 | VOD = {
113 | vod_pic: 'https://sta.anicdn.com/playerImg/8.jpg',
114 | vod_id: playKeys[0],
115 | vod_name: playKeys[1],
116 | vod_content: playKeys[2],
117 | vod_year: playKeys[3],
118 | type_name: playKeys[4],
119 | vod_actor: playKeys[5],
120 | };
121 | var pageurl = pd(html, '.cat-links&&a&&href');
122 | var pagenum = 1;
123 | let vod_tab_list = [];
124 | let vlist = [];
125 | for (let p = 1; p < parseInt(pagenum) + 1; p++) {
126 | let phtml = request(pageurl + '/page/' + pagenum);
127 | let new_vod_list = [];
128 | let vodList = [];
129 | vodList = pdfa(phtml, '.site-main&&article');
130 | for (let i = 0; i < vodList.length; i++) {
131 | let it = vodList[i];
132 | let ptitle = pdfh(it, '.entry-title&&Text').replace(/\\[(.*)\\]/, '$1');
133 | let purl = pd(it, '.video-js&&data-apireq');
134 | new_vod_list.push(ptitle + '$' + purl);
135 | }
136 | vlist = vlist.concat(new_vod_list);
137 | try {
138 | pagenum = pd(phtml, '.nav-previous&&a&&href').split('/page/')[1];
139 | } catch(e) {}
140 | }
141 | let vlist2 = vlist.reverse().join("#");
142 | vod_tab_list.push(vlist2);
143 | VOD.vod_play_from = '在线播放';
144 | VOD.vod_play_url = vod_tab_list.join("$$$");
145 | `,
146 | 搜索: `js:
147 | var d = [];
148 | function stripHtmlTag(src) {
149 | return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' ');
150 | }
151 | var timestamp = new Date().getTime();
152 | var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp);
153 | var list = JSON.parse(json);
154 | var wd = input.split('=')[1];
155 | let playKeys = Object.values(list).filter(function(x) {
156 | return x[1].includes(wd);
157 | });
158 | log(playKeys);
159 | playKeys.forEach(function(it) {
160 | d.push({
161 | title: stripHtmlTag(it[1]),
162 | img: 'https://sta.anicdn.com/playerImg/8.jpg',
163 | desc: it[2],
164 | url: it[0],
165 | });
166 | });
167 | setResult(d);
168 | `,
169 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/NyaFun.js:
--------------------------------------------------------------------------------
1 | muban.短视2.二级.img = '.detail-pic&&img&&data-src';
2 | var rule = {
3 | title: 'NyaFun',
4 | 模板:'短视2',
5 | host: 'https://www.nyafun.net',
6 | homeUrl:'/map.html',
7 | url: '/index.php/api/vod#type=fyclass&page=fypage',
8 | class_name:'番剧&剧场',
9 | class_url:'2&1',
10 | detailUrl:'/bangumi/fyid.html',
11 | 推荐:'.border-box .public-list-box;a&&title;.lazy&&data-src;.public-list-prb&&Text;a&&href',
12 | double: false, // 推荐内容是否双层定位
13 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/alishare.txt:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "share_name": "优品阁",
4 | "share_id": "uWa9gbM3RJ7"
5 | },
6 | {
7 | "share_name": "阿里1T",
8 | "share_id": "mxAfB6eRgY4"
9 | },
10 | {
11 | "share_name": "平凡中的",
12 | "share_id": "4ydLxf7VgH7"
13 | },
14 | {
15 | "share_name": "tacit0924",
16 | "share_id": "DNgnCudf4cD?pwd=6666"
17 | },
18 | {
19 | "share_name": "黄妈",
20 | "share_id": "4bGRVUdUtct"
21 | },
22 | {
23 | "share_name": "YYDSVIP",
24 | "share_id": "dieULBdYP3D"
25 | },
26 | {
27 | "share_name": "优源阁",
28 | "share_id": "RnjUi1urdb2"
29 | },
30 | {
31 | "share_name": "风流动漫",
32 | "share_id": "WdaaeX7HK44"
33 | },
34 | {
35 | "share_name": "风流剧集",
36 | "share_id": "kgxWjZsK6bq"
37 | },
38 | {
39 | "share_name": "xiaaluo",
40 | "share_id": "sg8CdGUwmUr"
41 | },
42 | {
43 | "share_name": "4K影视",
44 | "share_id": "wHPKUENKFsS"
45 | },
46 | {
47 | "share_name": "诺兰全集",
48 | "share_id": "gf2GebXnZHh"
49 | },
50 | {
51 | "share_name": "纪录片",
52 | "share_id": "fSNHaYST47s"
53 | },
54 | {
55 | "share_name": "掌灯者|港",
56 | "share_id": "wHPKUENKFsS"
57 | },
58 | {
59 | "share_name": "掌灯者|一",
60 | "share_id": "wHPKUENKFsS"
61 | },
62 | {
63 | "share_name": "掌灯者|二",
64 | "share_id": "wHPKUENKFsS"
65 | },
66 | {
67 | "share_name": "掌灯者|三",
68 | "share_id": "wHPKUENKFsS"
69 | }
70 | ]
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/uri.min.js:
--------------------------------------------------------------------------------
1 | (function(global){var re={starts_with_slashes:/^\/+/,ends_with_slashes:/\/+$/,pluses:/\+/g,query_separator:/[&;]/,uri_parser:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*)(?::([^:@]*))?)?@)?(\[[0-9a-fA-F:.]+\]|[^:\/?#]*)(?::(\d+|(?=:)))?(:)?)((((?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/};if(!Array.prototype.forEach){Array.prototype.forEach=function(callback,thisArg){var T,k;if(this==null){throw new TypeError(' this is null or not defined');}var O=Object(this);var len=O.length>>>0;if(typeof callback!=="function"){throw new TypeError(callback+' is not a function');}if(arguments.length>1){T=thisArg}k=0;while(k0){s+='&'}if(param[1]===null){s+=param[0]}else{s+=param[0];s+='=';if(typeof param[1]!=='undefined'){s+=encodeURIComponent(param[1])}}}return s.length>0?'?'+s:s};Uri.prototype.getQueryParamValue=function(key){var param,i,l;for(i=0,l=this.queryPairs.length;i0){this.queryPairs.push([key,val])}return this};Uri.prototype.hasQueryParam=function(key){var i,len=this.queryPairs.length;for(i=0;i=0){this.deleteQueryParam(key,decode(oldVal)).addQueryParam(key,newVal,index)}}else{for(i=0;i {
75 | data.vod_play_from += value.player_info.show + '$$$';
76 | value.urls.forEach((v) => {
77 | data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#';
78 | });
79 | data.vod_play_url += '$$$';
80 | });
81 | return data;
82 | }
83 | //搜索
84 | globalThis.ssvod = function(wd) {
85 | var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', {
86 | method: 'POST',
87 | headers: {
88 | 'User-Agent': 'okhttp/3.14.9',
89 | 'Content-Type': 'application/x-www-form-urlencoded'
90 | },
91 | body: {
92 | keywords: wd,
93 | typepage_id: 1,
94 | }
95 | });
96 | let html = JSON.parse(html1);
97 | return AES_Decrypt(html.data);
98 | }
99 | //解析
100 | globalThis.jxx = function(id, url, name, juji) {
101 | /* if("741852963"!=='741852963'){
102 | return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
103 | }*/
104 | if (id.startsWith('http')) {
105 | return {
106 | parse: 1,
107 | url: id + url,
108 | jx: 0,
109 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
110 | };
111 | }
112 | if (id == 0) {
113 | return {
114 | parse: 0,
115 | url: id + url,
116 | jx: 1,
117 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
118 | };
119 | }
120 |
121 | let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', {
122 | method: 'POST',
123 | headers: {
124 | 'User-Agent': 'okhttp/3.14.9',
125 | 'Content-Type': 'application/x-www-form-urlencoded'
126 | },
127 | body: {
128 | parse_api: id,
129 | url: AES_Encrypt(url),
130 | }
131 | });
132 | let html = AES_Decrypt(JSON.parse(html1).data);
133 | console.log(html);
134 | let decry = html.replace(/\n/g, '').replace(/\\/g, '');
135 | let matches = decry.match(/"url":"([^"]+)"/);
136 | if (!matches || matches[1] === null) {
137 | matches = decry.match(/"url": "([^"]+)"/);
138 | }
139 | return {
140 | parse: 0,
141 | url: matches[1],
142 | jx: 0,
143 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
144 | };
145 | }
146 |
147 | var rule = {
148 | title: '小熊',
149 | host: '',
150 | detailUrl: 'fyid',
151 | searchUrl: '**',
152 | url: 'fyclass',
153 | searchable: 2,
154 | quickSearch: 1,
155 | filterable: 0,
156 | class_name: '电影&电视剧&综艺&动漫',
157 | class_url: '1&2&3&4',
158 | play_parse: true,
159 | lazy: $js.toString(() => {
160 | const parts = input.split('~');
161 | input = jxx(parts[0], parts[1], parts[2], parts[3]);
162 | }),
163 | 推荐: $js.toString(() => {
164 | let data = vod1(0, 0);
165 | let bata = JSON.parse(data).recommend_list;
166 | bata.forEach(it => {
167 | d.push({
168 | url: it.vod_id,
169 | title: it.vod_name,
170 | img: it.vod_pic,
171 | desc: it.vod_remarks
172 | });
173 | });
174 | setResult(d);
175 | }),
176 | 一级: $js.toString(() => {
177 | let data = vod1(input, MY_PAGE);
178 | let bata = JSON.parse(data).recommend_list;
179 | bata.forEach(it => {
180 | d.push({
181 | url: it.vod_id,
182 | title: it.vod_name,
183 | img: it.vod_pic,
184 | desc: it.vod_remarks
185 | });
186 | });
187 | setResult(d);
188 | }),
189 | 二级: $js.toString(() => {
190 | console.log("调试信息2" + input);
191 | let data = vodids(input);
192 | //console.log(data);
193 | VOD = data;
194 | }),
195 | 搜索: $js.toString(() => {
196 | let data = ssvod(input);
197 | let bata = JSON.parse(data).search_list;
198 | bata.forEach(it => {
199 | d.push({
200 | url: it.vod_id,
201 | title: it.vod_name,
202 | img: it.vod_pic,
203 | desc: it.vod_remarks
204 | });
205 | });
206 | // console.log(data);
207 | setResult(d);
208 | }),
209 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/小虎斑弹幕.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | title: '弹幕[资]',
3 | host: 'http://gy.xn--yet24tmq1a.xyz/',
4 | homeTid: '',
5 | homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
6 | detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
7 | searchUrl: '/api.php/provide/vod/?ac=detail&wd=**&pg=fypage',
8 | url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
9 | headers: {
10 | 'User-Agent': 'MOBILE_UA',
11 | },
12 | class_parse: 'json:class;',
13 | timeout: 5000,
14 | filterable: 1,
15 | limit: 20,
16 | multi: 1,
17 | searchable: 2,
18 | play_parse: true,
19 | parse_url: '',
20 | lazy: $js.toString(() => {
21 | let json = request("http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input);
22 | let bata = JSON.parse(json);
23 | input = {
24 | parse: 0,
25 | url: bata.url,
26 | jx: 0,
27 | danmaku: bata.danmaku
28 | };
29 | }),
30 | 推荐: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
31 | 一级: $js.toString(() => {
32 | let bata = JSON.parse(request(input)).list;
33 | bata.forEach(it => {
34 | d.push({
35 | url: it.vod_id,
36 | title: it.vod_name,
37 | img: it.vod_pic,
38 | desc: it.vod_remarks
39 | })
40 | });
41 | setResult(d)
42 | }),
43 | 二级: 'js:\n let html=request(input);\n html=JSON.parse(html);\n let data=html.list;\n VOD=data[0];',
44 | 搜索: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
45 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/巨人弹幕.js:
--------------------------------------------------------------------------------
1 | globalThis.h_ost = 'http://118.107.41.134:35555/';
2 | var key = CryptoJS.enc.Base64.parse("ZGMzMjUwNmQ5YjVjYmY4ZQ==");
3 | var iv = CryptoJS.enc.Base64.parse("ZGMzMjUwNmQ5YjVjYmY4ZQ==");
4 | globalThis.AES_Decrypt = function(word) {
5 | try {
6 | var decrypt = CryptoJS.AES.decrypt(word, key, {
7 | iv: iv,
8 | mode: CryptoJS.mode.CBC,
9 | padding: CryptoJS.pad.Pkcs7,
10 | });
11 | const decryptedText = decrypt.toString(CryptoJS.enc.Utf8);
12 | if (!decryptedText) {
13 | throw new Error("解密后的内容为空");
14 | }
15 | return decryptedText;
16 | } catch (e) {
17 | console.error("解密失败:", e);
18 | return null;
19 | }
20 | };
21 | globalThis.AES_Encrypt = function(word) {
22 | var encrypted = CryptoJS.AES.encrypt(word, key, {
23 | iv: iv,
24 | mode: CryptoJS.mode.CBC,
25 | padding: CryptoJS.pad.Pkcs7
26 | });
27 | return encrypted.toString();
28 | };
29 |
30 | globalThis.vod1 = function(t, pg) {
31 | let html1 = request(h_ost + 'api.php/getappapi.index/typeFilterVodList', {
32 | body: {
33 | area: '全部',
34 | year: '全部',
35 | type_id: t,
36 | page: pg,
37 | sort: '最新',
38 | lang: '全部',
39 | class: '全部'
40 | },
41 | headers: {
42 | 'User-Agent': 'okhttp/3.14.9',
43 | 'Content-Type': 'application/x-www-form-urlencoded'
44 | },
45 | 'method': 'POST'
46 | }, true);
47 | let html = JSON.parse(html1);
48 | return (AES_Decrypt(html.data));
49 | }
50 | globalThis.vodids = function(ids) {
51 | let html1 = fetch(h_ost + 'api.php/getappapi.index/vodDetail', {
52 | method: 'POST',
53 | headers: {
54 | 'User-Agent': 'okhttp/3.14.9',
55 | 'Content-Type': 'application/x-www-form-urlencoded'
56 | },
57 | body: {
58 | vod_id: ids,
59 | }
60 | });
61 | let html = JSON.parse(html1);
62 | const rdata = JSON.parse(AES_Decrypt(html.data));
63 | const data = {
64 | vod_id: ids,
65 | vod_name: rdata.vod.vod_name,
66 | vod_remarks: rdata.vod.vod_remarks,
67 | vod_actor: rdata.vod.vod_actor,
68 | vod_director: rdata.vod.vod_director,
69 | vod_content: rdata.vod.vod_content,
70 | vod_play_from: '',
71 | vod_play_url: ''
72 | };
73 |
74 | rdata.vod_play_list.forEach((value) => {
75 | data.vod_play_from += value.player_info.show + '$$$';
76 | value.urls.forEach((v) => {
77 | data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#';
78 | });
79 | data.vod_play_url += '$$$';
80 | });
81 | return data;
82 | }
83 | //搜索
84 | globalThis.ssvod = function(wd) {
85 | var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', {
86 | method: 'POST',
87 | headers: {
88 | 'User-Agent': 'okhttp/3.14.9',
89 | 'Content-Type': 'application/x-www-form-urlencoded'
90 | },
91 | body: {
92 | keywords: wd,
93 | typepage_id: 1,
94 | }
95 | });
96 | let html = JSON.parse(html1);
97 | return AES_Decrypt(html.data);
98 | }
99 | //解析
100 | globalThis.jxx = function(id, url, name, juji) {
101 | /* if("741852963"!=='741852963'){
102 | return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
103 | }*/
104 | //console.log(id);
105 | if (id.startsWith('http')) {
106 | return {
107 | parse: 1,
108 | url: id + url,
109 | jx: 0,
110 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
111 | };
112 | }
113 | if (id == 0) {
114 | return {
115 | parse: 0,
116 | url: url,
117 | jx: 1,
118 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
119 | };
120 | }
121 |
122 | let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', {
123 | method: 'POST',
124 | headers: {
125 | 'User-Agent': 'okhttp/3.14.9',
126 | 'Content-Type': 'application/x-www-form-urlencoded'
127 | },
128 | body: {
129 | parse_api: id,
130 | url: AES_Encrypt(url),
131 | }
132 | });
133 | let html = AES_Decrypt(JSON.parse(html1).data);
134 | console.log(html);
135 | let decry = html.replace(/\n/g, '').replace(/\\/g, '');
136 | let matches = decry.match(/"url":"([^"]+)"/);
137 | if (!matches || matches[1] === null) {
138 | matches = decry.match(/"url": "([^"]+)"/);
139 | }
140 | return {
141 | parse: 0,
142 | url: matches[1],
143 | jx: 0,
144 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
145 | };
146 | }
147 |
148 | var rule = {
149 | title: '巨人',
150 | host: '',
151 | detailUrl: 'fyid',
152 | searchUrl: '**',
153 | url: 'fyclass',
154 | searchable: 2,
155 | quickSearch: 1,
156 | filterable: 0,
157 | class_name: '电影&电视剧&综艺&动漫',
158 | class_url: '1&2&3&4',
159 | play_parse: true,
160 | lazy: $js.toString(() => {
161 | const parts = input.split('~');
162 | input = jxx(parts[0], parts[1], parts[2], parts[3]);
163 | }),
164 | 推荐: $js.toString(() => {
165 | let data = vod1(0, 0);
166 | let bata = JSON.parse(data).recommend_list;
167 | bata.forEach(it => {
168 | d.push({
169 | url: it.vod_id,
170 | title: it.vod_name,
171 | img: it.vod_pic,
172 | desc: it.vod_remarks
173 | });
174 | });
175 | setResult(d);
176 | }),
177 | 一级: $js.toString(() => {
178 | let data = vod1(input, MY_PAGE);
179 | let bata = JSON.parse(data).recommend_list;
180 | bata.forEach(it => {
181 | d.push({
182 | url: it.vod_id,
183 | title: it.vod_name,
184 | img: it.vod_pic,
185 | desc: it.vod_remarks
186 | });
187 | });
188 | setResult(d);
189 | }),
190 | 二级: $js.toString(() => {
191 | console.log("调试信息2" + input);
192 | let data = vodids(input);
193 | //console.log(data);
194 | VOD = data;
195 | }),
196 | 搜索: $js.toString(() => {
197 | let data = ssvod(input);
198 | let bata = JSON.parse(data).search_list;
199 | bata.forEach(it => {
200 | d.push({
201 | url: it.vod_id,
202 | title: it.vod_name,
203 | img: it.vod_pic,
204 | desc: it.vod_remarks
205 | });
206 | });
207 | // console.log(data);
208 | setResult(d);
209 | }),
210 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/异世界.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | title: '异世界动漫',
3 | host: 'https://www.dmmiku.com/',
4 | homeUrl: '/index.php/vod/show/id/22.html',
5 | // url:'/index.php/vod/show/class/fyclass/id/20/page/fypage.html',
6 | url: '/index.php/vod/show/fyclassfyfilter.html',
7 | filterable: 1,
8 | filter_url: '{{fl.type}}/id/20/page/fypage{{fl.year}}',
9 | filter: {
10 | "area/日本": [{
11 | "key": "type",
12 | "name": "类型",
13 | "value": [{
14 | "n": "全部",
15 | "v": ""
16 | }, {
17 | "n": "OVA",
18 | "v": "/class/OVA"
19 | }, {
20 | "n": "剧场版",
21 | "v": "/class/剧场版"
22 | }, {
23 | "n": "无修",
24 | "v": "/class/BD无修"
25 | }, {
26 | "n": "萝莉",
27 | "v": "/class/萝莉"
28 | }, {
29 | "n": "学園",
30 | "v": "/class/学園"
31 | }, {
32 | "n": "后宫",
33 | "v": "/class/后宫"
34 | }, {
35 | "n": "恋爱",
36 | "v": "/class/恋爱"
37 | }, {
38 | "n": "热血",
39 | "v": "/class/热血"
40 | }, {
41 | "n": "神魔",
42 | "v": "/class/神魔"
43 | }, {
44 | "n": "奇幻",
45 | "v": "/class/奇幻"
46 | }, {
47 | "n": "治愈",
48 | "v": "/class/治愈"
49 | }, {
50 | "n": "搞笑",
51 | "v": "/class/搞笑"
52 | }, {
53 | "n": "百合",
54 | "v": "/class/百合"
55 | }, {
56 | "n": "冒险",
57 | "v": "/class/冒险"
58 | }, {
59 | "n": "魔法",
60 | "v": "/class/魔法"
61 | }, {
62 | "n": "机战",
63 | "v": "/class/机战"
64 | }, {
65 | "n": "战争",
66 | "v": "/class/战争"
67 | }, {
68 | "n": "犯罪",
69 | "v": "/class/犯罪"
70 | }, {
71 | "n": "悬疑",
72 | "v": "/class/悬疑"
73 | }, {
74 | "n": "推理",
75 | "v": "/class/推理"
76 | }, {
77 | "n": "科幻",
78 | "v": "/class/科幻"
79 | }, {
80 | "n": "竞技",
81 | "v": "/class/竞技"
82 | }, {
83 | "n": "运动",
84 | "v": "/class/运动"
85 | }, {
86 | "n": "耽美",
87 | "v": "/class/耽美"
88 | }, {
89 | "n": "其他",
90 | "v": "/class/其他"
91 | }]
92 | }, {
93 | "key": "year",
94 | "name": "年份",
95 | "value": [{
96 | "n": "全部",
97 | "v": ""
98 | }, {
99 | "n": "2025",
100 | "v": "/year/2025"
101 | }, {
102 | "n": "2024",
103 | "v": "/year/2024"
104 | }, {
105 | "n": "2023",
106 | "v": "/year/2023"
107 | }, {
108 | "n": "2022",
109 | "v": "/year/2022"
110 | }, {
111 | "n": "2021",
112 | "v": "/year/2021"
113 | }, {
114 | "n": "2020",
115 | "v": "/year/2020"
116 | }, {
117 | "n": "2019",
118 | "v": "/year/2019"
119 | }, {
120 | "n": "2018",
121 | "v": "/year/2018"
122 | }, {
123 | "n": "2017",
124 | "v": "/year/2017"
125 | }, {
126 | "n": "2016",
127 | "v": "/year/2016"
128 | }, {
129 | "n": "2015",
130 | "v": "/year/2015"
131 | }, {
132 | "n": "2014",
133 | "v": "/year/2014"
134 | }, {
135 | "n": "2013",
136 | "v": "/year/2013"
137 | }, {
138 | "n": "2012",
139 | "v": "/year/2012"
140 | }, {
141 | "n": "2011",
142 | "v": "/year/2011"
143 | }, {
144 | "n": "2010",
145 | "v": "/year/2010"
146 | }, {
147 | "n": "2009",
148 | "v": "/year/2009"
149 | }, {
150 | "n": "2008",
151 | "v": "/year/2008"
152 | }]
153 | }],
154 | "area/中國": [{
155 | "key": "year",
156 | "name": "年份",
157 | "value": [{
158 | "n": "全部",
159 | "v": ""
160 | }, {
161 | "n": "2025",
162 | "v": "/year/2025"
163 | }, {
164 | "n": "2024",
165 | "v": "/year/2024"
166 | }, {
167 | "n": "2023",
168 | "v": "/year/2023"
169 | }, {
170 | "n": "2022",
171 | "v": "/year/2022"
172 | }, {
173 | "n": "2021",
174 | "v": "/year/2021"
175 | }, {
176 | "n": "2020",
177 | "v": "/year/2020"
178 | }, {
179 | "n": "2019",
180 | "v": "/year/2019"
181 | }, {
182 | "n": "2018",
183 | "v": "/year/2018"
184 | }, {
185 | "n": "2017",
186 | "v": "/year/2017"
187 | }, {
188 | "n": "2016",
189 | "v": "/year/2016"
190 | }, {
191 | "n": "2015",
192 | "v": "/year/2015"
193 | }, {
194 | "n": "2014",
195 | "v": "/year/2014"
196 | }, {
197 | "n": "2013",
198 | "v": "/year/2013"
199 | }, {
200 | "n": "2012",
201 | "v": "/year/2012"
202 | }, {
203 | "n": "2011",
204 | "v": "/year/2011"
205 | }, {
206 | "n": "2010",
207 | "v": "/year/2010"
208 | }, {
209 | "n": "2009",
210 | "v": "/year/2009"
211 | }, {
212 | "n": "2008",
213 | "v": "/year/2008"
214 | }]
215 | }]
216 | },
217 | searchUrl: '/index.php/vod/search/page/fypage/wd/**.html',
218 | searchable: 2,
219 | quickSearch: 0,
220 | headers: {
221 | 'User-Agent': 'MOBILE_UA'
222 | },
223 | timeout: 5000, //网站的全局请求超时,默认是3000毫秒
224 | class_name: '日漫&国漫',
225 | class_url: 'area/日本&area/中國',
226 | play_parse: true,
227 | lazy: `js:
228 | var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
229 | var url = html.url;
230 | var from = html.from;
231 | if (html.encrypt == '1') {
232 | url = unescape(url)
233 | } else if (html.encrypt == '2') {
234 | url = unescape(base64Decode(url))
235 | }
236 | if (/m3u8|mp4/.test(url)) {
237 | input = url
238 | } else {
239 | var MacPlayerConfig={};
240 | eval(fetch(HOST + "/static/js/playerconfig.js").replace('var Mac','Mac'));
241 | var jx = MacPlayerConfig.player_list[from].parse;
242 | if (jx == '') {
243 | jx = MacPlayerConfig.parse
244 | };
245 | if (jx.startsWith("/")) {
246 | jx = "https:" + jx;
247 | }
248 | input={
249 | jx:0,
250 | url:jx+url,
251 | parse:1,
252 | header: JSON.stringify({
253 | 'referer': HOST
254 | })
255 | }
256 | }
257 | `,
258 | limit: 6,
259 | // 图片来源:'@Referer=https://api.douban.com/@User-Agent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/113.0.0.0%20Safari/537.36',
260 | 推荐: '*',
261 | 一级: '.vodlist_wi&&li;.lazyload&&title;.lazyload&&data-original;.pic_text&&Text;a&&href',
262 | 二级: {
263 | "title": "h2&&Text;li.data--span:eq(0)&&Text",
264 | "img": ".lazyload&&data-original",
265 | "desc": "li.data--span:eq(1)&&Text;;;li.data--span:eq(2)&&Text;li.data--span:eq(3)&&Text",
266 | "content": ".full_text&&span&&Text",
267 | "tabs": `js:
268 | TABS = [];
269 | let tabs = pdfa(html, '#NumTab&&a');
270 | tabs.forEach((it) => {
271 | TABS.push(pdfh(it, 'a&&alt'))
272 | });
273 | `,
274 | // "lists": ".content_playlist:not(.list_scroll):eq(#id) a"
275 | "lists": "div.playlist_full:eq(#id) li"
276 | },
277 | 搜索: 'li.searchlist_item;*;*;*;*',
278 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/思古影视.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | 类型: '影视',
3 | title: '思古影视',
4 | host: 'https://siguyy.cn',
5 | url: '/show/fyclass--------fypage---/',
6 | searchUrl: 'https://siguyy.cn/search/-------------/?wd=**',
7 | searchable: 2,
8 | quickSearch: 0,
9 | timeout: 5000,
10 | play_parse: true,
11 | filterable: 0,
12 | class_name: '电影&电视剧&综艺&动漫',
13 | class_url: '1&2&3&4',
14 | lazy: `js:
15 | if(/\\.(m3u8|mp4)/.test(input)){
16 | input = {parse:0,url:input}
17 | }else{
18 | if(rule.parse_url.startsWith('json:')){
19 | let purl = rule.parse_url.replace('json:','')+input;
20 | let html = request(purl);
21 | input = {parse:0,url:JSON.parse(html).url}
22 | }else{
23 | input= rule.parse_url+input;
24 | }
25 | `,
26 | headers: {
27 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
28 | },
29 | 推荐: '*',
30 | 一级: '.container .flex.desktop-hover-effect;span&&Text;img&&data-original;p.truncate&&Text;a&&href',
31 | 二级: {
32 | title: '.p-3.mobile&&Text',
33 | img: 'img&&data-original',
34 | desc: '.text-sm.py-1&&Text',
35 | content: '.text-secondary&&Text',
36 | tabs: '.flex.flex-row.gap-1.items-center',
37 | lists: '.flex.flex-column.overflow-auto.no-scrollbar&&li',
38 | tab_text: 'body&&Text',
39 | list_text: 'a&&Text',
40 | list_url: 'a&&href',
41 | },
42 | double: false,
43 | 搜索: '.col-lg-6.col-md-12.mt-2.mb-2.cursor-pointer;.topic-details-title-sub.text-secondary&&Text;img&&data-original;.topic-details-title&&Text;a&&href',
44 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/机器人.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | title: '爱看机器人[虫]',
3 | // host:'https://v.ikanbot.com',
4 | host: 'https://v.aikanbot.com',
5 | url: '/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]',
6 | //https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2
7 | // searchUrl:'/search?q=**&p=fypage',
8 | searchUrl: '/search?q=**&p=fypage[/search?q=**]',
9 | searchable: 2,
10 | quickSearch: 0,
11 | filterable: 1,
12 | filter_url: '{{fl.tag}}',
13 | 图片来源: '@Referer=https://v.ikanbot.com/@User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
14 | filter: {
15 | "movie": [{
16 | "key": "tag",
17 | "name": "标签",
18 | "value": [{
19 | "n": "热门",
20 | "v": "热门"
21 | }, {
22 | "n": "最新",
23 | "v": "最新"
24 | }, {
25 | "n": "经典",
26 | "v": "经典"
27 | }, {
28 | "n": "豆瓣高分",
29 | "v": "豆瓣高分"
30 | }, {
31 | "n": "冷门佳片",
32 | "v": "冷门佳片"
33 | }, {
34 | "n": "华语",
35 | "v": "华语"
36 | }, {
37 | "n": "欧美",
38 | "v": "欧美"
39 | }, {
40 | "n": "韩国",
41 | "v": "韩国"
42 | }, {
43 | "n": "日本",
44 | "v": "日本"
45 | }, {
46 | "n": "动作",
47 | "v": "动作"
48 | }, {
49 | "n": "喜剧",
50 | "v": "喜剧"
51 | }, {
52 | "n": "爱情",
53 | "v": "爱情"
54 | }, {
55 | "n": "科幻",
56 | "v": "科幻"
57 | }, {
58 | "n": "悬疑",
59 | "v": "悬疑"
60 | }, {
61 | "n": "恐怖",
62 | "v": "恐怖"
63 | }, {
64 | "n": "治愈",
65 | "v": "治愈"
66 | }, {
67 | "n": "豆瓣top250",
68 | "v": "豆瓣top250"
69 | }]
70 | }],
71 | "tv": [{
72 | "key": "tag",
73 | "name": "标签",
74 | "value": [{
75 | "n": "热门",
76 | "v": "热门"
77 | }, {
78 | "n": "美剧",
79 | "v": "美剧"
80 | }, {
81 | "n": "英剧",
82 | "v": "英剧"
83 | }, {
84 | "n": "韩剧",
85 | "v": "韩剧"
86 | }, {
87 | "n": "日剧",
88 | "v": "日剧"
89 | }, {
90 | "n": "国产剧",
91 | "v": "国产剧"
92 | }, {
93 | "n": "港剧",
94 | "v": "港剧"
95 | }, {
96 | "n": "日本动画",
97 | "v": "日本动画"
98 | }, {
99 | "n": "综艺",
100 | "v": "综艺"
101 | }, {
102 | "n": "纪录片",
103 | "v": "纪录片"
104 | }]
105 | }]
106 | },
107 | filter_def: {
108 | movie: {
109 | tag: '热门'
110 | },
111 | tv: {
112 | tag: '国产剧'
113 | },
114 | },
115 | filter获取方法: `
116 | let value = [];
117 | $('ul').eq(2).find('li').each(function() {
118 | // console.log($(this).text());
119 | let n = $(this).text().trim();
120 | value.push({
121 | 'n': n, 'v': n
122 | });
123 | });
124 | // 电影执行:
125 | let data = {'movie': [{'key': 'tag', 'name': '标签', 'value': value}]};
126 | console.log(JSON.stringify(data));
127 |
128 | //剧集执行:
129 | let data = {'tv': [{'key': 'tag', 'name': '标签', 'value': value}]};
130 | console.log(JSON.stringify(data));
131 | `,
132 | headers: {
133 | 'User-Agent': 'PC_UA',
134 | },
135 | class_name: '电影&剧集',
136 | class_url: 'movie&tv',
137 | play_parse: true,
138 | double: true,
139 | tab_remove: ['wjm3u8', 'ikm3u8', 'sdm3u8', 'M3U8', 'jinyingm3u8', 'fsm3u8', 'ukm3u8'], //移除某个线路及相关的选集
140 | tab_order: ['bfzym3u8', '1080zyk', 'kuaikan', 'lzm3u8', 'ffm3u8', 'snm3u8', 'qhm3u8', 'gsm3u8', 'zuidam3u8', 'bjm3u8', 'wolong', 'xlm3u8', 'yhm3u8'], //线路顺序,按里面的顺序优先,没写的依次排后面
141 | tab_rename: {
142 | 'bfzym3u8': '暴风',
143 | '1080zyk': '优质',
144 | 'kuaikan': '快看',
145 | 'lzm3u8': '量子',
146 | 'ffm3u8': '非凡',
147 | 'snm3u8': '索尼',
148 | 'qhm3u8': '奇虎',
149 | 'haiwaikan': '海外看',
150 | 'gsm3u8': '光速',
151 | 'zuidam3u8': '最大',
152 | 'bjm3u8': '八戒',
153 | 'wolong': '卧龙',
154 | 'xlm3u8': '新浪',
155 | 'yhm3u8': '樱花',
156 | 'tkm3u8': '天空',
157 | 'jsm3u8': '极速',
158 | 'wjm3u8': '无尽',
159 | 'sdm3u8': '闪电',
160 | 'kcm3u8': '快车',
161 | 'jinyingm3u8': '金鹰',
162 | 'fsm3u8': '飞速',
163 | 'tpm3u8': '淘片',
164 | 'lem3u8': '鱼乐',
165 | 'dbm3u8': '百度',
166 | 'tomm3u8': '番茄',
167 | 'ukm3u8': 'U酷',
168 | 'ikm3u8': '爱坤',
169 | 'hnzym3u8': '红牛资源',
170 | 'hnm3u8': '红牛',
171 | '68zy_m3u8': '68',
172 | 'kdm3u8': '酷点',
173 | 'bdxm3u8': '北斗星',
174 | 'hhm3u8': '豪华',
175 | 'kbm3u8': '快播'
176 | }, //线路名替换如:lzm3u8替换为量子资源
177 | 推荐: '.v-list;div.item;*;*;*;*', //这里可以为空,这样点播不会有内容
178 | // 一级:'.v-list&&div.item;p&&Text;img&&src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
179 | 一级: '.v-list&&div.item;p&&Text;img&&data-src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配
180 | // 二级:二级,
181 | 二级: 'js:eval(unescape(base64Decode("anM6CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIGZ1bmN0aW9uIGdldFRva2VuKGh0bWwxKSB7CiAgICAgICAgICAgIGxldCBjdXJyZW50SWQgPSBwZGZoKGh0bWwxLCAnI2N1cnJlbnRfaWQmJnZhbHVlJyk7CiAgICAgICAgICAgIGxldCBlVG9rZW4gPSBwZGZoKGh0bWwxLCAnI2VfdG9rZW4mJnZhbHVlJyk7CiAgICAgICAgICAgIGlmICghY3VycmVudElkIHx8ICFlVG9rZW4pIHJldHVybiAnJzsKICAgICAgICAgICAgbGV0IGlkTGVuZ3RoID0gY3VycmVudElkLmxlbmd0aDsKICAgICAgICAgICAgbGV0IHN1YklkID0gY3VycmVudElkLnN1YnN0cmluZyhpZExlbmd0aCAtIDQsIGlkTGVuZ3RoKTsKICAgICAgICAgICAgbGV0IGtleXMgPSBbXTsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJJZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgbGV0IGN1ckludCA9IHBhcnNlSW50KHN1YklkW2ldKTsKICAgICAgICAgICAgICAgIGxldCBzcGxpdFBvcyA9IGN1ckludCAlIDMgKyAxOwogICAgICAgICAgICAgICAga2V5c1tpXSA9IGVUb2tlbi5zdWJzdHJpbmcoc3BsaXRQb3MsIHNwbGl0UG9zICsgOCk7CiAgICAgICAgICAgICAgICBlVG9rZW4gPSBlVG9rZW4uc3Vic3RyaW5nKHNwbGl0UG9zICsgOCwgZVRva2VuLmxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGtleXMuam9pbignJyk7CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFZPRD17fTsKICAgICAgICAgICAgbGV0IGh0bWwxID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgICAgIFZPRC52b2RfaWQgPSBwZGZoKGh0bWwxLCAnI2N1cnJlbnRfaWQmJnZhbHVlJyk7CiAgICAgICAgICAgIFZPRC52b2RfbmFtZSA9IHBkZmgoaHRtbDEsICdoMiYmVGV4dCcpOwogICAgICAgICAgICBWT0Qudm9kX3BpYyA9IHBkZmgoaHRtbDEsICcuaXRlbS1yb290JiZpbWcmJmRhdGEtc3JjJyk7CiAgICAgICAgICAgIFZPRC52b2RfYWN0b3IgPSBwZGZoKGh0bWwxLCAnLm1ldGE6ZXEoNCkmJlRleHQnKTsKICAgICAgICAgICAgVk9ELnZvZF9hcmVhID0gcGRmaChodG1sMSwgJy5tZXRhOmVxKDMpJiZUZXh0Jyk7CiAgICAgICAgICAgIFZPRC52b2RfeWVhciA9IHBkZmgoaHRtbDEsICcubWV0YTplcSgyKSYmVGV4dCcpOwogICAgICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSAnJzsKICAgICAgICAgICAgVk9ELnZvZF9kaXJlY3RvciA9ICcnOwogICAgICAgICAgICBWT0Qudm9kX2NvbnRlbnQgPSBwZGZoKGh0bWwxLCAnI2xpbmUtdGlwcyYmVGV4dCcpOwogICAgICAgICAgICAvLyBsb2coVk9EKTsKICAgICAgICAgICAgdmFyIHZfdGtzID0gZ2V0VG9rZW4oaHRtbDEpOwogICAgICAgICAgICBsb2coJ3ZfdGtzID09PT4gJyArIHZfdGtzKTsKICAgICAgICAgICAgaW5wdXQgPSBIT1NUICsgJy9hcGkvZ2V0UmVzTj92aWRlb0lkPScgKyBpbnB1dC5zcGxpdCgnLycpLnBvcCgpICsgJyZtdHlwZT0yJnRva2VuPScrdl90a3M7CiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwgewogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzonTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMScsCiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBNWV9VUkwsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBwcmludChodG1sKTsKICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgIGxldCBlcGlzb2RlcyA9IGh0bWwuZGF0YS5saXN0OwogICAgICAgICAgICBsZXQgcGxheU1hcCA9IHt9OwogICAgICAgICAgICBpZiAodHlwZW9mIHBsYXlfdXJsID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgdmFyIHBsYXlfdXJsID0gJycKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgbWFwID0ge30KICAgICAgICAgICAgbGV0IGFyciA9IFtdCiAgICAgICAgICAgIGxldCBuYW1lID0gewogICAgICAgICAgICAgICAgJ2JmenltM3U4JzogJ+aatOmjjicsCiAgICAgICAgICAgICAgICAnMTA4MHp5ayc6ICfkvJjotKgnLAogICAgICAgICAgICAgICAgJ2t1YWlrYW4nOiAn5b+r55yLJywKICAgICAgICAgICAgICAgICdsem0zdTgnOiAn6YeP5a2QJywKICAgICAgICAgICAgICAgICdmZm0zdTgnOiAn6Z2e5YehJywKICAgICAgICAgICAgICAgICdoYWl3YWlrYW4nOiAn5rW35aSW55yLJywKICAgICAgICAgICAgICAgICdnc20zdTgnOiAn5YWJ6YCfJywKICAgICAgICAgICAgICAgICd6dWlkYW0zdTgnOiAn5pyA5aSnJywKICAgICAgICAgICAgICAgICdiam0zdTgnOiAn5YWr5oiSJywKICAgICAgICAgICAgICAgICdzbm0zdTgnOiAn57Si5bC8JywKICAgICAgICAgICAgICAgICd3b2xvbmcnOiAn5Y2n6b6ZJywKICAgICAgICAgICAgICAgICd4bG0zdTgnOiAn5paw5rWqJywKICAgICAgICAgICAgICAgICd5aG0zdTgnOiAn5qix6IqxJywKICAgICAgICAgICAgICAgICd0a20zdTgnOiAn5aSp56m6JywKICAgICAgICAgICAgICAgICdqc20zdTgnOiAn5p6B6YCfJywKICAgICAgICAgICAgICAgICd3am0zdTgnOiAn5peg5bC9JywKICAgICAgICAgICAgICAgICdzZG0zdTgnOiAn6Zeq55S1JywKICAgICAgICAgICAgICAgICdrY20zdTgnOiAn5b+r6L2mJywKICAgICAgICAgICAgICAgICdqaW55aW5nbTN1OCc6ICfph5HpubAnLAogICAgICAgICAgICAgICAgJ2ZzbTN1OCc6ICfpo57pgJ8nLAogICAgICAgICAgICAgICAgJ3RwbTN1OCc6ICfmt5jniYcnLAogICAgICAgICAgICAgICAgJ2xlbTN1OCc6ICfpsbzkuZAnLAogICAgICAgICAgICAgICAgJ2RibTN1OCc6ICfnmb7luqYnLAogICAgICAgICAgICAgICAgJ3RvbW0zdTgnOiAn55Wq6IyEJywKICAgICAgICAgICAgICAgICd1a20zdTgnOiAnVemFtycsCiAgICAgICAgICAgICAgICAnaWttM3U4JzogJ+eIseWdpCcsCiAgICAgICAgICAgICAgICAnaG56eW0zdTgnOiAn57qi54mb6LWE5rqQJywKICAgICAgICAgICAgICAgICdobm0zdTgnOiAn57qi54mbJywKICAgICAgICAgICAgICAgICc2OHp5X20zdTgnOiAnNjgnLAogICAgICAgICAgICAgICAgJ2tkbTN1OCc6ICfphbfngrknLAogICAgICAgICAgICAgICAgJ2JkeG0zdTgnOiAn5YyX5paX5pifJywKICAgICAgICAgICAgICAgICdxaG0zdTgnOiAn5aWH6JmOJywKICAgICAgICAgICAgICAgICdoaG0zdTgnOiAn6LGq5Y2OJwogICAgICAgICAgICB9OwogICAgICAgICAgICBlcGlzb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGVwKSB7CiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoZXBbJ3Jlc0RhdGEnXSk7CiAgICAgICAgICAgICAgICBkYXRhLm1hcCh2YWwgPT4gewogICAgICAgICAgICAgICAgICAgIGlmKCFtYXBbdmFsLmZsYWddKXsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwW3ZhbC5mbGFnXSA9IFt2YWwudXJsLnJlcGxhY2VBbGwoJyMjJywnIycpXQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFt2YWwuZmxhZ10ucHVzaCh2YWwudXJsLnJlcGxhY2VBbGwoJyMjJywnIycpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWFwKSB7CiAgICAgICAgICAgICAgICBpZiAoJ2JmenltM3U4JyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCcxMDgwenlrJyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdrdWFpa2FuJyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdsem0zdTgnID09IGtleSkgewogICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZzogbmFtZVtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1hcFtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiA0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2ZmbTN1OCcgPT0ga2V5KSB7CiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiBuYW1lW2tleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbWFwW2tleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IDUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnc25tM3U4JyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogNgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdxaG0zdTgnID09IGtleSkgewogICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZzogbmFtZVtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1hcFtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiA3CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiAobmFtZVtrZXldKSA/IG5hbWVba2V5XSA6IGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogOAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXJyLnNvcnQoKGEsIGIpID0+IGEuc29ydCAtIGIuc29ydCk7CiAgICAgICAgICAgIGxldCBwbGF5RnJvbSA9IFtdOwogICAgICAgICAgICBsZXQgcGxheUxpc3QgPSBbXTsKICAgICAgICAgICAgYXJyLm1hcCh2YWwgPT4gewogICAgICAgICAgICAgICAgaWYgKCEvdW5kZWZpbmVkLy50ZXN0KHZhbC5mbGFnKSkgewogICAgICAgICAgICAgICAgICAgIHBsYXlGcm9tLnB1c2godmFsLmZsYWcpOwogICAgICAgICAgICAgICAgICAgIHBsYXlMaXN0LnB1c2godmFsLnVybCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIGxldCB2b2RfcGxheV9mcm9tID0gcGxheUZyb20uam9pbignJCQkJyk7CiAgICAgICAgICAgIGxldCB2b2RfcGxheV91cmwgPSBwbGF5TGlzdC5qb2luKCckJCQnKTsKICAgICAgICAgICAgVk9EWyd2b2RfcGxheV9mcm9tJ10gPSB2b2RfcGxheV9mcm9tOwogICAgICAgICAgICBWT0RbJ3ZvZF9wbGF5X3VybCddID0gdm9kX3BsYXlfdXJsOwogICAgICAgICAgICAvLyBsb2coVk9EKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGxvZygn6I635Y+W5LqM57qn6K+m5oOF6aG15Y+R55Sf6ZSZ6K+vOicgKyBlLm1lc3NhZ2UpCiAgICAgICAgfQ==")))',
182 | // 搜索:'#search-result&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href',//第三个是描述,一般显示更新或者完结
183 | 搜索: '.col-md-8&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href', //第三个是描述,一般显示更新或者完结
184 | lazy: `
185 | if(/\\.m3u8$/.test(input)){
186 | input = {
187 | parse:0,
188 | url:getProxyUrl()+'&url='+input,
189 | jx:0
190 | }
191 | }
192 | `,
193 | proxy_rule: `js:
194 | let url = input.url;
195 | let m3u8 = fixAdM3u8Ai(url);
196 | input = [200,'application/vnd.apple.mpegurl',m3u8]
197 | `
198 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/梦米弹幕.js:
--------------------------------------------------------------------------------
1 | globalThis.h_ost = 'http://op.ysdqjs.cn/';
2 |
3 | globalThis.vodlist = function($t, $pg) {
4 | const currentTimestamp = parseInt(Date.now() / 1000, 10);
5 | const url = h_ost + '/v2/home/type_search';
6 | const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
7 | let html = request(url, {
8 | body: {
9 | sign: hx,
10 | type_id: $t,
11 | page: $pg,
12 | },
13 | headers: {
14 | 'User-Agent': 'okhttp-okgo/jeasonlzy',
15 | 'Content-Type': 'application/x-www-form-urlencoded'
16 | },
17 | 'method': 'POST'
18 | }, true);
19 | return JSON.parse(html).data.list;
20 | }
21 |
22 | globalThis.seach = function(wd) {
23 | const currentTimestamp = parseInt(Date.now() / 1000, 10);
24 | const url = h_ost + '/v2/home/search';
25 | const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
26 | let html = request(url, {
27 | body: {
28 | sign: hx,
29 | keyword: wd,
30 | timestamp: currentTimestamp,
31 | },
32 | headers: {
33 | 'User-Agent': 'okhttp-okgo/jeasonlzy',
34 | 'Content-Type': 'application/x-www-form-urlencoded'
35 | },
36 | 'method': 'POST'
37 | }, true);
38 | return JSON.parse(html).data.list;
39 | }
40 | globalThis.vodids = function(ids) {
41 | const currentTimestamp = parseInt(Date.now() / 1000, 10);
42 | const url = h_ost + '/v2/home/vod_details';
43 | const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
44 | let html = request(url, {
45 | body: {
46 | sign: hx,
47 | vod_id: ids,
48 | timestamp: currentTimestamp,
49 | },
50 | headers: {
51 | 'User-Agent': 'okhttp-okgo/jeasonlzy',
52 | 'Content-Type': 'application/x-www-form-urlencoded'
53 | },
54 | 'method': 'POST'
55 | }, true);
56 | const redata = JSON.parse(html);
57 | let vodPlayFrom = '';
58 | let vodPlayUrl = '';
59 | redata.data.vod_play_list.forEach((value, key) => {
60 | if (value.flag.includes("nby") || value.flag.includes("mgtv") || value.flag.includes("qq") || value.flag.includes("qiyi") || value.flag.includes("mgtv") || 1) {
61 | vodPlayFrom += `${value.flag}$$$`;
62 | value.urls.forEach(url => {
63 | vodPlayUrl += `${url.name}$${value.parse_urls[0]}${url.url}~${url.name}#`;
64 | });
65 | vodPlayUrl += '$$$';
66 | }
67 | });
68 | const regeshi = {
69 | vod_id: redata.data.vod_id,
70 | vod_name: redata.data.vod_name,
71 | vod_remarks: `${redata.data.vod_remarks}`,
72 | type_name: redata.data.vod_class,
73 | vod_pic: redata.data.vod_pic,
74 | vod_year: redata.data.vod_year,
75 | vod_area: redata.data.vod_area,
76 | vod_actor: `${redata.data.vod_actor}`,
77 | vod_director: redata.data.vod_director,
78 | vod_content: `${redata.data.vod_content}`,
79 | vod_play_from: vodPlayFrom,
80 | vod_play_url: vodPlayUrl
81 | };
82 | return regeshi;
83 | }
84 | globalThis.jxx = function(input) {
85 | if ("741852963" !== '741852963') {
86 | return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
87 | }
88 | const parts = input.split('~');
89 | try {
90 | let response = fetch(parts[0], {
91 | method: 'get',
92 | headers: {
93 | 'User-Agent': 'okhttp/3.14.9',
94 | 'Content-Type': 'application/x-www-form-urlencoded'
95 | }
96 | });
97 |
98 | if (response.includes("成功") || response.includes("success") || response.includes("nby")) {
99 | let bata = JSON.parse(response);
100 | input = {
101 | parse: 0,
102 | url: bata.url,
103 | jx: 0,
104 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
105 | }
106 | } else {
107 | input = {
108 | parse: 0,
109 | url: parts[0].includes('url=') ? parts[0].slice(parts[0].indexOf('url=') + 4) : null,
110 | jx: 1,
111 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
112 | }
113 | }
114 | } catch {
115 | input = {
116 | parse: 0,
117 | url: '解析失败',
118 | jx: 0,
119 | }
120 | }
121 | return input;
122 | }
123 |
124 | var rule = {
125 | title: '天天',
126 | host: '',
127 | detailUrl: 'fyid',
128 | searchUrl: '**',
129 | url: 'fyclass',
130 | searchable: 2,
131 | quickSearch: 1,
132 | filterable: 0,
133 | class_name: '电影&电视剧&综艺&动漫',
134 | class_url: '1&2&4&3',
135 | play_parse: true,
136 | lazy: $js.toString(() => {
137 | input = jxx(input);
138 | }),
139 | 推荐: $js.toString(() => {
140 | let bdata = vodlist(1, 1);
141 | console.log(bdata);
142 | bdata.forEach(it => {
143 | d.push({
144 | url: it.vod_id,
145 | title: it.vod_name,
146 | img: it.vod_pic,
147 | desc: it.vod_remarks
148 | });
149 | });
150 | setResult(d);
151 | }),
152 | 一级: $js.toString(() => {
153 | let bdata = vodlist(input, MY_PAGE);
154 | console.log(bdata);
155 | bdata.forEach(it => {
156 | d.push({
157 | url: it.vod_id,
158 | title: it.vod_name,
159 | img: it.vod_pic,
160 | desc: it.vod_remarks
161 | });
162 | });
163 | setResult(d);
164 | }),
165 | 二级: $js.toString(() => {
166 | console.log("调试信息2" + input);
167 | let data = vodids(input);
168 | //console.log(data);
169 | VOD = (data);
170 | }),
171 | 搜索: $js.toString(() => {
172 | let ddata = seach(input);
173 | ddata.forEach(it => {
174 | d.push({
175 | url: it.vod_id,
176 | title: it.vod_name,
177 | img: it.vod_pic,
178 | desc: it.vod_remarks
179 | });
180 | });
181 | setResult(d);
182 | }),
183 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/樱花动漫.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | 模板: '首图',
3 | title: '樱花动漫[漫]',
4 | host: 'https://katedm.com/',
5 | url: '/list/fyclass-fypage.html',
6 | searchUrl: '/search/**----------fypage---.html',
7 | 搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-tag&&Text;a&&href',
8 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/短剧合集.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | 类型: '影视',//影视|听书|漫画|小说
3 | title: '爱看短剧[盘]',
4 | host: 'https://ys.110t.cn/',
5 | homeUrl: '/api/ajax.php?act=recommend',
6 | homeUrl: '/api/ajax.php?act=Daily',
7 | url: '/api/ajax.php?act=fyclass',
8 | searchUrl: '/api/ajax.php?act=search&name=**',
9 | searchable: 1,
10 | quickSearch: 0,
11 | filterable: 0,
12 | headers: {
13 | 'User-Agent': 'MOBILE_UA',
14 | },
15 | hikerListCol: "text_1",
16 | hikerClassListCol: "text_1",
17 | timeout: 5000,
18 | class_name: '全部',
19 | class_url: 'yingshilist',
20 | play_parse: true,
21 | lazy: $js.toString(() => {
22 | input = "push://" + input;
23 | }),
24 | double: false,
25 | 推荐: '*',
26 | 一级: 'json:data;name;;addtime;url',
27 | 二级: '*',
28 | 搜索: '*',
29 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/碟调影视.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | title: '碟调影视',
3 | host: 'http://www.618648.com',
4 | // homeUrl:'/',
5 | url: '/die-tiao/fyclass-fypage.html',
6 | searchUrl: '/diediaoch/page/fypage/wd/**.html',
7 | searchable: 2, //是否启用全局搜索,
8 | quickSearch: 0, //是否启用快速搜索,
9 | filterable: 0, //是否启用分类筛选,
10 | headers: { //网站的请求头,完整支持所有的,常带ua和cookies
11 | 'User-Agent': 'MOBILE_UA',
12 | // "Cookie": "searchneed=ok"
13 | },
14 | //class_parse:'.stui-header__menu li.hidden-xs;a&&Text;a&&href;.*/(.*?).html',
15 | class_name: '电影&电视剧&综艺&动漫',
16 | class_url: '1&2&3&4',
17 | play_parse: true,
18 | lazy: '',
19 | limit: 8,
20 | 推荐: '.stui-vodlist.clearfix;.stui-vodlist__box;a&&title;a&&data-original;.pic-text&&Text;a&&href',
21 | double: true, // 推荐内容是否双层定位
22 | 一级: '.stui-vodlist.clearfix li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
23 | 二级: {
24 | "title": "h1.title&&Text;.stui-content__detail p:eq(2)&&Text",
25 | "img": ".lazyload&&data-original",
26 | "desc": ".video-info-items:eq(-2)&&Text;.video-info-items:eq(-1)&&Text;.video-info-items:eq(-2)&&Text;.stui-content__detail p:eq(7)&&Text;.stui-content__detail p:eq(6)&&Text",
27 | "content": ".stui-content__detail p:eq(9)&&Text",
28 | "tabs": ".nav.nav-tabs li",
29 | "lists": ".tab-pane.fade:eq(#id)&&ul&&li"
30 | },
31 | 搜索: '.stui-vodlist.clearfix li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
32 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/磁力熊.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | title:'磁力熊[磁]',
3 | host:'https://www.cilixiong.com',
4 | homeUrl:'/top250/index.html',
5 | // url: '/fyclass/index_(fypage-1).html',
6 | url: '/fyclassfyfilter-(fypage-1).html',
7 | filter_url:'-{{fl.class or "0"}}-{{fl.area or "0"}}',
8 | filter:{
9 | "1":[{"key":"class","name":"类型","value":[{"n":"全部","v":"0"},{"n":"剧情","v":"1"},{"n":"喜剧","v":"2"},{"n":"惊悚","v":"3"},{"n":"动作","v":"4"},{"n":"爱情","v":"5"},{"n":"犯罪","v":"6"},{"n":"恐怖","v":"7"},{"n":"冒险","v":"8"},{"n":"悬疑","v":"9"},{"n":"科幻","v":"10"},{"n":"家庭","v":"11"},{"n":"奇幻","v":"12"},{"n":"动画","v":"13"},{"n":"战争","v":"14"},{"n":"历史","v":"15"},{"n":"传记","v":"16"},{"n":"音乐","v":"17"},{"n":"歌舞","v":"18"},{"n":"运动","v":"19"},{"n":"西部","v":"20"},{"n":"灾难","v":"21"},{"n":"古装","v":"22"},{"n":"情色","v":"23"},{"n":"同性","v":"24"},{"n":"儿童","v":"25"},{"n":"纪录片","v":"26"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"0"},{"n":"大陆","v":"1"},{"n":"香港","v":"2"},{"n":"台湾","v":"3"},{"n":"美国","v":"4"},{"n":"日本","v":"5"},{"n":"韩国","v":"6"},{"n":"英国","v":"7"},{"n":"法国","v":"8"},{"n":"德国","v":"9"},{"n":"印度","v":"10"},{"n":"泰国","v":"11"},{"n":"丹麦","v":"12"},{"n":"瑞典","v":"13"},{"n":"巴西","v":"14"},{"n":"加拿大","v":"15"},{"n":"俄罗斯","v":"16"},{"n":"意大利","v":"17"},{"n":"比利时","v":"18"},{"n":"爱尔兰","v":"19"},{"n":"西班牙","v":"20"},{"n":"澳大利亚","v":"21"},{"n":"波兰","v":"22"},{"n":"土耳其","v":"23"},{"n":"越南","v":"24"}]}],
10 | "2":[{"key":"class","name":"类型","value":[{"n":"全部","v":"0"},{"n":"剧情","v":"1"},{"n":"喜剧","v":"2"},{"n":"惊悚","v":"3"},{"n":"动作","v":"4"},{"n":"爱情","v":"5"},{"n":"犯罪","v":"6"},{"n":"恐怖","v":"7"},{"n":"冒险","v":"8"},{"n":"悬疑","v":"9"},{"n":"科幻","v":"10"},{"n":"家庭","v":"11"},{"n":"奇幻","v":"12"},{"n":"动画","v":"13"},{"n":"战争","v":"14"},{"n":"历史","v":"15"},{"n":"传记","v":"16"},{"n":"音乐","v":"17"},{"n":"歌舞","v":"18"},{"n":"运动","v":"19"},{"n":"西部","v":"20"},{"n":"灾难","v":"21"},{"n":"古装","v":"22"},{"n":"情色","v":"23"},{"n":"同性","v":"24"},{"n":"儿童","v":"25"},{"n":"纪录片","v":"26"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"0"},{"n":"大陆","v":"1"},{"n":"香港","v":"2"},{"n":"台湾","v":"3"},{"n":"美国","v":"4"},{"n":"日本","v":"5"},{"n":"韩国","v":"6"},{"n":"英国","v":"7"},{"n":"法国","v":"8"},{"n":"德国","v":"9"},{"n":"印度","v":"10"},{"n":"泰国","v":"11"},{"n":"丹麦","v":"12"},{"n":"瑞典","v":"13"},{"n":"巴西","v":"14"},{"n":"加拿大","v":"15"},{"n":"俄罗斯","v":"16"},{"n":"意大利","v":"17"},{"n":"比利时","v":"18"},{"n":"爱尔兰","v":"19"},{"n":"西班牙","v":"20"},{"n":"澳大利亚","v":"21"},{"n":"波兰","v":"22"},{"n":"土耳其","v":"23"},{"n":"越南","v":"24"}]}]
11 | },
12 | searchUrl: '/e/search/index.php#classid=1,2&show=title&tempid=1&keyboard=**;post',
13 | searchable:2,
14 | quickSearch:0,
15 | filterable:1,
16 | headers:{
17 | 'User-Agent': 'MOBILE_UA'
18 | },
19 | timeout:5000,
20 | class_name:'电影&剧集&豆瓣电影Top250&IMDB Top250&高分悬疑片&高分喜剧片&高分传记片&高分爱情片&高分犯罪片&高分恐怖片&高分冒险片&高分武侠片&高分奇幻片&高分历史片&高分战争片&高分歌舞片&高分灾难片&高分情色片&高分西部片&高分音乐片&高分科幻片&高分动作片&高分动画片&高分纪录片&冷门佳片',
21 | class_url:'1&2&/top250/&/s/imdbtop250/&/s/suspense/&/s/comedy/&/s/biopic/&/s/romance/&/s/crime/&/s/horror/&/s/adventure/&/s/martial/&/s/fantasy/&/s/history/&/s/war/&/s/musical/&/s/disaster/&/s/erotic/&/s/west/&/s/music/&/s/sci-fi/&s/action/&/s/animation/&/s/documentary/&/s/unpopular/',
22 | play_parse:true,
23 | lazy:'',
24 | limit:6,
25 | 推荐: `js:
26 | pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
27 | var d = [];
28 | var html = request(input);
29 | var list = pdfa(html, 'body&&.col');
30 | list.forEach(it => {
31 | d.push({
32 | title: pdfh(it, 'h2&&Text'),
33 | desc: pdfh(it, '.me-auto&&Text') + '分 / ' + pdfh(it, '.small&&Text'),
34 | // pic_url: pd(it, '.card-img&&style'), // 只有 影视TV&爱佬版 有图片
35 | pic_url: /!'/.test(pd(it, '.card-img&&style'))?pd(it, '.card-img&&style'):pd(it, '.card-img&&style').replaceAll("'",""), // 兼容 影视TV&爱佬版 以外的其它壳子
36 | url: pd(it, 'a&&href')
37 | });
38 | })
39 | setResult(d);
40 | `,
41 | 一级: `js:
42 | pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
43 | var d = [];
44 | if (MY_CATE !== '1' && MY_CATE !== '2') {
45 | let turl = (MY_PAGE === 1)? 'index' : 'index_'+ MY_PAGE;
46 | input = HOST + MY_CATE + turl + '.html';
47 | }
48 | var html = request(input);
49 | var list = pdfa(html, 'body&&.col');
50 | list.forEach(it => {
51 | d.push({
52 | title: pdfh(it, 'h2&&Text'),
53 | desc: pdfh(it, '.me-auto&&Text') + '分 / ' + pdfh(it, '.small&&Text'),
54 | // pic_url: pdfh(it, '.card-img&&style'), // 只有 影视TV&爱佬版 有图片
55 | pic_url: /!'/.test(pd(it, '.card-img&&style'))?pd(it, '.card-img&&style'):pd(it, '.card-img&&style').replaceAll("'",""), // 兼容 影视TV&爱佬版 以外的其它壳子
56 | url: pd(it, 'a&&href')
57 | });
58 | })
59 | setResult(d);
60 | `,
61 | 二级:{
62 | title:'h1&&Text;p.mb-2:eq(4)&&Text',
63 | desc:'p.mb-2:eq(1)&&Text;;;p.mb-2:eq(7)&&Text;p.mb-2:eq(5)&&Text',
64 | img:'.rounded-2&&src',
65 | content:'.mv_card_box&&Text',
66 | // tabs:'js:TABS = ["道长磁力"]',
67 | // lists:'.mv_down:eq(#id)&&.border-bottom',
68 | // list_text:'a&&Text',
69 | // list_url:'a&&href',
70 |
71 | tabs:'js:TABS = ["道长磁力","道长在线预览"]',
72 | lists:`js:
73 | log(TABS);
74 | pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;
75 | LISTS = [];
76 | var dd=[];
77 | TABS.forEach(function(tab) {
78 | if (/道长磁力/.test(tab)) {
79 | var d = pdfa(html, '.mv_down&&.border-bottom');
80 | d = d.map(function(it) {
81 | var title = pdfh(it, 'a&&Text');
82 | log('title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title);
83 | var burl = pd(it, 'a&&href');
84 | log('burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl);
85 | return title + '$' + burl
86 | });
87 | LISTS.push(d)
88 | } else if (/道长在线预览/.test(tab)) {
89 | var d = pd(html, 'iframe&&src');
90 | if (d) {
91 | d=['第一集在线播放预览$' + d]
92 | } else {
93 | d=['没有预览不要点$http://www.sharenice.net/douyin/23852']
94 | }
95 | LISTS.push(d)
96 | }
97 | });
98 | `,
99 | },
100 | 搜索:'.col;h2&&Text;.card-img&&style;.me-auto&&Text;a&&href',
101 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/米兔弹幕.js:
--------------------------------------------------------------------------------
1 | globalThis.h_ost = 'http://mitu.jiajiayoutian.top/';
2 | var key = CryptoJS.enc.Base64.parse("ZDAzMmMxMjg3NmJjNjg0OA==");
3 | var iv = CryptoJS.enc.Base64.parse("ZDAzMmMxMjg3NmJjNjg0OA==");
4 | globalThis.AES_Decrypt = function(word) {
5 | try {
6 | var decrypt = CryptoJS.AES.decrypt(word, key, {
7 | iv: iv,
8 | mode: CryptoJS.mode.CBC,
9 | padding: CryptoJS.pad.Pkcs7,
10 | });
11 | const decryptedText = decrypt.toString(CryptoJS.enc.Utf8);
12 | if (!decryptedText) {
13 | throw new Error("解密后的内容为空");
14 | }
15 | return decryptedText;
16 | } catch (e) {
17 | console.error("解密失败:", e);
18 | return null;
19 | }
20 | };
21 | globalThis.AES_Encrypt = function(word) {
22 | var encrypted = CryptoJS.AES.encrypt(word, key, {
23 | iv: iv,
24 | mode: CryptoJS.mode.CBC,
25 | padding: CryptoJS.pad.Pkcs7
26 | });
27 | return encrypted.toString();
28 | };
29 |
30 | globalThis.vod1 = function(t, pg) {
31 | let html1 = request(h_ost + 'api.php/getappapi.index/typeFilterVodList', {
32 | body: {
33 | area: '全部',
34 | year: '全部',
35 | type_id: t,
36 | page: pg,
37 | sort: '最新',
38 | lang: '全部',
39 | class: '全部'
40 | },
41 | headers: {
42 | 'User-Agent': 'okhttp/3.14.9',
43 | 'Content-Type': 'application/x-www-form-urlencoded'
44 | },
45 | 'method': 'POST'
46 | }, true);
47 | let html = JSON.parse(html1);
48 | return (AES_Decrypt(html.data));
49 | }
50 | globalThis.vodids = function(ids) {
51 | let html1 = fetch(h_ost + 'api.php/getappapi.index/vodDetail', {
52 | method: 'POST',
53 | headers: {
54 | 'User-Agent': 'okhttp/3.14.9',
55 | 'Content-Type': 'application/x-www-form-urlencoded'
56 | },
57 | body: {
58 | vod_id: ids,
59 | }
60 | });
61 | let html = JSON.parse(html1);
62 | const rdata = JSON.parse(AES_Decrypt(html.data));
63 | console.log(rdata);
64 | const data = {
65 | vod_id: ids,
66 | vod_name: rdata.vod.vod_name,
67 | vod_remarks: rdata.vod.vod_remarks,
68 | vod_actor: rdata.vod.vod_actor,
69 | vod_director: rdata.vod.vod_director,
70 | vod_content: rdata.vod.vod_content,
71 | vod_play_from: '',
72 | vod_play_url: ''
73 | };
74 |
75 | rdata.vod_play_list.forEach((value) => {
76 | data.vod_play_from += value.player_info.show + '$$$';
77 | value.urls.forEach((v) => {
78 | data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#';
79 | });
80 | data.vod_play_url += '$$$';
81 | });
82 | return data;
83 | }
84 | //搜索
85 | globalThis.ssvod = function(wd) {
86 | var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', {
87 | method: 'POST',
88 | headers: {
89 | 'User-Agent': 'okhttp/3.14.9',
90 | 'Content-Type': 'application/x-www-form-urlencoded'
91 | },
92 | body: {
93 | keywords: wd,
94 | typepage_id: 1,
95 | }
96 | });
97 | let html = JSON.parse(html1);
98 | return AES_Decrypt(html.data);
99 | }
100 | //解析
101 | globalThis.jxx = function(id, url, name, juji) {
102 | try {
103 | if (id.includes('xmflv')) {
104 | return {
105 | parse: 1,
106 | url: id + url,
107 | jx: 0,
108 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
109 | };
110 | }
111 | //log(id);
112 | if (url.includes('m3u8')) {
113 | return {
114 | parse: 0,
115 | url: url,
116 | jx: 1,
117 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
118 | };
119 | }
120 | if (id.includes('http')) {
121 | let purl = JSON.parse(request(id + url)).url;
122 | return {
123 | parse: 0,
124 | url: purl,
125 | jx: 0,
126 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
127 | };
128 | }
129 | let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', {
130 | method: 'POST',
131 | headers: {
132 | 'User-Agent': 'okhttp/3.14.9',
133 | 'Content-Type': 'application/x-www-form-urlencoded'
134 | },
135 | body: {
136 | parse_api: id,
137 | url: AES_Encrypt(url),
138 | }
139 | });
140 | let html = AES_Decrypt(JSON.parse(html1).data);
141 | console.log(html1);
142 | let decry = html.replace(/\n/g, '').replace(/\\/g, '');
143 | let matches = decry.match(/"url":"([^"]+)"/);
144 | if (!matches || matches[1] === null) {
145 | matches = decry.match(/"url": "([^"]+)"/);
146 | }
147 | return {
148 | parse: 0,
149 | url: matches[1],
150 | jx: 0,
151 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963'
152 | };
153 | } catch {
154 | return {
155 | parse: 0,
156 | url: '解析失败',
157 | jx: 0
158 | };
159 | }
160 | }
161 |
162 | var rule = {
163 | title: '米兔[资]',
164 | host: '',
165 | detailUrl: 'fyid',
166 | searchUrl: '**',
167 | url: 'fyclass',
168 | searchable: 2,
169 | quickSearch: 1,
170 | filterable: 0,
171 | class_name: '电影&电视剧&综艺&动漫',
172 | class_url: '1&2&3&4',
173 | play_parse: true,
174 | lazy: $js.toString(() => {
175 | const parts = input.split('~');
176 | input = jxx(parts[0], parts[1], parts[2], parts[3]);
177 | }),
178 | 推荐: $js.toString(() => {
179 | let data = vod1(0, 0);
180 | let bata = JSON.parse(data).recommend_list;
181 | bata.forEach(it => {
182 | d.push({
183 | url: it.vod_id,
184 | title: it.vod_name,
185 | img: it.vod_pic,
186 | desc: it.vod_remarks
187 | });
188 | });
189 | setResult(d);
190 | }),
191 | 一级: $js.toString(() => {
192 | let data = vod1(input, MY_PAGE);
193 | let bata = JSON.parse(data).recommend_list;
194 | bata.forEach(it => {
195 | d.push({
196 | url: it.vod_id,
197 | title: it.vod_name,
198 | img: it.vod_pic,
199 | desc: it.vod_remarks
200 | });
201 | });
202 | setResult(d);
203 | }),
204 | 二级: $js.toString(() => {
205 | console.log("调试信息2" + input);
206 | let data = vodids(input);
207 | //console.log(data);
208 | VOD = data;
209 | }),
210 | 搜索: $js.toString(() => {
211 | let data = ssvod(input);
212 | let bata = JSON.parse(data).search_list;
213 | bata.forEach(it => {
214 | d.push({
215 | url: it.vod_id,
216 | title: it.vod_name,
217 | img: it.vod_pic,
218 | desc: it.vod_remarks
219 | });
220 | });
221 | // console.log(data);
222 | setResult(d);
223 | }),
224 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/路漫漫.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | title: "路漫漫",
3 | host: "http://www.lmm36.com",
4 | url: "/vod/show/id/fyclassfyfilter.html",
5 | searchUrl: '/vod/search/page/fypage/wd/**.html',
6 | searchable: 2,
7 | quickSearch: 0,
8 | filterable: 1,
9 | filter: {
10 | "3": [{
11 | "key": "年代",
12 | "name": "年代",
13 | "value": [{
14 | "n": "全部",
15 | "v": ""
16 | }, {
17 | "n": "2025",
18 | "v": "/year/2025"
19 | }, {
20 | "n": "2024",
21 | "v": "/year/2024"
22 | }, {
23 | "n": "2023",
24 | "v": "/year/2023"
25 | }, {
26 | "n": "2022",
27 | "v": "/year/2022"
28 | }, {
29 | "n": "2021",
30 | "v": "/year/2021"
31 | }, {
32 | "n": "2020",
33 | "v": "/year/2020"
34 | }, {
35 | "n": "2019",
36 | "v": "/year/2019"
37 | }, {
38 | "n": "2018",
39 | "v": "/year/2018"
40 | }, {
41 | "n": "2017",
42 | "v": "/year/2017"
43 | }, {
44 | "n": "2016",
45 | "v": "/year/2016"
46 | }, {
47 | "n": "2015",
48 | "v": "/year/2015"
49 | }, {
50 | "n": "更早",
51 | "v": "/year/2014-1980"
52 | }]
53 | }, {
54 | "key": "排序",
55 | "name": "排序",
56 | "value": [{
57 | "n": "最近更新",
58 | "v": "/by/time"
59 | }, {
60 | "n": "最高人气",
61 | "v": "/by/hits"
62 | }, {
63 | "n": "最高评分",
64 | "v": "/by/score"
65 | }, {
66 | "n": "最多点赞",
67 | "v": "/by/up"
68 | }]
69 | }],
70 | "4": [{
71 | "key": "年代",
72 | "name": "年代",
73 | "value": [{
74 | "n": "全部",
75 | "v": ""
76 | }, {
77 | "n": "2025",
78 | "v": "/year/2025"
79 | }, {
80 | "n": "2024",
81 | "v": "/year/2024"
82 | }, {
83 | "n": "2023",
84 | "v": "/year/2023"
85 | }, {
86 | "n": "2022",
87 | "v": "/year/2022"
88 | }, {
89 | "n": "2021",
90 | "v": "/year/2021"
91 | }, {
92 | "n": "2020",
93 | "v": "/year/2020"
94 | }, {
95 | "n": "2019",
96 | "v": "/year/2019"
97 | }, {
98 | "n": "2018",
99 | "v": "/year/2018"
100 | }, {
101 | "n": "2017",
102 | "v": "/year/2017"
103 | }, {
104 | "n": "2016",
105 | "v": "/year/2016"
106 | }, {
107 | "n": "2015",
108 | "v": "/year/2015"
109 | }, {
110 | "n": "更早",
111 | "v": "/year/2014-1980"
112 | }]
113 | }, {
114 | "key": "排序",
115 | "name": "排序",
116 | "value": [{
117 | "n": "最近更新",
118 | "v": "/by/time"
119 | }, {
120 | "n": "最高人气",
121 | "v": "/by/hits"
122 | }, {
123 | "n": "最高评分",
124 | "v": "/by/score"
125 | }, {
126 | "n": "最多点赞",
127 | "v": "/by/up"
128 | }]
129 | }],
130 | "5": [{
131 | "key": "年代",
132 | "name": "年代",
133 | "value": [{
134 | "n": "全部",
135 | "v": ""
136 | }, {
137 | "n": "2025",
138 | "v": "/year/2025"
139 | }, {
140 | "n": "2024",
141 | "v": "/year/2024"
142 | }, {
143 | "n": "2023",
144 | "v": "/year/2023"
145 | }, {
146 | "n": "2022",
147 | "v": "/year/2022"
148 | }, {
149 | "n": "2021",
150 | "v": "/year/2021"
151 | }, {
152 | "n": "2020",
153 | "v": "/year/2020"
154 | }, {
155 | "n": "2019",
156 | "v": "/year/2019"
157 | }, {
158 | "n": "2018",
159 | "v": "/year/2018"
160 | }, {
161 | "n": "2017",
162 | "v": "/year/2017"
163 | }, {
164 | "n": "2016",
165 | "v": "/year/2016"
166 | }, {
167 | "n": "2015",
168 | "v": "/year/2015"
169 | }, {
170 | "n": "更早",
171 | "v": "/year/2014-1980"
172 | }]
173 | }, {
174 | "key": "排序",
175 | "name": "排序",
176 | "value": [{
177 | "n": "最近更新",
178 | "v": "/by/time"
179 | }, {
180 | "n": "最高人气",
181 | "v": "/by/hits"
182 | }, {
183 | "n": "最高评分",
184 | "v": "/by/score"
185 | }, {
186 | "n": "最多点赞",
187 | "v": "/by/up"
188 | }]
189 | }],
190 | "6": [{
191 | "key": "年代",
192 | "name": "年代",
193 | "value": [{
194 | "n": "全部",
195 | "v": ""
196 | }, {
197 | "n": "2025",
198 | "v": "/year/2025"
199 | }, {
200 | "n": "2024",
201 | "v": "/year/2024"
202 | }, {
203 | "n": "2023",
204 | "v": "/year/2023"
205 | }, {
206 | "n": "2022",
207 | "v": "/year/2022"
208 | }, {
209 | "n": "2021",
210 | "v": "/year/2021"
211 | }, {
212 | "n": "2020",
213 | "v": "/year/2020"
214 | }, {
215 | "n": "2019",
216 | "v": "/year/2019"
217 | }, {
218 | "n": "2018",
219 | "v": "/year/2018"
220 | }, {
221 | "n": "2017",
222 | "v": "/year/2017"
223 | }, {
224 | "n": "2016",
225 | "v": "/year/2016"
226 | }, {
227 | "n": "2015",
228 | "v": "/year/2015"
229 | }, {
230 | "n": "更早",
231 | "v": "/year/2014-1980"
232 | }]
233 | }, {
234 | "key": "排序",
235 | "name": "排序",
236 | "value": [{
237 | "n": "最近更新",
238 | "v": "/by/time"
239 | }, {
240 | "n": "最高人气",
241 | "v": "/by/hits"
242 | }, {
243 | "n": "最高评分",
244 | "v": "/by/score"
245 | }, {
246 | "n": "最多点赞",
247 | "v": "/by/up"
248 | }]
249 | }],
250 | "7": [{
251 | "key": "年代",
252 | "name": "年代",
253 | "value": [{
254 | "n": "全部",
255 | "v": ""
256 | }, {
257 | "n": "2025",
258 | "v": "/year/2025"
259 | }, {
260 | "n": "2024",
261 | "v": "/year/2024"
262 | }, {
263 | "n": "2023",
264 | "v": "/year/2023"
265 | }, {
266 | "n": "2022",
267 | "v": "/year/2022"
268 | }, {
269 | "n": "2021",
270 | "v": "/year/2021"
271 | }, {
272 | "n": "2020",
273 | "v": "/year/2020"
274 | }, {
275 | "n": "2019",
276 | "v": "/year/2019"
277 | }, {
278 | "n": "2018",
279 | "v": "/year/2018"
280 | }, {
281 | "n": "2017",
282 | "v": "/year/2017"
283 | }, {
284 | "n": "2016",
285 | "v": "/year/2016"
286 | }, {
287 | "n": "2015",
288 | "v": "/year/2015"
289 | }, {
290 | "n": "更早",
291 | "v": "/year/2014-1980"
292 | }]
293 | }, {
294 | "key": "排序",
295 | "name": "排序",
296 | "value": [{
297 | "n": "最近更新",
298 | "v": "/by/time"
299 | }, {
300 | "n": "最高人气",
301 | "v": "/by/hits"
302 | }, {
303 | "n": "最高评分",
304 | "v": "/by/score"
305 | }, {
306 | "n": "最多点赞",
307 | "v": "/by/up"
308 | }]
309 | }],
310 | "8": [{
311 | "key": "年代",
312 | "name": "年代",
313 | "value": [{
314 | "n": "全部",
315 | "v": ""
316 | }, {
317 | "n": "2025",
318 | "v": "/year/2025"
319 | }, {
320 | "n": "2024",
321 | "v": "/year/2024"
322 | }, {
323 | "n": "2023",
324 | "v": "/year/2023"
325 | }, {
326 | "n": "2022",
327 | "v": "/year/2022"
328 | }, {
329 | "n": "2021",
330 | "v": "/year/2021"
331 | }, {
332 | "n": "2020",
333 | "v": "/year/2020"
334 | }, {
335 | "n": "2019",
336 | "v": "/year/2019"
337 | }, {
338 | "n": "2018",
339 | "v": "/year/2018"
340 | }, {
341 | "n": "2017",
342 | "v": "/year/2017"
343 | }, {
344 | "n": "2016",
345 | "v": "/year/2016"
346 | }, {
347 | "n": "2015",
348 | "v": "/year/2015"
349 | }, {
350 | "n": "更早",
351 | "v": "/year/2014-1980"
352 | }]
353 | }, {
354 | "key": "排序",
355 | "name": "排序",
356 | "value": [{
357 | "n": "最近更新",
358 | "v": "/by/time"
359 | }, {
360 | "n": "最高人气",
361 | "v": "/by/hits"
362 | }, {
363 | "n": "最高评分",
364 | "v": "/by/score"
365 | }, {
366 | "n": "最多点赞",
367 | "v": "/by/up"
368 | }]
369 | }]
370 | },
371 | filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage",
372 | filter_def: "",
373 | headers: {
374 | "User-Agent": "MOBILE_UA"
375 | },
376 | timeout: 5000,
377 | class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影",
378 | class_url: "6&7&8&3&4&5",
379 | class_parse: "",
380 | cate_exclude: "",
381 | play_parse: true,
382 | lazy: $js.toString(() => {
383 | function getDAesString(token) {
384 | eval(getCryptoJS());
385 | var key = CryptoJS.enc.Utf8.parse("ejjooopppqqqrwww");
386 |
387 | var iv = CryptoJS.enc.Utf8.parse("1348987635684651");
388 |
389 | var token = CryptoJS.AES.decrypt(token, key, {
390 | iv: iv,
391 | mode: CryptoJS.mode.CBC,
392 | padding: CryptoJS.pad.Pkcs7,
393 | });
394 |
395 | return token.toString(CryptoJS.enc.Utf8);
396 | }
397 |
398 | var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
399 | var url = html.url;
400 | var from = html.from;
401 | if (html.encrypt == "1") {
402 | url = unescape(url);
403 | } else if (html.encrypt == "2") {
404 | url = unescape(base64Decode(url));
405 | }
406 | if (/\.mp4|\.m3u8|\.flv/.test(url)) {
407 | input = {
408 | parse: 0,
409 | url: url.split("&")[0],
410 | js: ''
411 | };
412 | } else {
413 | var jsh = request(HOST + "/static/player/" + from + ".js", {
414 | headers: {
415 | Referer: input
416 | },
417 | }).match(/\.src\s*=\s*(.*?);/)[1];
418 | //log(MY_HOME);
419 | if (/type=/.test(jsh)) {
420 | jsh = jsh
421 | .replace(/[\+\s']/g, "")
422 | .replace(/MacPlayer.Parse/, "")
423 | .replace(/MacPlayer.PlayUrl/, url)
424 | .replace(/window.location.href/, input);
425 | var playht = fetch(jsh, {
426 | headers: {
427 | Referer: HOST
428 | }
429 | });
430 | } else {
431 | jsh = jsh
432 | .replace(/[\+\s']/g, "")
433 | .replace(/MacPlayer.Parse/, "")
434 | .replace(/MacPlayer.PlayUrl/, url)
435 | .replace(/window.location.href/, input);
436 |
437 | jsh = JSON.parse(
438 | fetch(jsh, {
439 | headers: {
440 | Referer: HOST
441 | },
442 | onlyHeaders: true
443 | })
444 | ).url;
445 | var playht = fetch(jsh, {
446 | headers: {
447 | Referer: HOST
448 | }
449 | });
450 | }
451 |
452 | var postapi = jsh.match(/^(.*?\/\/.*?\/.*?\/)/)[1];
453 |
454 | var posturl = postapi + playht.match(/post\("(.*?)"/)[1];
455 | if (/act\s*=/.test(playht)) {
456 | var vid = playht.match(/vid\s*=\s*"(.*?)"/)[1];
457 | var t = playht.match(/var\s*t\s*=\s*"(.*?)"/)[1];
458 | var token = playht.match(/token\s*=\s*"(.*?)"/)[1];
459 | var act = playht.match(/act\s*=\s*"(.*?)"/)[1];
460 | var play = playht.match(/play\s*=\s*"(.*?)"/)[1];
461 | token = getDAesString(token);
462 |
463 | var data = JSON.parse(
464 | post(posturl, {
465 | headers: {
466 | Referer: HOST
467 | },
468 | body: {
469 | vid: vid,
470 | t: t,
471 | token: token,
472 | act: act,
473 | play: play,
474 | },
475 | timeout: 5000
476 | })
477 | );
478 | input = {
479 | parse: 0,
480 | url: data.url,
481 | js: ''
482 | };
483 | } else {
484 | var key = "";
485 |
486 | playht.match(/var (\w+)="(.*?)";/g).forEach(function(list) {
487 | key += list.match(/"(.*?)"/)[1];
488 | });
489 | const bodys = JSON.parse(
490 | playht
491 | .match(/post\(.*?,(.*?),\n/)[1]
492 | .replace(/"keyyy"\s*:\s*''.*?''/, '"keyyy" : "' + key + '"')
493 | );
494 | var data = JSON.parse(
495 | post(posturl, {
496 | headers: {
497 | Referer: HOST
498 | },
499 | body: bodys
500 | })
501 | );
502 | if (data.ext == "xgplayer") {
503 | var dataurl =
504 | "https://yun.366day.site/mp4hls/xgplayer.php?vid=" + data.url;
505 | var video = fetch(dataurl, {
506 | headers: {
507 | Referer: jsh
508 | }
509 | }).match(
510 | /"url": "(.*?)"/
511 | )[1];
512 | input = {
513 | parse: 0,
514 | url: video,
515 | js: ''
516 | };
517 | } else if (data.ext == "hls" || data.ext == "hls_list") {
518 | input = {
519 | parse: 0,
520 | url: decodeURIComponent(data.url),
521 | js: ''
522 | };
523 | } else {
524 | input = {
525 | parse: 0,
526 | url: data.url,
527 | js: ''
528 | };
529 | }
530 | }
531 | }
532 | }),
533 | double: false,
534 | 推荐: "*",
535 | 一级: ".video-img-box;h6.title&&Text;.lazyload&&data-src;.label&&Text;a&&href",
536 | 二级: {
537 | title: ".page-title&&Text;.tag-link&&Text",
538 | img: ".module-item-pic&&.lazyload&&src",
539 | 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",
540 | content: ".video-info-content&&Text",
541 | tabs: ".module-tab-item.tab-item",
542 | lists: ".module-player-list:eq(#id) a",
543 | tab_text: "body&&Text",
544 | list_text: "body&&Text",
545 | list_url: "a&&href"
546 | },
547 | detailUrl: "",
548 | 搜索: "*"
549 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/追剧弹幕.js:
--------------------------------------------------------------------------------
1 | globalThis.h_ost = 'http://v.lkuys.cn/';
2 |
3 | globalThis.vodlist = function($t, $pg) {
4 | const currentTimestamp = parseInt(Date.now() / 1000, 10);
5 | const url = h_ost + '/v2/home/type_search';
6 | const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
7 | let html = request(url, {
8 | body: {
9 | sign: hx,
10 | type_id: $t,
11 | page: $pg,
12 | },
13 | headers: {
14 | 'User-Agent': 'okhttp-okgo/jeasonlzy',
15 | 'Content-Type': 'application/x-www-form-urlencoded'
16 | },
17 | 'method': 'POST'
18 | }, true);
19 | return JSON.parse(html).data.list;
20 | }
21 |
22 | globalThis.seach = function(wd) {
23 | const currentTimestamp = parseInt(Date.now() / 1000, 10);
24 | const url = h_ost + '/v2/home/search';
25 | const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
26 | let html = request(url, {
27 | body: {
28 | sign: hx,
29 | keyword: wd,
30 | timestamp: currentTimestamp,
31 | },
32 | headers: {
33 | 'User-Agent': 'okhttp-okgo/jeasonlzy',
34 | 'Content-Type': 'application/x-www-form-urlencoded'
35 | },
36 | 'method': 'POST'
37 | }, true);
38 | return JSON.parse(html).data.list;
39 | }
40 | globalThis.vodids = function(ids) {
41 | const currentTimestamp = parseInt(Date.now() / 1000, 10);
42 | const url = h_ost + '/v2/home/vod_details';
43 | const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString();
44 | let html = request(url, {
45 | body: {
46 | sign: hx,
47 | vod_id: ids,
48 | timestamp: currentTimestamp,
49 | },
50 | headers: {
51 | 'User-Agent': 'okhttp-okgo/jeasonlzy',
52 | 'Content-Type': 'application/x-www-form-urlencoded'
53 | },
54 | 'method': 'POST'
55 | }, true);
56 | const redata = JSON.parse(html);
57 | let vodPlayFrom = '';
58 | let vodPlayUrl = '';
59 | redata.data.vod_play_list.forEach((value, key) => {
60 | if (value.flag.includes("nby") || value.flag.includes("mgtv") || value.flag.includes("qq") || value.flag.includes("qiyi") || value.flag.includes("mgtv")) {
61 | vodPlayFrom += `${value.flag}$$$`;
62 | value.urls.forEach(url => {
63 | vodPlayUrl += `${url.name}$${value.parse_urls[0]}${url.url}~${url.name}#`;
64 | });
65 | vodPlayUrl += '$$$';
66 | }
67 | });
68 | const regeshi = {
69 | vod_id: redata.data.vod_id,
70 | vod_name: redata.data.vod_name,
71 | vod_remarks: `${redata.data.vod_remarks}`,
72 | type_name: redata.data.vod_class,
73 | vod_pic: redata.data.vod_pic,
74 | vod_year: redata.data.vod_year,
75 | vod_area: redata.data.vod_area,
76 | vod_actor: `${redata.data.vod_actor}`,
77 | vod_director: redata.data.vod_director,
78 | vod_content: `${redata.data.vod_content}`,
79 | vod_play_from: vodPlayFrom,
80 | vod_play_url: vodPlayUrl
81 | };
82 | return regeshi;
83 | }
84 | globalThis.jxx = function(input) {
85 | if ("741852963" !== '741852963') {
86 | return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4';
87 | }
88 | const parts = input.split('~');
89 | try {
90 | let response = fetch(parts[0], {
91 | method: 'get',
92 | headers: {
93 | 'User-Agent': 'okhttp/3.14.9',
94 | 'Content-Type': 'application/x-www-form-urlencoded'
95 | }
96 | });
97 |
98 | if (response.includes("成功") || response.includes("success") || response.includes("nby")) {
99 | let bata = JSON.parse(response);
100 | input = {
101 | parse: 0,
102 | url: bata.url,
103 | jx: 0,
104 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
105 | }
106 | } else {
107 | input = {
108 | parse: 0,
109 | url: parts[0].includes('url=') ? parts[0].slice(parts[0].indexOf('url=') + 4) : null,
110 | jx: 1,
111 | danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963'
112 | }
113 | }
114 | } catch {
115 | input = {
116 | parse: 0,
117 | url: '解析失败',
118 | jx: 0,
119 | }
120 | }
121 | return input;
122 | }
123 |
124 | var rule = {
125 | title: '追剧',
126 | host: '',
127 | detailUrl: 'fyid',
128 | searchUrl: '**',
129 | url: 'fyclass',
130 | searchable: 2,
131 | quickSearch: 1,
132 | filterable: 0,
133 | class_name: '电影&电视剧&综艺&动漫',
134 | class_url: '1&2&4&3',
135 | play_parse: true,
136 | lazy: $js.toString(() => {
137 | input = jxx(input);
138 | }),
139 | 推荐: $js.toString(() => {
140 | let bdata = vodlist(0, 1);
141 | console.log(bdata);
142 | bdata.forEach(it => {
143 | d.push({
144 | url: it.vod_id,
145 | title: it.vod_name,
146 | img: it.vod_pic,
147 | desc: it.vod_remarks
148 | });
149 | });
150 | setResult(d);
151 | }),
152 | 一级: $js.toString(() => {
153 | let bdata = vodlist(input, MY_PAGE);
154 | console.log(bdata);
155 | bdata.forEach(it => {
156 | d.push({
157 | url: it.vod_id,
158 | title: it.vod_name,
159 | img: it.vod_pic,
160 | desc: it.vod_remarks
161 | });
162 | });
163 | setResult(d);
164 | }),
165 | 二级: $js.toString(() => {
166 | console.log("调试信息2" + input);
167 | let data = vodids(input);
168 | //console.log(data);
169 | VOD = (data);
170 | }),
171 | 搜索: $js.toString(() => {
172 | let ddata = seach(input);
173 | ddata.forEach(it => {
174 | d.push({
175 | url: it.vod_id,
176 | title: it.vod_name,
177 | img: it.vod_pic,
178 | desc: it.vod_remarks
179 | });
180 | });
181 | setResult(d);
182 | }),
183 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/追剧迷.js:
--------------------------------------------------------------------------------
1 | var rule = {
2 | title: '追剧迷',
3 | 模板: 'vfed',
4 | host: 'https://www.zhuijumi.cc',
5 | // url:'/videotype/fyclass-fypage.html',
6 | url: '/mp4type/fyclass-fypage.html',
7 | searchUrl: '/mp4search/-.html?wd=**',
8 | class_parse: '.fed-part-tips li;a&&Text;a&&href;.*/(.*?).html',
9 | cate_exclude: '更多|申请',
10 | lazy: `js:
11 | var html = JSON.parse(request(input).match(/r player_.*?=(.*?))[1]);
12 | var url = html.url;
13 | if (html.encrypt == '1') {
14 | url = unescape(url)
15 | } else if (html.encrypt == '2') {
16 | url = unescape(base64Decode(url))
17 | }
18 | if (/\\.m3u8|\\.mp4/.test(url)) {
19 | input = {
20 | jx: 0,
21 | url: url,
22 | parse: 0
23 | }
24 | } else {
25 | input
26 | }
27 | `,
28 | 二级: {
29 | "title": "h1&&Text;.fed-col-xs6--span:eq(0)&&Text",
30 | "img": ".fed-list-info&&a&&data-original",
31 | "desc": ".fed-col-xs12.fed-part-eone:eq(3)&&Text;;;.fed-col-xs12.fed-part-eone--span:eq(0)&&Text;.fed-col-xs12.fed-part-eone--span:eq(1)&&Text",
32 | "content": ".fed-conv-text:eq(0)&&Text",
33 | "tabs": "ul.fed-padding&&li",
34 | "lists": ".fed-tabs-btm:eq(#id) li"
35 | },
36 | 搜索: '.fed-list-deta;h1&&Text;.fed-lazy&&data-original;.fed-list-remarks&&Text;a&&href;.fed-col-xs12.fed-part-eone:eq(2)&&Text',
37 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JS/魔力高清.js:
--------------------------------------------------------------------------------
1 | // 网址发布页 https://molicp.com
2 | muban.首图.二级.title = '.text-fff--font&&Text;.data--span:eq(0)&&Text';
3 | muban.首图.二级.desc = '#rating&&Text;;;.data--span:eq(1)&&Text;.data--span:eq(2)&&Text';
4 | muban.首图.二级.content = '.desc&&Text';
5 | var rule = {
6 | title: 'HDmoli',
7 | 模板: '首图',
8 | host: 'https://www.hdmoli.pro',
9 | // url:'/mlist/fyclass-fypage.html',
10 | url: '/search.php?page=fypage&searchtype=5&tid=fyfilter',
11 | filterable: 1, //是否启用分类筛选,
12 | filter_url: '{{fl.cateId}}&jq={{fl.class}}&area={{fl.area}}&year={{fl.year}}&state={{fl.state}}&order={{fl.by}}',
13 | filter: {
14 | "1": [{
15 | "key": "cateId",
16 | "name": "类型",
17 | "value": [{
18 | "n": "全部",
19 | "v": "1"
20 | }, {
21 | "n": "动作",
22 | "v": "5"
23 | }, {
24 | "n": "爱情",
25 | "v": "6"
26 | }, {
27 | "n": "科幻",
28 | "v": "7"
29 | }, {
30 | "n": "恐怖",
31 | "v": "8"
32 | }, {
33 | "n": "战争",
34 | "v": "9"
35 | }, {
36 | "n": "喜剧",
37 | "v": "10"
38 | }, {
39 | "n": "纪录片",
40 | "v": "11"
41 | }, {
42 | "n": "剧情",
43 | "v": "12"
44 | }, {
45 | "n": "犯罪",
46 | "v": "30"
47 | }, {
48 | "n": "动画",
49 | "v": "32"
50 | }]
51 | }, {
52 | "key": "class",
53 | "name": "剧情",
54 | "value": [{
55 | "n": "全部",
56 | "v": ""
57 | }, {
58 | "n": "战争",
59 | "v": "战争"
60 | }, {
61 | "n": "恐怖",
62 | "v": "恐怖"
63 | }, {
64 | "n": "剧情",
65 | "v": "剧情"
66 | }, {
67 | "n": "爱情",
68 | "v": "爱情"
69 | }, {
70 | "n": "家庭",
71 | "v": "家庭"
72 | }, {
73 | "n": "励志",
74 | "v": "励志"
75 | }, {
76 | "n": "悬疑",
77 | "v": "悬疑"
78 | }, {
79 | "n": "动作",
80 | "v": "动作"
81 | }, {
82 | "n": "奇幻",
83 | "v": "奇幻"
84 | }, {
85 | "n": "冒险",
86 | "v": "冒险"
87 | }, {
88 | "n": "历史",
89 | "v": "历史"
90 | }, {
91 | "n": "惊悚",
92 | "v": "惊悚"
93 | }, {
94 | "n": "音乐",
95 | "v": "音乐"
96 | }, {
97 | "n": "科幻",
98 | "v": "科幻"
99 | }, {
100 | "n": "犯罪",
101 | "v": "犯罪"
102 | }, {
103 | "n": "运动",
104 | "v": "运动"
105 | }, {
106 | "n": "喜剧",
107 | "v": "喜剧"
108 | }]
109 | }, {
110 | "key": "area",
111 | "name": "地区",
112 | "value": [{
113 | "n": "全部",
114 | "v": ""
115 | }, {
116 | "n": "美国",
117 | "v": "美国"
118 | }, {
119 | "n": "韩国",
120 | "v": "韩国"
121 | }, {
122 | "n": "英国",
123 | "v": "英国"
124 | }, {
125 | "n": "日本",
126 | "v": "日本"
127 | }, {
128 | "n": "泰国",
129 | "v": "泰国"
130 | }, {
131 | "n": "中国",
132 | "v": "中国"
133 | }, {
134 | "n": "其他",
135 | "v": "其他"
136 | }]
137 | }, {
138 | "key": "year",
139 | "name": "年份",
140 | "value": [{
141 | "n": "全部",
142 | "v": ""
143 | }, {
144 | "n": "2025",
145 | "v": "2025"
146 | }, {
147 | "n": "2024",
148 | "v": "2024"
149 | }, {
150 | "n": "2023",
151 | "v": "2023"
152 | }, {
153 | "n": "2022",
154 | "v": "2022"
155 | }, {
156 | "n": "2021",
157 | "v": "2021"
158 | }, {
159 | "n": "2020",
160 | "v": "2020"
161 | }, {
162 | "n": "2019",
163 | "v": "2019"
164 | }, {
165 | "n": "2018",
166 | "v": "2018"
167 | }, {
168 | "n": "2017",
169 | "v": "2017"
170 | }, {
171 | "n": "2016",
172 | "v": "2016"
173 | }, {
174 | "n": "2015",
175 | "v": "2015"
176 | }, {
177 | "n": "2014",
178 | "v": "2014"
179 | }, {
180 | "n": "2013",
181 | "v": "2013"
182 | }, {
183 | "n": "2012",
184 | "v": "2012"
185 | }, {
186 | "n": "more",
187 | "v": "more"
188 | }]
189 | }, {
190 | "key": "state",
191 | "name": "状态",
192 | "value": [{
193 | "n": "全部",
194 | "v": ""
195 | }, {
196 | "n": "完结",
197 | "v": "w"
198 | }, {
199 | "n": "连载中",
200 | "v": "l"
201 | }]
202 | }, {
203 | "key": "by",
204 | "name": "排序",
205 | "value": [{
206 | "n": "时间",
207 | "v": "time"
208 | }, {
209 | "n": "评分",
210 | "v": "douban"
211 | }]
212 | }],
213 | "2": [{
214 | "key": "cateId",
215 | "name": "类型",
216 | "value": [{
217 | "n": "全部",
218 | "v": "2"
219 | }, {
220 | "n": "美剧",
221 | "v": "15"
222 | }, {
223 | "n": "韩剧",
224 | "v": "16"
225 | }, {
226 | "n": "日剧",
227 | "v": "13"
228 | }, {
229 | "n": "英剧",
230 | "v": "34"
231 | }, {
232 | "n": "中国",
233 | "v": "14"
234 | }, {
235 | "n": "泰剧",
236 | "v": "29"
237 | }, {
238 | "n": "综艺",
239 | "v": "39"
240 | }, {
241 | "n": "其他",
242 | "v": "38"
243 | }]
244 | }, {
245 | "key": "class",
246 | "name": "剧情",
247 | "value": [{
248 | "n": "全部",
249 | "v": ""
250 | }, {
251 | "n": "战争",
252 | "v": "战争"
253 | }, {
254 | "n": "恐怖",
255 | "v": "恐怖"
256 | }, {
257 | "n": "剧情",
258 | "v": "剧情"
259 | }, {
260 | "n": "爱情",
261 | "v": "爱情"
262 | }, {
263 | "n": "家庭",
264 | "v": "家庭"
265 | }, {
266 | "n": "励志",
267 | "v": "励志"
268 | }, {
269 | "n": "悬疑",
270 | "v": "悬疑"
271 | }, {
272 | "n": "动作",
273 | "v": "动作"
274 | }, {
275 | "n": "奇幻",
276 | "v": "奇幻"
277 | }, {
278 | "n": "冒险",
279 | "v": "冒险"
280 | }, {
281 | "n": "历史",
282 | "v": "历史"
283 | }, {
284 | "n": "惊悚",
285 | "v": "惊悚"
286 | }, {
287 | "n": "音乐",
288 | "v": "音乐"
289 | }, {
290 | "n": "科幻",
291 | "v": "科幻"
292 | }, {
293 | "n": "犯罪",
294 | "v": "犯罪"
295 | }, {
296 | "n": "运动",
297 | "v": "运动"
298 | }, {
299 | "n": "喜剧",
300 | "v": "喜剧"
301 | }]
302 | }, {
303 | "key": "area",
304 | "name": "地区",
305 | "value": [{
306 | "n": "全部",
307 | "v": ""
308 | }, {
309 | "n": "美国",
310 | "v": "美国"
311 | }, {
312 | "n": "韩国",
313 | "v": "韩国"
314 | }, {
315 | "n": "英国",
316 | "v": "英国"
317 | }, {
318 | "n": "日本",
319 | "v": "日本"
320 | }, {
321 | "n": "泰国",
322 | "v": "泰国"
323 | }, {
324 | "n": "中国",
325 | "v": "中国"
326 | }, {
327 | "n": "其他",
328 | "v": "其他"
329 | }]
330 | }, {
331 | "key": "year",
332 | "name": "年份",
333 | "value": [{
334 | "n": "全部",
335 | "v": ""
336 | }, {
337 | "n": "2025",
338 | "v": "2025"
339 | }, {
340 | "n": "2024",
341 | "v": "2024"
342 | }, {
343 | "n": "2023",
344 | "v": "2023"
345 | }, {
346 | "n": "2022",
347 | "v": "2022"
348 | }, {
349 | "n": "2021",
350 | "v": "2021"
351 | }, {
352 | "n": "2020",
353 | "v": "2020"
354 | }, {
355 | "n": "2019",
356 | "v": "2019"
357 | }, {
358 | "n": "2018",
359 | "v": "2018"
360 | }, {
361 | "n": "2017",
362 | "v": "2017"
363 | }, {
364 | "n": "2016",
365 | "v": "2016"
366 | }, {
367 | "n": "2015",
368 | "v": "2015"
369 | }, {
370 | "n": "2014",
371 | "v": "2014"
372 | }, {
373 | "n": "2013",
374 | "v": "2013"
375 | }, {
376 | "n": "2012",
377 | "v": "2012"
378 | }, {
379 | "n": "more",
380 | "v": "more"
381 | }]
382 | }, {
383 | "key": "state",
384 | "name": "状态",
385 | "value": [{
386 | "n": "全部",
387 | "v": ""
388 | }, {
389 | "n": "完结",
390 | "v": "w"
391 | }, {
392 | "n": "连载中",
393 | "v": "l"
394 | }]
395 | }, {
396 | "key": "by",
397 | "name": "排序",
398 | "value": [{
399 | "n": "时间",
400 | "v": "time"
401 | }, {
402 | "n": "评分",
403 | "v": "douban"
404 | }]
405 | }],
406 | "41": [{
407 | "key": "cateId",
408 | "name": "类型",
409 | "value": [{
410 | "n": "全部",
411 | "v": "41"
412 | }, {
413 | "n": "日本",
414 | "v": "42"
415 | }, {
416 | "n": "其他",
417 | "v": "43"
418 | }]
419 | }, {
420 | "key": "class",
421 | "name": "剧情",
422 | "value": [{
423 | "n": "全部",
424 | "v": ""
425 | }, {
426 | "n": "战争",
427 | "v": "战争"
428 | }, {
429 | "n": "恐怖",
430 | "v": "恐怖"
431 | }, {
432 | "n": "剧情",
433 | "v": "剧情"
434 | }, {
435 | "n": "爱情",
436 | "v": "爱情"
437 | }, {
438 | "n": "家庭",
439 | "v": "家庭"
440 | }, {
441 | "n": "励志",
442 | "v": "励志"
443 | }, {
444 | "n": "悬疑",
445 | "v": "悬疑"
446 | }, {
447 | "n": "动作",
448 | "v": "动作"
449 | }, {
450 | "n": "奇幻",
451 | "v": "奇幻"
452 | }, {
453 | "n": "冒险",
454 | "v": "冒险"
455 | }, {
456 | "n": "历史",
457 | "v": "历史"
458 | }, {
459 | "n": "惊悚",
460 | "v": "惊悚"
461 | }, {
462 | "n": "音乐",
463 | "v": "音乐"
464 | }, {
465 | "n": "科幻",
466 | "v": "科幻"
467 | }, {
468 | "n": "犯罪",
469 | "v": "犯罪"
470 | }, {
471 | "n": "运动",
472 | "v": "运动"
473 | }, {
474 | "n": "喜剧",
475 | "v": "喜剧"
476 | }]
477 | }, {
478 | "key": "area",
479 | "name": "地区",
480 | "value": [{
481 | "n": "全部",
482 | "v": ""
483 | }, {
484 | "n": "美国",
485 | "v": "美国"
486 | }, {
487 | "n": "韩国",
488 | "v": "韩国"
489 | }, {
490 | "n": "英国",
491 | "v": "英国"
492 | }, {
493 | "n": "日本",
494 | "v": "日本"
495 | }, {
496 | "n": "泰国",
497 | "v": "泰国"
498 | }, {
499 | "n": "中国",
500 | "v": "中国"
501 | }, {
502 | "n": "其他",
503 | "v": "其他"
504 | }]
505 | }, {
506 | "key": "year",
507 | "name": "年份",
508 | "value": [{
509 | "n": "全部",
510 | "v": ""
511 | }, {
512 | "n": "2025",
513 | "v": "2025"
514 | }, {
515 | "n": "2024",
516 | "v": "2024"
517 | }, {
518 | "n": "2023",
519 | "v": "2023"
520 | }, {
521 | "n": "2022",
522 | "v": "2022"
523 | }, {
524 | "n": "2021",
525 | "v": "2021"
526 | }, {
527 | "n": "2020",
528 | "v": "2020"
529 | }, {
530 | "n": "2019",
531 | "v": "2019"
532 | }, {
533 | "n": "2018",
534 | "v": "2018"
535 | }, {
536 | "n": "2017",
537 | "v": "2017"
538 | }, {
539 | "n": "2016",
540 | "v": "2016"
541 | }, {
542 | "n": "2015",
543 | "v": "2015"
544 | }, {
545 | "n": "2014",
546 | "v": "2014"
547 | }, {
548 | "n": "2013",
549 | "v": "2013"
550 | }, {
551 | "n": "2012",
552 | "v": "2012"
553 | }, {
554 | "n": "more",
555 | "v": "more"
556 | }]
557 | }, {
558 | "key": "state",
559 | "name": "状态",
560 | "value": [{
561 | "n": "全部",
562 | "v": ""
563 | }, {
564 | "n": "完结",
565 | "v": "w"
566 | }, {
567 | "n": "连载中",
568 | "v": "l"
569 | }]
570 | }, {
571 | "key": "by",
572 | "name": "排序",
573 | "value": [{
574 | "n": "时间",
575 | "v": "time"
576 | }, {
577 | "n": "评分",
578 | "v": "douban"
579 | }]
580 | }]
581 | },
582 | filter_def: {
583 | 1: {
584 | cateId: '1',
585 | by: 'time'
586 | },
587 | 2: {
588 | cateId: '2',
589 | by: 'time'
590 | },
591 | 41: {
592 | cateId: '41',
593 | by: 'time'
594 | }
595 | },
596 | searchUrl: '/search.php?page=fypage&searchword=**&searchtype=',
597 | class_parse: '.myui-header__menu li;a&&Text;a&&href;.*/index(\\d+).html',
598 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JSON/alist.json:
--------------------------------------------------------------------------------
1 | {
2 | "vodPic": "https://rogsoft.ddnsto.com/softcenter/softcenter/res/icon-alist.png",
3 | "drives": [
4 | {
5 | "name": "小雅",
6 | "server": "http://alist.xiaoya.pro"
7 | },
8 | {
9 | "name": "触光",
10 | "server": "https://pan.ichuguang.com"
11 | },
12 | {
13 | "name": "魔都云",
14 | "server": "https://cdn.modupan.com"
15 | },
16 | {
17 | "name": "七米蓝",
18 | "server": "https://al.chirmyram.com"
19 | }
20 | ]
21 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JSON/webdav.json:
--------------------------------------------------------------------------------
1 | {
2 | "drives": [
3 | {
4 | "name": "七米藍",
5 | "server": "https://al.chirmyram.com/dav",
6 | "user": "alist",
7 | "pass": "alist"
8 | },
9 | {
10 | "name": "影視庫",
11 | "server": "https://esir.eu.org/dav",
12 | "user": "alist",
13 | "pass": "alist"
14 | }
15 | ]
16 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/JSON/采集静态.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "360资源",
4 | "url": "https://360zy.com",
5 | "parse_url": "",
6 | "cate_exclude": "电影|连续剧|综艺|动漫|伦理片|体育|爽文短剧",
7 | "class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N9tAvomhRaFHoqcKpYrUd7VEQtCD6rYGAzee6iYYi/8s0kmZl7h/fPFO+RqKa8SKgdIV7chZ0j6qzZ/ReR+4p7Frc7dYLgCVAwUQ9r4t09M9+AIp/eippY22OtAN7Zkb5l3S+S25D7xiSP6j5yNWLXFGi2UemaWBzxslcTwZ/COKCX5yfETIcZY/i8u9A84akidykWUJr2LOoeoIkR88CHYZyU4y1Qu5TjEijfUjwAmiVaD+/DxNTN2K2E/sOQTWKg8x9dBkDHTE9Hl5EcWdqfenY3ewTDUIl4BCDiYWOjtzFTy9MB/NGBuBy5ZyKe7uqDTba0a/F9gURYSXPdWI1Z0FGzw456GSkW0sT0aiDx6rPTtFGP6O2kbvimEhdHu0SKESl/VPAhcKzKgJTwKOc+a7+rDarteHJQyZYl5sk/IOiszA8CAAA=",
8 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&45&46&47&48&49&50&51&52&53"
9 | },
10 | {
11 | "name": "豪华资源",
12 | "url": "https://hhzyapi.com",
13 | "parse_url": "",
14 | "cate_exclude": "电视剧|电影|综艺|动漫|短剧|伦理片",
15 | "class_name": "H4sIALGjdWYC/zVPWw6CMBC8Tc/pI6D1w0eCKErCj1ofKBBjokg5DbsLt7Bdy1dnZrezMxS8WuWDVIKCF+hCYKqonluhO0X4zhglF/vg5sjskuIzt6ipTrT0SU4EzM6Nji2iaYFjj7UwNkusqRV8vhbhcImDkKdSuT2cbptSWtQ+ctBr54fVTYDvQcynjEABWzTvO+y1WzCRME578o/+J/StWlkKWOT4qdnhoLrId7L5Z0r1xLRc5D1hE0doWHe7mkOOUgpXXGaWkb5yyOPE1aLkbk78ALNMUSlMAQAA",
16 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&30&31&32&33&34&35&36&37&38"
17 | },
18 | {
19 | "name": "速播资源",
20 | "url": "https://subocaiji.com",
21 | "parse_url": "",
22 | "cate_exclude": "电影|电视剧|动漫|综艺|短剧|伦理片",
23 | "class_name": "H4sIALGjdWYC/zWPWw6CMBBFd9N1+ohKNVGMiBpI+FHrAyJISHiV1bQzsAuZgl/39LY9k0En0zJh6GStWGoumF4/oH4zrOqWlwzLl5ZH5CvqlfSJ0EpgvjAk9rqoiMA6q5Kbd1yMtzC1YeKazvX7erT0dhyG6qvoLsPQXQxFQ9QFTwpsthSQf6BJDZ1uJtKYQtV3tJckVPLQzr5t5qlyw1QeaU+OG/Q/wA//h1CQctwtiHrJD0Ycn8r6AAAA",
24 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27"
25 | },
26 | {
27 | "name": "红牛资源",
28 | "url": "https://www.hongniuzy2.com",
29 | "parse_url": "",
30 | "cate_exclude": "电影|连续剧|综艺|动漫|纪录片|伦理片|体育赛事|短剧",
31 | "class_name": "H4sIALGjdWYC/y2PXQ6CMBCEb9Nz+hOVaqIYFU0g8qRV1AgSEikUL9Pu1lvorj7Nl5nNZBbXlTOF8K89NjcnlcCm9VILNz1BeyGxJkE5ES5KvjERBgUMR0xq6eqGCPoh9CK+k+qfQrCzWrIXG6sVtcPzDl3JtD2wXBV2cyK3yKHu2Ctzknd65kE6c2bDNbwJf4tte8RwTLY1Kz94+Cq2eiYwpS8+mOVyptYAAAA=",
32 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&29&30"
33 | },
34 | {
35 | "name": "新浪资源",
36 | "url": "https://api.xinlangapi.com",
37 | "parse_url": "",
38 | "api": "/xinlangapi.php/provide/vod/from/xlm3u8/",
39 | "cate_exclude": "电影|电视剧|动漫|综艺|纪录片|伦理片|体育|短剧",
40 | "class_name": "H4sIALGjdWYC/0WOXQ6CMBCEb9Nz+hOR+qAYETUh4UWtikaQkEihPU27W24hXU18msk3m53BuLaqZBjXTgSWC2YXF+hyhm3nuGQob1Ztkc89Nyr1DsMSpjNyYm2b1jsI90ZyuuPil8I4glFCLEkHTO4o+gP1wPsJuqLGVQGNJnYXqJf/Ffgd12dXSncnkqrwYrozRoH/adTGTV4Ms8fAP2ziC/TQAAAA",
41 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24"
42 | },
43 | {
44 | "name": "黑木耳资源",
45 | "url": "https://www.heimuer.tv",
46 | "parse_url": "",
47 | "cate_exclude": "^电影$|^电视剧$|^综艺$|^动漫$|^短剧$",
48 | "class_name": "H4sIALGjdWYC/0WSbXKCQAyGb8M5UQcRqgU7DFal2mllKBa/pqNjQexl2M1yi7LZpP2175PNJnkDEJ1FfbIgOqtsKLzMEv6HvH1aUN2UV1pdRA4c8Fwdb+oE1fCpneeowrG0M1Rx0qWiSl3xXWkle6G0Y4wt66bMdHV5PeijXedIsxSPfgHxFJ8MfNlfaAW9e7u4oxqdaATwD1BvUWVTatKNBVEF5GK9w3pfR3QS4CGLDO6PqOJjmxd45VyaKsbYbqxGK+w9em5KD6tXgXCuqOopVAlV7x6J/eDfD61IWwqOBNrYsuabWSqTggHHYMBJujl5zTgPQ7BR7w55UfNQ9h4IWnuo3nbs0mzNAKQrddpymjuBaE0gNpOmcjkt/1EXnyFKxP6V026lsv+ahmOxf+EbY5uammWaf8T4IzDOCeiDUxouiIGdcyZWN/ALQpTFCIwCAAA=",
49 | "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63"
50 | },
51 | {
52 | "name": "暴风资源",
53 | "url": "https://bfzyapi.com",
54 | "parse_url": "",
55 | "cate_exclude": "电影片|连续剧|综艺片|动漫片|伦理片|电影解说|体育|演员|新闻资讯",
56 | "class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N1+kIFj1VOLdbq0Z6iBq0VrI8qGN1MMhN20WSAP8x34c7NZMDRWYkDuh2mvEiKGVEwUy63BPUh1AJLyH11y4i6B2g65HN5SdB9l6lLX9OtEm9Ew7bep5b0c47Zj3EzNRUy5ZZgx/HxYilfT+AaEy02xkC+QQK3B/nGK5jtiM5/ahkQHZPK50Vw/6ZZimTStslmlaI4qRTmpEFSiSKxEJjdtUvjqiXPJ+1Clw2VoNxKUG4pTAiOivXQQjUPdXxi+VdL+Z59LcWrbvzq81SmPaYvRxw2GcZ7KsK3BYJYx6lyegwXdllmDOVELO/0cbSAxDc3ZLh56ounbieZhQxfElN0VDM/wWysr8UOuwICc4PVEeo9qGU6rLN8vFWbD1xn5snyplDXhm75cJqbnqUOHZlN5OPzH964N6gIAgAA",
57 | "class_url": "20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&65&66&67&68&69&70&71&72"
58 | },
59 | {
60 | "name": "量子资源",
61 | "url": "https://cj.lziapi.com",
62 | "parse_url": "",
63 | "cate_exclude": "电影片|连续剧|动漫片|综艺片|伦理片|电影解说|体育|演员|新闻资讯",
64 | "class_name": "H4sIALGjdWYC/zWR607DMAyF3ybPCbuxDom1Yms3UTEJtmWI0bSMAr1kvEzspG9B46S/8h3b8XEcvSpBFjq4Y+bvWTcfEHCmm9YEtY3B4oTtuyclU6I47Yss6XmB4ykRj6BqLOFtiDcx1QXcZ3G+UXVAsSepam49uuMWfwXR7q0PW8Iz19cHSybLQa7pxjLH6krZ5IDpmaj8gX1MdMn9XdjzbjtzkzPbeZkPIjn0FoMgCy/8NPRGXzYIN4kX1G0QztsJ1R51OKMF0BoNfzXiiyn5aEafzHxfdDhmWmR0yMgeGAsjapjeM2xXEG36QN4ljSknJhNDGyfgVKgqdHnWvUwgWpDVzn7SP/ilxw64AQAA",
65 | "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46"
66 | },
67 | {
68 | "name": "非凡资源",
69 | "url": "http://cj.ffzyapi.com",
70 | "parse_url": "",
71 | "cate_exclude": "电影片|连续剧|动漫片|综艺片|伦理片",
72 | "class_name": "H4sIAFhXhmYC/zWQWw6CMBBFd8M6NUakfggmChKJ/ADViFpiiPIobqadwi6kQ/k7d153ZtShlLxQZGP1v4tqHpJQSzVtT2odk9srtHdDgkdIfjQWaVJOAas1Et3LqtEESw8WPtYRarLgnERNMHbmoqbaY8hC+L6Q4tsY1gQ5Vd1OU/9kkh+xw2VQdZgNUohypPIjEx/pzUyvTOgQ2tPmlp7sslkE6WgxC7QwwmyDN5qyWUybGIHTZjF5T0K0mfJsfECsP/cHYziM500BAAA=",
73 | "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&36"
74 | },
75 | {
76 | "name": "索尼资源",
77 | "url": "https://suoniapi.com",
78 | "parse_url": "",
79 | "cate_exclude": "电影|电视剧|综艺|动漫|体育赛事|预告片|影视解说|爽文短剧|伦理|港台三级|两性课堂|写真热舞",
80 | "class_name": "H4sIAFlXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=",
81 | "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70"
82 | },
83 | {
84 | "name": "快车资源",
85 | "url": "https://caiji.kczyapi.com",
86 | "parse_url": "",
87 | "cate_exclude": "电影|电视剧|综艺|动漫|预告片|伦理|影视解说|体育赛事|港台三级|两性课堂|写真热舞",
88 | "class_name": "H4sIAFZXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=",
89 | "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70"
90 | },
91 | {
92 | "name": "️极速资源",
93 | "url": "https://jszyapi.com",
94 | "parse_url": "",
95 | "cate_exclude": "电视剧|电影|动漫|综艺|短剧|伦理片",
96 | "api": "/api.php/provide/vod/at/json/",
97 | "class_name": "H4sIAGJXhmYC/zVP0W7CMBD7m3znYKIQkICKUsaoxMsgsBUooEpQmn5N7i79iyVH+hTbsXw2JaVVEUglKClBXwXmipqpF9r9Gh8XRtujf3C1Y3bM8V54ZOo9zSOSQwHjg9GZRzS64ueAtTRzJtZUDM+XR9ib40fKv1IFH46+TCU9sucC9DLkYf0nIBpAxqecQAlHmMcJNjoYXCXM8o68q78JvWorKwGzAp8Nl9UL27/ZcmOqiYAf1a6j4HEhbmFH3ORZ0RFODIR6TfvdcON+TmnMy8YX0r/ceDcMG2l7cvf+AYiMpdZZAQAA",
98 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38"
99 | },
100 | {
101 | "name": "光速资源",
102 | "url": "https://api.guangsuapi.com",
103 | "parse_url": "",
104 | "cate_exclude": "电影|电视剧|综艺|动漫|记录片|伦理片|体育赛事|短剧",
105 | "class_name": "H4sIAFVXhmYC/y2Oaw6CMBCEb9Nz+ohINVGMiBpJ+KNW4gskJPJoT9PulltIF3/Nl5nJ7GJYGpkzDEsrPMMFw6a1vGZmcYP27kTLGPmcmSjuY0fo5zCdEYmNqRpKufh7MA5gFBH5B11zSs+iO9I6PASqFdH3Dapw1CWpk+EiDv/A/kLeOoNKUb3InNhXZuTOber2ioFHJLd28rHlSddLhsmz7/0A4RcQUdYAAAA=",
106 | "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&30&31"
107 | },
108 | {
109 | "name": "卧龙资源",
110 | "url": "https://collect.wolongzy.cc",
111 | "parse_url": "",
112 | "cate_exclude": "电影片|连续剧|综艺片|动漫片|伦理片|电影解说|体育|短剧",
113 | "class_name": "H4sIAFZXhmYC/1WR0VLCQAxF/6bfqXQsbB9omYEq2JEHKqtQ2iIC0nbxZ5pk+Qt303VG307uZnJvsjQ9gtqTGHr6+4WaHQjpUdNqUVsNwjdst446lTIlqWmyRKM9+g9McgKXxhLex3iXcJ+Q7hVHT10tWHtWXS2tx209x6+SafluZEuYS7qOLUFU4eXK2uMrpjnT8QxZYkkXFagZ+y53LhxNmz8GHPt3niv6Qa4w1lHV7+kCuAIyeZsHrsBD9S+ak4lvpuVKl58e+iEOFuxdnKDu80SZXvHqMA4g+uAjDHJKJhw6LEltmMqCYt/r2jXFAf/B6WAFs5Yx/QEG4wmPmwEAAA==",
114 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&22&23&24&25&26&27&30&31&32&33&37&38&39&42&43&44&45&46&48&49&51&54"
115 | },
116 | {
117 | "name": "天空资源",
118 | "url": "https://m3u8.tiankongapi.com",
119 | "parse_url": "",
120 | "cate_exclude": "电影|连续剧|动漫|综艺|伦理片|电影解说|体育赛事|短剧",
121 | "api": "/api.php/provide/vod/from/tkm3u8/",
122 | "class_name": "H4sIAFdXhmYC/zVQW3LCMAy8jc/JYygknSllCqGUTPkoYAphEqCB4uD0Mrbk3KK2Yn95V9autMJpqeWJodhrOcNoyMzfJ1ZHHXEGGcf6xaFmu4Df3CEd75RMXR+OTtAfEOITfa8cgu4rdBKHbK//hdG7EhHVktSWCcU7nJIC4xzlnmpLqQSnaatvS/w0eBwYVg8TCabXvFk8eeL2GReBzDdWFAitHTTjAu41ebX+raMVQJoF0ub0pLzpdRLIpfCbWIF7kK5l+JfJf5jeDH1u7NbNR01pexkmE8ozuKqKbqHkm+mdTblU4pnhyt32H73g+qZ2AQAA",
123 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&44"
124 | },
125 | {
126 | "name": "百度云资源",
127 | "url": "https://api.apibdzy.com",
128 | "parse_url": "",
129 | "cate_exclude": "电影|电视剧|综艺|动漫|伦理片|纪录片|体育赛事|资讯",
130 | "class_name": "H4sIAFdXhmYC/zVP7W7CMAx8mzzn1vGVTgKqla4TSEgTLMAQLaBMkDZ9msRO32KNm/67O9t3Z0yl1VeGqXRiYrlgWNWOK2bjA9S/zNQ/uJwgn3rB6A2hbNMteoSzK7yNCYnEPiuP4HUJLxntcRGmMMuN4qTtRPtFOfAooLl71G6PJHzuKV+drF6RZ1ygPoVsTCvsq9pFCc+GLs4Cm7lHdvxnqoy0e0kC5YRfOucuYyCPonMYCDkML6+1USI83t8MpA8KJDpjlvhabSShXIRaRn+46Obk2qh35uTIXQrWjwKBfA75NpD2e2ST+B8HkFGOfQEAAA==",
131 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&36&37&38&39"
132 | },
133 | {
134 | "name": "无尽资源",
135 | "url": "https://api.wujinapi.me",
136 | "parse_url": "",
137 | "cate_exclude": "电影|连续剧|综艺|动漫|伦理片|体育赛事|影视解说|短剧|预告片|资讯|公告|头条|港台三级|韩国伦理|西方伦理|日本伦理|两性课堂|写真热舞",
138 | "class_name": "H4sIAFhXhmYC/zVRWVbCQBC8zZxTwxp8CnliFI2AEhzUaIIQhSxwmeklt3Ayk/xVdVe/7qqmaQrlVvB5TvkXuFJQXrCbCRhtsPgUnHb5O66ZKgNyBwL8QKtqRMMtdnoGSQ+OeY3wcoIXvtG5suni8EFlrqk9lSqT9ZLqbYaHuEYwTvB4MotPN1pgar0IvJGAcI/PL0IVbzTpmz3ZB5R3NaoW740W79cYRAalfxD6Zj6U1azfGNECrW6JXjpOWhJJvbP1a2+zru1MS4ysJU5EvmfMjDY0NaZpFFP5YWrrQRNE5aSYjMmGi7ukPkuVt+z8cPqksitB8TdNOkK3WfZZrjjeC1qYD9gj24XWVUOKKUy3qngU/Lurx6vXrk7KpGyG1MGlTDbx2OAEr8/oHxti42qIOoR4ITk+wdIR0J9RsKDOFw/nAgMXVu0JsN5Vrx5eXumP639dcxnR0ITPXQ/3c5uJgONe5St6P/Ov/t045FVP5TN1Wgq6SXSn6pRwcP4BxMt0fHACAAA=",
139 | "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&59"
140 | }
141 | ]
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/PY/猎手影视.py:
--------------------------------------------------------------------------------
1 | # coding=utf-8
2 | # !/usr/bin/python
3 | # by嗷呜(finally)
4 | import sys
5 | import os
6 | sys.path.append("..")
7 | import re
8 | import hashlib
9 | import hmac
10 | import random
11 | import string
12 | from Crypto.Util.Padding import unpad
13 | from concurrent.futures import ThreadPoolExecutor
14 | from Crypto.PublicKey import RSA
15 | from Crypto.Cipher import PKCS1_v1_5, AES
16 | from base64 import b64encode, b64decode
17 | import json
18 | import time
19 | from base.spider import Spider
20 |
21 | class Spider(Spider):
22 |
23 | def getName(self):
24 | return "电影猎手"
25 |
26 | def init(self, extend=""):
27 | self.device = self.device_id()
28 | self.host = self.gethost()
29 | pass
30 |
31 | def isVideoFormat(self, url):
32 | pass
33 |
34 | def manualVideoCheck(self):
35 | pass
36 |
37 | def action(self, action):
38 | pass
39 |
40 | def destroy(self):
41 | pass
42 |
43 | t = str(int(time.time()))
44 |
45 | def homeContent(self, filter):
46 | result = {}
47 | filters = {}
48 | classes = []
49 | bba = self.url()
50 | data = self.fetch(f"{self.host}/api/v1/app/config?pack={bba[0]}&signature={bba[1]}", headers=self.header()).text
51 | data1 = self.aes(data)
52 | dy = {"class":"类型","area":"地区","lang":"语言","year":"年份","letter":"字母","by":"排序","sort":"排序"}
53 | data1['data']['movie_screen']['sort'].pop(0)
54 | for item in data1['data']['movie_screen']['sort']:
55 | item['n'] = item.pop('name')
56 | item['v'] = item.pop('value')
57 | for item in data1['data']['movie_screen']['filter']:
58 | has_non_empty_field = False
59 | classes.append({"type_name": item["name"], "type_id": str(item["id"])})
60 | for key in dy:
61 | if key in item and item[key]:
62 | has_non_empty_field = True
63 | break
64 | if has_non_empty_field:
65 | filters[str(item["id"])] = []
66 | filters[str(item["id"])].append(
67 | {"key": 'sort', "name": '排序', "value": data1['data']['movie_screen']['sort']})
68 | for dkey in item:
69 | if dkey in dy and item[dkey]:
70 | item[dkey].pop(0)
71 | value_array = [
72 | {"n": value.strip(), "v": value.strip()}
73 | for value in item[dkey]
74 | if value.strip() != ""
75 | ]
76 | filters[str(item["id"])].append(
77 | {"key": dkey, "name": dy[dkey], "value": value_array}
78 | )
79 | result["class"] = classes
80 | result["filters"] = filters
81 | return result
82 |
83 | def homeVideoContent(self):
84 | bba = self.url()
85 | url = f'{self.host}/api/v1/movie/index_recommend?pack={bba[0]}&signature={bba[1]}'
86 | data = self.fetch(url, headers=self.header()).json()
87 | videos = []
88 | for item in data['data']:
89 | if len(item['list']) > 0:
90 | for it in item['list']:
91 | try:
92 | videos.append(self.voides(it))
93 | except Exception as e:
94 | continue
95 | result = {"list": videos}
96 | return result
97 |
98 | def categoryContent(self, tid, pg, filter, extend):
99 | body = {"type_id": tid, "sort": extend.get("sort", "by_default"), "class": extend.get("class", "类型"),
100 | "area": extend.get("area", "地区"), "year": extend.get("year", "年份"), "page": str(pg),
101 | "pageSize": "21"}
102 | result = {}
103 | list = []
104 | bba = self.url(body)
105 | url = f"{self.host}/api/v1/movie/screen/list?pack={bba[0]}&signature={bba[1]}"
106 | data = self.fetch(url, headers=self.header()).json()['data']['list']
107 | for item in data:
108 | list.append(self.voides(item))
109 | result["list"] = list
110 | result["page"] = pg
111 | result["pagecount"] = 9999
112 | result["limit"] = 90
113 | result["total"] = 999999
114 | return result
115 |
116 | def detailContent(self, ids):
117 | body = {"id": ids[0]}
118 | bba = self.url(body)
119 | url = f'{self.host}/api/v1/movie/detail?pack={bba[0]}&signature={bba[1]}'
120 | data = self.fetch(url, headers=self.header()).json()['data']
121 | video = {'vod_name': data.get('name'),'type_name': data.get('type_name'),'vod_year': data.get('year'),'vod_area': data.get('area'),'vod_remarks': data.get('dynami'),'vod_content': data.get('content')}
122 | play = []
123 | names = []
124 | tasks = []
125 | for itt in data["play_from"]:
126 | name = itt["name"]
127 | a = []
128 | if len(itt["list"]) > 0:
129 | names.append(name)
130 | play.append(self.playeach(itt['list']))
131 | else:
132 | tasks.append({"movie_id": ids[0], "from_code": itt["code"]})
133 | names.append(name)
134 | if tasks:
135 | with ThreadPoolExecutor(max_workers=len(tasks)) as executor:
136 | results = executor.map(self.playlist, tasks)
137 | for result in results:
138 | if result:
139 | play.append(result)
140 | else:
141 | play.append("")
142 | video["vod_play_from"] = "$$$".join(names)
143 | video["vod_play_url"] = "$$$".join(play)
144 | result = {"list": [video]}
145 | return result
146 |
147 | def searchContent(self, key, quick, pg=1):
148 | body = {"keyword": key, "sort": "", "type_id": "0", "page": str(pg), "pageSize": "10",
149 | "res_type": "by_movie_name"}
150 | bba = self.url(body)
151 | url = f"{self.host}/api/v1/movie/search?pack={bba[0]}&signature={bba[1]}"
152 | data = self.fetch(url, headers=self.header()).json()['data'].get('list')
153 | videos = []
154 | for it in data:
155 | try:
156 | videos.append(self.voides(it))
157 | except Exception as e:
158 | continue
159 | result = {"list": videos, "page": pg}
160 | return result
161 |
162 | def playerContent(self, flag, id, vipFlags):
163 | url = id
164 | if "m3u8" not in url and "mp4" not in url:
165 | try:
166 | add = id.split('|||')
167 | data = {"from_code": add[0], "play_url": add[1], "episode_id": add[2], "type": "play"}
168 | bba = self.url(data)
169 | data2 = self.fetch(f"{self.host}/api/v1/movie_addr/parse_url?pack={bba[0]}&signature={bba[1]}",
170 | headers=self.header()).json()['data']
171 | url = data2.get('play_url') or data2.get('download_url')
172 | try:
173 | url1 = self.fetch(url, headers=self.header(), allow_redirects=False).headers['Location']
174 | if url1 and "http" in url1:
175 | url = url1
176 | except:
177 | pass
178 | except Exception as e:
179 | pass
180 | if '.jpg' in url or '.jpeg' in url or '.png' in url:
181 | url = self.getProxyUrl() + "&url=" + b64encode(url.encode('utf-8')).decode('utf-8') + "&type=m3u8"
182 | result = {}
183 | result["parse"] = 0
184 | result["url"] = url
185 | result["header"] = {'user-agent': 'okhttp/4.9.2'}
186 | return result
187 |
188 | def localProxy(self, param):
189 | url = b64decode(param["url"]).decode('utf-8')
190 | durl = url[:url.rfind('/')]
191 | data = self.fetch(url, headers=self.header()).content.decode("utf-8")
192 | lines = data.strip().split('\n')
193 | for index, string in enumerate(lines):
194 | # if 'URI="' in string and 'http' not in string:
195 | # lines[index] = index
196 | # 暂时预留,貌似用不到
197 | if '#EXT' not in string and 'http' not in string:
198 | lines[index] = durl + ('' if string.startswith('/') else '/') + string
199 | data = '\n'.join(lines)
200 | return [200, "application/vnd.apple.mpegur", data]
201 |
202 | def device_id(self):
203 | characters = string.ascii_lowercase + string.digits
204 | random_string = ''.join(random.choices(characters, k=32))
205 | return random_string
206 |
207 | def gethost(self):
208 | headers = {
209 | 'User-Agent': 'okhttp/4.9.2',
210 | 'Connection': 'Keep-Alive',
211 | }
212 | response = self.fetch('https://app-site.ecoliving168.com/domain_v5.json', headers=headers).json()
213 | url = response['api_service'].replace('/api/', '')
214 | return url
215 |
216 | def header(self):
217 | headers = {
218 | 'User-Agent': 'Android',
219 | 'Accept': 'application/prs.55App.v2+json',
220 | 'timestamp': self.t,
221 | 'x-client-setting': '{"pure-mode":1}',
222 | 'x-client-uuid': '{"device_id":' + self.device + '}, "type":1,"brand":"Redmi", "model":"M2012K10C", "system_version":30, "sdk_version":"3.1.0.7"}',
223 | 'x-client-version': '3096 '
224 | }
225 | return headers
226 |
227 | def url(self, id=None):
228 | if not id:
229 | id = {}
230 | id["timestamp"] = self.t
231 | public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02F/kPg5A2NX4qZ5JSns+bjhVMCC6JbTiTKpbgNgiXU+Kkorg6Dj76gS68gB8llhbUKCXjIdygnHPrxVHWfzmzisq9P9awmXBkCk74Skglx2LKHa/mNz9ivg6YzQ5pQFUEWS0DfomGBXVtqvBlOXMCRxp69oWaMsnfjnBV+0J7vHbXzUIkqBLdXSNfM9Ag5qdRDrJC3CqB65EJ3ARWVzZTTcXSdMW9i3qzEZPawPNPe5yPYbMZIoXLcrqvEZnRK1oak67/ihf7iwPJqdc+68ZYEmmdqwunOvRdjq89fQMVelmqcRD9RYe08v+xDxG9Co9z7hcXGTsUquMxkh29uNawIDAQAB'
232 | encrypted_text = json.dumps(id)
233 | public_key = RSA.import_key(b64decode(public_key))
234 | cipher = PKCS1_v1_5.new(public_key)
235 | encrypted_message = cipher.encrypt(encrypted_text.encode('utf-8'))
236 | encrypted_message_base64 = b64encode(encrypted_message).decode('utf-8')
237 | result = encrypted_message_base64.replace('+', '-').replace('/', '_').replace('=', '')
238 | key = '635a580fcb5dc6e60caa39c31a7bde48'
239 | sign = hmac.new(key.encode(), result.encode(), hashlib.md5).hexdigest()
240 | return result, sign
241 |
242 | def playlist(self, body):
243 | try:
244 | bba = self.url(body)
245 | url = f'{self.host}/api/v1/movie_addr/list?pack={bba[0]}&signature={bba[1]}'
246 | data = self.fetch(url, headers=self.header()).json()['data']
247 | return self.playeach(data)
248 | except Exception:
249 | return []
250 |
251 | def playeach(self,data):
252 | play_urls = []
253 | for it in data:
254 | if re.search(r"mp4|m3u8", it["play_url"]):
255 | play_urls.append(f"{it['episode_name']}${it['play_url']}")
256 | else:
257 | play_urls.append(
258 | f"{it['episode_name']}${it['from_code']}|||{it['play_url']}|||{it['episode_id']}"
259 | )
260 | return '#'.join(play_urls)
261 |
262 | def voides(self, item):
263 | if item['name'] or item['title']:
264 | voide = {
265 | "vod_id": item.get('id') or item.get('click'),
266 | 'vod_name': item.get('name') or item.get('title'),
267 | 'vod_pic': item.get('cover') or item.get('image'),
268 | 'vod_year': item.get('year') or item.get('label'),
269 | 'vod_remarks': item.get('dynamic') or item.get('sub_title')
270 | }
271 | return voide
272 |
273 | def aes(self, text):
274 | text = text.replace('-', '+').replace('_', '/') + '=='
275 | key = b"e6d5de5fcc51f53d"
276 | iv = b"2f13eef7dfc6c613"
277 | cipher = AES.new(key, AES.MODE_CBC, iv)
278 | pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size).decode("utf-8")
279 | return json.loads(pt)
280 |
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/修罗影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "站名": "修罗影视",
3 | "请求头": "User-Agent@Mozilla/5.0 (Linux;; Android 12;; PEHM00 Build/SKQ1.210216.001;; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.108 Mobile Safari/537.36",
4 | "编码": "UTF-8",
5 | "图片代理": "0",
6 | "直接播放": "0",
7 | "主页url": "http://v.xlys.ltd.ua",
8 | "分类url": "http://v.xlys.ltd.ua/s/{cateId}/{catePg}",
9 | "分类": "动作$dongzuo#爱情$aiqing#喜剧$xiju#科幻$kehuan#恐怖$kongbu#战争$zhanzheng#武侠$wuxia#魔幻$mohuan#剧情$juqing#动画$donghua#惊悚$jingsong#灾难$zainan#悬疑$xuanyi#警匪$jingfei#文艺$wenyi#青春$qingchun#冒险$maoxian#犯罪$fanzui#纪录$jilu#古装$guzhuang#奇幻$qihuan#国语$guoyu#综艺$zongyi#历史$lishi#运动$yundong#原创压制$yuanchuang#美剧$meiju#韩剧$hanju#国产电视剧$guoju#日剧$riju#英剧$yingju#德剧$deju#俄剧$eju#巴剧$baju#加剧$jiaju#西剧$spanish#意大利剧$yidaliju#泰剧$taiju#港台剧$gangtaiju#法剧$faju#澳剧$aoju",
10 | "数组": "card-link&&/h3>",
11 | "标题": "&&<",
12 | "图片": "src=\"&&\"",
13 | "副标题": "red-fg\">&&<",
14 | "链接": "href=\"&&\"",
15 | "影片年代": "上映日期:&&
",
16 | "影片地区": "地区:&&",
17 | "影片类型": "类型:&&",
18 | "状态": "豆瓣 :&&",
19 | "导演": "导演:&&",
20 | "主演": "主演:&&",
22 | "线路数组": "download-list\">&&",
23 | "线路标题": "磁力",
24 | "播放二次截取": "",
25 | "播放数组": "&& | ",
26 | "倒序": "0",
27 | "播放列表": "",
28 | "播放标题": ">&&<",
29 | "播放链接": "",
30 | "解析": "",
31 | "跳转播放链接": "",
32 | "跳转解析": "",
33 | "搜索请求头": "User-Agent$MOBILE_UA",
34 | "搜索url": "http://v.xlys.ltd.ua/search/{wd}/{pg}"
35 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/农民影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "请求头": "手机",
3 | "编码": "UTF-8",
4 | "简介": "简 介:&&",
5 | "线路数组": "javascript:;\">&&",
6 | "数组": "&&",
7 | "图片": "data-echo=\"&&\"",
8 | "分类url": "https://www.wwgz.cn/vod-list-id-{cateId}-pg-{catePg}-order--by-time-class-0-year-{year}-letter--area-{area}-lang-.html",
9 | "分类": "短剧$26#电视剧$2#电影$1#动漫$4#综艺$3"
10 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/可可影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "简介": "detail-content\" style=*>&&",
3 | "数组": "stui-vodlist__box\">&&",
4 | "副标题": "pic-text text-right\">&&",
5 | "播放列表": "",
6 | "分类url": "https://www.kmxibanyayu.com/vs/{cateId}-{area}--{class}-----{catePg}---{year}.html",
7 | "分类": "短剧$duanju#电视剧$dianshiju#电影$dianying#动漫$dongman#综艺$zongyi"
8 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/吉吉短剧.json:
--------------------------------------------------------------------------------
1 | {
2 | "分类": "短剧$1#电视剧$2",
3 | "分类url": "https://www.jjduanju.com/sort/{cateId}/page/{catePg}.html"
4 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/哆啦新番社.json:
--------------------------------------------------------------------------------
1 | {
2 | "请求头": "User-Agent$MOBILE_UA",
3 | "编码": "UTF-8",
4 | "主页url": "https://dora.xiaoxinbk.com/",
5 | "数组": "class=\"card-img-bili\"&&",
6 | "标题": "alt=\"&&\"",
7 | "图片": "data-url=\"&&\"",
8 | "链接": "href=\"&&\"",
9 | "线路标题": "mt-0\">&&",
10 | "播放数组": "class=\"card-body button-list\"&&",
11 | "播放列表": "",
12 | "播放链接": "href=\"&&\"",
13 | "播放标题": ">&&",
14 | "分类url": "https://www.dora-video.cn/search/sy/?niandai={year}&cat={class}&tag={cateId}&gaojijiansuo=1&zhuangtai={by}",
15 | "分类": "全部$0#动画$20#剧场版$21#MV$22#预告片$23#直播$27#同人$25#民间$26#目录$28#中篇$30",
16 | "剧情": "哆啦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",
17 | "排序": "全部$0#完结$2#连载$1#待定$-1"
18 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/布谷TV.json:
--------------------------------------------------------------------------------
1 | {
2 | "主页url": "https://www.bugutv.org/",
3 | "搜索url": "https://www.bugutv.org/?cat=&s={wd}",
4 | "搜索数组": "content-area\">&&",
5 | "简介": "◎简*介&&",
6 | "导演": "◎导*演&&
",
7 | "主演": "◎主*演&&
",
8 | "影片年代": "◎上映 日期&&
",
9 | "影片地区": "◎产*地&&
",
10 | "线路数组": "entry-content u-text-format u-clearfix&&\"content-template",
11 | "线路标题": "磁力",
12 | "播放数组": "entry-content u-text-format u-clearfix&&\"content-template",
13 | "播放列表": "&&
[包含:magnet]",
14 | "播放链接": "*\">&&",
15 | "分类": "4K蓝光原盘$4kuhd#4K电影$4kmovie#4K剧集$4ktv#杜比视界$dolbyvision#4K纪录片$4kdocu#4K演示片$4kdemo/4ktv-4ktv#杜比演示片$4kdemo/dolbydomo#DTS演示片$4kdemo/dtsdomo#8K演示片$4kdemo/8kdemo#蓝光电影$bluraymovie/bluray-movie#蓝光剧集$bluraymovie/bluraytv#3D蓝光$bluraymovie/3dmovie#蓝光纪录片$bluraymovie/documentary#蓝光演唱会$bluraymovie/audiotest",
16 | "分类url": "https://www.bugutv.org/{cateId}/page/{catePg}"
17 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/樱花影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "线路标题": "&&
",
3 | "分类url": "https://yinghuadm.fun/vodshow/{cateId}-{area}--{class}-----{catePg}---{year}.html",
4 | "分类": "电影$1#剧集$2#综艺$3#动漫$4"
5 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/永乐影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "请求头": "User-Agent$MOBILE_UA",
3 | "编码": "UTF-8",
4 | "分类": "电影$1#电视剧$2#综艺$3#动漫$4",
5 | "类型": "动作片$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",
6 | "分类url": "https://www.ylys.tv/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html"
7 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/流光影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "首页": "0",
3 | "播放链接前缀": "https://www.gyf.lol",
4 | "数组": "public-list-box&&",
5 | "图片": "data-src=\"&&\"",
6 | "标题": "title=\"&&\"",
7 | "副标题": "class=\"public-prt hide ol2\">&&",
8 | "链接": "href=\"&&\"",
9 | "线路数组": "swiper-slide&&",
10 | "线路标题": "&&",
12 | "播放列表": "",
13 | "播放标题": "html\">&&",
14 | "播放链接": "href=\"&&\"",
15 | "分类url": "https://www.gyf.lol/index.php/vod/show/area/{area}/by/{by}/class/{class}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html",
16 | "分类": "电影$1#剧集$2#综艺$3#动漫$4#短剧$21#少儿$22"
17 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/海纳影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "简介": "简介:&&",
3 | "数组": "row\">&&",
4 | "分类url": "https://www.hainatv.net/index.php/vod/show/area/{area}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html",
5 | "分类": "电影$1#电视剧$2#综艺$3#动漫$4#短剧$59"
6 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/爱我短剧.json:
--------------------------------------------------------------------------------
1 | {
2 | "请求头": "User-Agent$MOBILE_UA",
3 | "主页url": "https://www.aiwodj.com",
4 | "数组": "lazy lazyloaded&&>]",
5 | "图片": "data-src=\"&&\"",
6 | "标题": "title=\"&&\"",
7 | "链接": "href=\"&&\"",
8 | "副标题": "+module-item-caption\">&&&&",
13 | "播放列表": "",
14 | "播放标题": "span>&&",
15 | "播放链接": "href=\"&&\"",
16 | "跳转播放链接": "urlDecode(var player_*\"url\":\"&&\")",
17 | "搜索url": "https://www.aiwodj.com/vodsearch/{wd}----------{pg}---.html",
18 | "搜索数组": "lazy lazyload&&>]",
19 | "搜索图片": "data-src=\"&&\"",
20 | "搜索标题": "+title=\"&&\"",
21 | "搜索链接": "href=\"&&\"",
22 | "分类url": "https://www.aiwodj.com/vodshow/{cateId}--{by}-{class}-{lang}----{catePg}---{year}.html",
23 | "分类": "穿越&战神&重生&爱情&萌娃&神医&古代&玄幻&言情",
24 | "分类值": "fenle&fenlei2&fenlei3&fenlei4&guda&shenyi&gudai&xuanhuan&yanqing"
25 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/狐狸君.json:
--------------------------------------------------------------------------------
1 | {
2 | "搜索模式": "1",
3 | "搜索url": "https://www.foxjun.com/s/?q={wd}",
4 | "搜索数组": "class=\"media\">&&/div>",
5 | "搜索图片": "src=\"&&\"",
6 | "搜索标题": "《&&》",
7 | "搜索副标题": "》&&\"",
8 | "搜索链接": "href=\"&&\"",
9 | "标题": "《&&》",
10 | "副标题": "》&&\"",
11 | "影片年代": "上映日期:&&",
12 | "影片类型": "类型:&&",
13 | "主演": "主演:&&",
14 | "简介": "简介:&&",
15 | "播放数组": "&&",
16 | "播放列表": "[包含:magnet]",
17 | "播放标题": ">&&<",
18 | "播放链接": "href=\"&&\"",
19 | "分类url": "https://www.foxjun.com/channel/{cateId}.html?apage1={catepg}",
20 | "分类": "国产剧$guochanju#电影$dianying#动画$donghua#美欧剧$meiouju#日韩剧$rihanju"
21 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/皮皮虾.json:
--------------------------------------------------------------------------------
1 | {
2 | "首页": "0",
3 | "线路标题": "module-tab-value\">&&",
4 | "分类url": "http://www.ppxys.vip/s/{cateId}/area/{area}/by/{by}/class/{class}/lang/{lang}/letter/{letter}/page/{catePg}/year/{year}.html",
5 | "分类": "剧集$1#电影$2#动漫番剧$3"
6 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/短剧网.json:
--------------------------------------------------------------------------------
1 | {
2 | "分类": "短剧$duanju#电影$dianying#电视剧$dianshiju#动漫$dongman#综艺$zongyi",
3 | "分类url": "https://www.duanjuwang.cc/vodtype/{cateId}/page/{catePg}.html"
4 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/秀儿影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "简介": "tt\" style=*>&&",
3 | "数组": "&&",
5 | "搜索url": "https://xiuer.pro/vod/search/?wd={wd}",
6 | "分类url": "https://xiuer.pro/show/{cateId}/area/{area}/class/{class}/page/{catePg}/year/{year}/",
7 | "分类": "短剧$duanju#电视剧$dianshiju#电影$dianying#动漫$dongman#综艺$zongyi"
8 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/雪糕影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "分类": "电影$1#剧集$2#综艺$3#动漫$4",
3 | "类型": "动作片$1#喜剧片$2#爱情片$21#海外动漫$3#科幻片$4#恐怖片$5#剧情片$6#战争片$7#纪录片$8#其他$9",
4 | "分类url": "https://www.xgitv.com/vshow/{cateId}-----------.html"
5 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XBPQ/面包影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "请求头": "User-Agent$MOBILE_UA",
3 | "编码": "UTF-8",
4 | "分类url": "https://v.aiwule.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html",
5 | "分类": "电影$20#电视剧$21#动漫$23#综艺$22#短剧$47",
6 | "简介": "简介:&&"
7 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XYQHiker/BT天堂.json:
--------------------------------------------------------------------------------
1 | {
2 | "规则名": "BT天堂",
3 | "规则作者": "",
4 | "请求头参数": "PC_UA",
5 | "网页编码格式": "UTF-8",
6 | "图片是否需要代理": "0",
7 | "是否开启获取首页数据": "1",
8 | "首页推荐链接": "https://www.bttt11.com",
9 | "首页列表数组规则": "body&&.ul-imgtxt1",
10 | "首页片单列表数组规则": "li",
11 | "首页片单是否Jsoup写法": "1",
12 | "首页片单标题": "h3&&Text",
13 | "首页片单链接": "a&&href",
14 | "首页片单图片": "img&&src",
15 | "首页片单副标题": "span,-1&&Text",
16 | "首页片单链接加前缀": "https://www.bttt11.com",
17 | "首页片单链接加后缀": "",
18 | "分类起始页码": "0",
19 | "分类链接": "https://www.bttt11.com/html/{cateId}-{catePg}.html",
20 | //"分类链接": "https://www.clgod.xyz/list/{catePg}-{cateId}-0-0.html",
21 | "分类名称": "欧美电影&日韩电影&港台电影&大陆电影&亚太电影&欧美剧&日韩剧&港台剧&国产剧&亚太剧&动漫&综艺&纪录片",
22 | "分类名称替换词": "1&2&3&4&5&6&7&8&9&10&11&12&13",
23 | //"分类名称": "电影&动作&灵异&奇幻&宗教&励志&犯罪&功夫&喜剧&黑色&幽默&爱情&香港&纪录片&灾难&亲情&暴力&僵尸&丧尸&悬疑&人性&惊悚&血腥&武侠&剧情&历史&战争&经典&漫画&改编&恐怖&穿越&青春&黑帮&文艺&浪漫&同志&冒险&动画&演唱会",
24 | //"分类名称替换词": "0&1&2&3&4&5&6&7&8&10&11&12&1315&16&17&18&19&20&21&22&23&24&25&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42",
25 | "筛选数据": {},
26 | "分类截取模式": "1",
27 | "分类列表数组规则": ".ul-imgtxt2&&li",
28 | "分类片单是否Jsoup写法": "1",
29 | "分类片单标题": "h3&&Text",
30 | "分类片单链接": "a&&href",
31 | "分类片单图片": "img&&src",
32 | "分类片单副标题": "span,-1--a&&Text!更新时间:",
33 | "分类片单链接加前缀": "https://www.bttt11.com",
34 | "分类片单链接加后缀": "",
35 | "搜索请求头参数": "User-Agent$PC_UA",
36 | "搜索链接": "https://www.bttt11.com/e/search/;post",
37 | "POST请求数据": "show=title,newstext&keyboard={wd}&searchtype=影视搜索",
38 | "搜索截取模式": "1",
39 | "搜索列表数组规则": ".ul-imgtxt2&&li",
40 | "搜索片单是否Jsoup写法": "1",
41 | "搜索片单图片": "img&&src",
42 | "搜索片单标题": "h3&&Text",
43 | "搜索片单链接": "a&&href",
44 | "搜索片单副标题": "span,-1--a&&Text!更新时间:",
45 | "搜索片单链接加前缀": "https://www.bttt11.com",
46 | "搜索片单链接加后缀": "",
47 | "链接是否直接播放": "0",
48 | "直接播放链接加前缀": "",
49 | "直接播放链接加后缀": "",
50 | "直接播放直链视频请求头": "",
51 | "详情是否Jsoup写法": "0",
52 | "类型详情": "◎类 别&&
",
53 | "年代详情": "◎年 代&&
",
54 | "地区详情": "◎产 地&&
",
55 | "演员详情": "",
56 | "简介详情": "",
57 | "线路列表数组规则": "",
58 | "线路标题": "",
59 | "播放列表数组规则": "body&&.container",
60 | "选集列表数组规则": "a[href^=magnet]||a[href^=ed2K]",
61 | "选集标题链接是否Jsoup写法": "1",
62 | "选集标题": "Text",
63 | "选集链接": "a&&href",
64 | "是否反转选集序列": "0",
65 | "选集链接加前缀": "",
66 | "选集链接加后缀": "",
67 | "分析MacPlayer": "0",
68 | "是否开启手动嗅探": "0",
69 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv",
70 | "手动嗅探视频链接过滤词": ".html"
71 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XYQHiker/七新影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "规则名": "七新影视",
3 | "规则作者": "",
4 | "请求头参数": "手机",
5 | "网页编码格式": "UTF-8",
6 | "图片是否需要代理": "0",
7 | "是否开启获取首页数据": "1",
8 | "首页推荐链接": "http://www.7xdy.com",
9 | "首页列表数组规则": "body&&.stui-vodlist:has(h4)",
10 | "首页片单列表数组规则": "li",
11 | "首页片单是否Jsoup写法": "1",
12 | "分类起始页码": "1",
13 | "分类链接": "http://www.7xdy.com/{cateId}/index{catePg}.html[firstPage=http://www.7xdy.com/{cateId}/index.html]",
14 | "分类名称": "电影&电视剧&综艺&动漫",
15 | "分类名称替换词": "dianyingpian&dianshiju&zongyi&dongman",
16 | //"筛选数据": {},
17 | "筛选数据": "ext",
18 | //{cateId}
19 | "筛选子分类名称": "动作片&爱情片&科幻片&恐怖片&战争片&喜剧片&一直播&剧情片||国产剧&港台剧&欧美剧&日韩剧",
20 | "筛选子分类替换词": "dongzuopian&aiqingpian&kehuanpian&kongbupian&zhanzhengpian&xijupian&jilupian&juqingpian||guocanju&gangtaiju&oumeiju&rihanju",
21 | //{class}
22 | "筛选类型名称": "",
23 | "筛选类型替换词": "*",
24 | //{area}
25 | "筛选地区名称": "",
26 | "筛选地区替换词": "*",
27 | //{year}
28 | "筛选年份名称": "",
29 | "筛选年份替换词": "*",
30 | //{lang}
31 | "筛选语言名称": "",
32 | "筛选语言替换词": "*",
33 | //{by}
34 | "筛选排序名称": "时间&人气&评分",
35 | "筛选排序替换词": "time&hits&score",
36 | "分类截取模式": "1",
37 | "分类列表数组规则": ".stui-vodlist&&li",
38 | "分类片单是否Jsoup写法": "1",
39 | "分类片单标题": "h4&&a&&Text",
40 | "分类片单链接": "h4&&a&&href",
41 | "分类片单图片": ".lazyload&&data-original",
42 | "分类片单副标题": ".pic-text&&Text",
43 | "分类片单链接加前缀": "http://www.7xdy.com",
44 | "分类片单链接加后缀": "",
45 | "搜索请求头参数": "User-Agent$手机",
46 | "搜索链接": "http://www.7xdy.com/search.php?page=1&searchword={wd}&searchtype=",
47 | "POST请求数据": "searchword={wd}",
48 | "搜索截取模式": "1",
49 | "搜索列表数组规则": ".stui-vodlist__media&&li",
50 | "搜索片单是否Jsoup写法": "1",
51 | "搜索片单图片": ".lazyload&&data-original",
52 | "搜索片单标题": "h3&&a&&Text",
53 | "搜索片单链接": "h3&&a&&href",
54 | "搜索片单副标题": ".pic-text&&Text",
55 | "搜索片单链接加前缀": "http://www.7xdy.com",
56 | "搜索片单链接加后缀": "",
57 | "链接是否直接播放": "0",
58 | "直接播放链接加前缀": "",
59 | "直接播放链接加后缀": "",
60 | "直接播放直链视频请求头": "",
61 | "详情是否Jsoup写法": "0",
62 | "类型详情": "类型:&&",
63 | "年代详情": "年份:&&",
64 | "地区详情": "地区:&&",
65 | "演员详情": "主演:&&",
66 | "简介详情": "简介:&&",
67 | "线路列表数组规则": "body&playlist",
68 | "线路标题": "h3&&Text",
69 | "播放列表数组规则": "body&&.stui-content__playlist",
70 | "选集列表数组规则": "li",
71 | "选集标题链接是否Jsoup写法": "1",
72 | "选集标题": "a&&Text",
73 | "选集链接": "a&&href",
74 | "是否反转选集序列": "1",
75 | "选集链接加前缀": "http://www.7xdy.com",
76 | "选集链接加后缀": "",
77 | "分析MacPlayer": "0",
78 | "是否开启手动嗅探": "1",
79 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos#pt=m3u8#obj/tos-#video/tos#mime_type=video#x-oss-signature=",
80 | "手动嗅探视频链接过滤词": ".html#=http"
81 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XYQHiker/九八影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "规则名": "九八剧",
3 | "规则作者": "香雅情",
4 | "请求头参数": "User-Agent$手机#Referer$http://www.98wap.com/",
5 | "网页编码格式": "UTF-8",
6 | "图片是否需要代理": "0",
7 | "是否开启获取首页数据": "1",
8 | //首页推荐数据获取链接
9 | "首页推荐链接": "http://www.98wap.com",
10 | //首页推荐列表数组截取。
11 | "首页列表数组规则": "body&&.stui-vodlist:has(h4)",
12 | //首页推荐片单列表数组定位。
13 | "首页片单列表数组规则": "li",
14 | //首页推荐片单信息jsoup与正则截取写法切换,只作用于html网页,1为jsoup写法(默认),0为正则截取写法
15 | "首页片单是否Jsoup写法":"1",
16 | //首页片单标题
17 | "首页片单标题": "h4&&a&&Text",
18 | //首页推荐片单链接
19 | "首页片单链接": "h4&&a&&href",
20 | //首页推荐片单图片,支持自定义图片链接
21 | "首页片单图片": ".lazyload&&data-original",
22 | //首页推荐片单副标题
23 | "首页片单副标题":".pic-text&&Text",
24 | //首页推荐片单链接补前缀
25 | "首页片单链接加前缀": "http://www.98wap.com",
26 | //首页推荐片单链接补后缀
27 | "首页片单链接加后缀": "",
28 |
29 | "分类起始页码": "1",
30 | "分类链接": "http://www.98wap.com/{cateId}/index{catePg}.html[firstPage=http://www.98wap.com/{cateId}/index.html]",
31 | "分类名称": "电影&电视剧&综艺&动漫",
32 | "分类名称替换词": "dianyingpian&dianshiju&zongyi&dongman",
33 | "筛选数据": "ext",
34 | //{cateId}
35 | "筛选子分类名称": "动作片&爱情片&科幻片&恐怖片&战争片&喜剧片&纪录片&剧情片||国产剧&港台剧&欧美剧&日韩剧&短剧",
36 | "筛选子分类替换词": "dongzuopian&aiqingpian&kehuanpian&kongbupian&zhanzhengpian&xijupian&jilupian&juqingpian||guocanju&gangtaiju&oumeiju&rihanju&duanju",
37 | "分类截取模式": "1",
38 | "分类列表数组规则": ".stui-vodlist&&li",
39 | "分类片单是否Jsoup写法": "1",
40 | "分类片单标题": "h4&&a&&Text",
41 | "分类片单链接": "h4&&a&&href",
42 | "分类片单图片": ".lazyload&&data-original",
43 | "分类片单副标题": ".pic-text&&Text",
44 | "分类片单链接加前缀": "http://www.98wap.com",
45 | "分类片单链接加后缀": "",
46 | "搜索请求头参数": "User-Agent$手机#Referer$http://www.98wap.com/",
47 | "搜索链接": "http://www.98wap.com/search.php;post",
48 | "POST请求数据": "searchword={wd}",
49 | "搜索截取模式": "1",
50 | "搜索列表数组规则": ".stui-vodlist__media&&li",
51 | "搜索片单是否Jsoup写法": "1",
52 | "搜索片单图片": ".lazyload&&data-original",
53 | "搜索片单标题": "h3&&a&&Text",
54 | "搜索片单链接": "h3&&a&&href",
55 | "搜索片单副标题": ".pic-text&&Text",
56 | "搜索片单链接加前缀": "http://www.98wap.com",
57 | "搜索片单链接加后缀": "",
58 | "链接是否直接播放": "0",
59 | "直接播放链接加前缀": "https://live.52sf.ga/huya/",
60 | "直接播放链接加后缀": "#isVideo=true#",
61 | "直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online",
62 | "详情是否Jsoup写法": "0",
63 | "类型详情": "类型:&&&&",
67 | "简介详情": "简介:&&",
68 | "线路列表数组规则": "body&playlist",
69 | "线路标题": "h3&&Text",
70 | "播放列表数组规则": "body&&.stui-content__playlist",
71 | "选集列表数组规则": "li",
72 | "选集标题链接是否Jsoup写法": "1",
73 | "选集标题": "a&&Text",
74 | "选集链接": "a&&href",
75 | "是否反转选集序列": "0",
76 | "选集链接加前缀": "http://www.98wap.com",
77 | "选集链接加后缀": "",
78 | "分析MacPlayer": "0",
79 | "是否开启手动嗅探": "1",
80 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos#obj/tos-#pt=m3u8#mime_type=video",
81 | "手动嗅探视频链接过滤词": ".html#=http"
82 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XYQHiker/八号影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "规则名": "八号影视",
3 | "规则作者": "",
4 | "请求头参数": "User-Agent$手机#accept$text/html",
5 | "网页编码格式": "UTF-8",
6 | "图片是否需要代理": "0",
7 | "是否开启获取首页数据": "0",
8 | "首页推荐链接": "http://www.bahaotv.com",
9 | "首页列表数组规则": "body&&.show-vod-list",
10 | "首页片单列表数组规则": ".myui-vodbox-content",
11 | "首页片单是否Jsoup写法": "1",
12 | "分类起始页码": "1",
13 | "分类链接": "http://www.bahaotv.com/vodshow/{cateId}--------{catePg}---.html",
14 | "分类名称": "电影&电视剧&动漫",
15 | "分类名称替换词": "movie&tvseries&anime",
16 | "筛选数据": {},
17 | //"筛选数据": "ext",
18 | //{cateId}
19 | "筛选子分类名称": "",
20 | "筛选子分类替换词": "",
21 | //{class}
22 | "筛选类型名称": "",
23 | "筛选类型替换词": "*",
24 | //{area}
25 | "筛选地区名称": "",
26 | "筛选地区替换词": "*",
27 | //{year}
28 | "筛选年份名称": "",
29 | "筛选年份替换词": "*",
30 | //{lang}
31 | "筛选语言名称": "",
32 | "筛选语言替换词": "*",
33 | //{by}
34 | "筛选排序名称": "时间&人气&评分",
35 | "筛选排序替换词": "time&hits&score",
36 | "分类截取模式": "1",
37 | "分类列表数组规则": ".show-vod-list&&.myui-vodbox-content",
38 | "分类片单是否Jsoup写法": "1",
39 | "分类片单标题": ".title&&Text",
40 | "分类片单链接": "a&&href",
41 | "分类片单图片": "img&&src",
42 | "分类片单副标题": ".right&&Text",
43 | "分类片单链接加前缀": "http://www.bahaotv.com",
44 | "分类片单链接加后缀": "",
45 | "搜索请求头参数": "User-Agent$手机#accept$text/html",
46 | "搜索链接": "http://www.bahaotv.com/vodsearch/-------------.html?wd={wd}",
47 | "POST请求数据": "",
48 | "搜索截取模式": "1",
49 | "搜索列表数组规则": ".show-vod-list&&.myui-vodbox-content",
50 | "搜索片单是否Jsoup写法": "1",
51 | "搜索片单图片": "img&&src",
52 | "搜索片单标题": ".title&&Text",
53 | "搜索片单链接": "a&&href",
54 | "搜索片单副标题": ".right&&Text",
55 | "搜索片单链接加前缀": "http://www.bahaotv.com",
56 | "搜索片单链接加后缀": "",
57 | "链接是否直接播放": "0",
58 | "直接播放链接加前缀": "https://live.52sf.ga/huya/",
59 | "直接播放链接加后缀": "#isVideo=true#",
60 | "直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online",
61 | "详情是否Jsoup写法": "1",
62 | "类型详情": "",
63 | "年代详情": "",
64 | "地区详情": "",
65 | "演员详情": ".detail-box&&.director,1&&Text!主演:",
66 | "简介详情": ".intro&&Text",
67 | "线路列表数组规则": ".nav-btn&&li",
68 | "线路标题": "Text",
69 | "播放列表数组规则": "body&&[id^=playlist]",
70 | "选集列表数组规则": "a",
71 | "选集标题链接是否Jsoup写法": "1",
72 | "选集标题": "a&&Text",
73 | "选集链接": "a&&href",
74 | "是否反转选集序列": "0",
75 | "选集链接加前缀": "http://www.bahaotv.com",
76 | "选集链接加后缀": "",
77 | "分析MacPlayer": "0",
78 | "是否开启手动嗅探": "0",
79 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
80 | "手动嗅探视频链接过滤词": ".html#=http"
81 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XYQHiker/星辰影视.json:
--------------------------------------------------------------------------------
1 | {
2 | "规则名": " 星辰影院",
3 | "规则作者": "香雅情",
4 | "请求头参数": "User-Agent$手机#Cookie$tcpvsd=1686288471101",
5 | "网页编码格式": "UTF-8",
6 | "图片是否需要代理": "0",
7 | "是否开启获取首页数据": "是",
8 | "首页推荐链接": "http://www.40yb.com",
9 | "首页列表数组规则": "body&&.stui-vodlist:has(h4)",
10 | "首页片单列表数组规则": "li",
11 | "首页片单是否Jsoup写法": "1",
12 | "分类起始页码": "1",
13 | "分类链接": "http://www.40yb.com/{cateId}/index{catePg}.html[firstPage=http://www.40yb.com/{cateId}/index.html]",
14 | "分类名称": "电影&电视剧&综艺&动漫",
15 | "分类名称替换词": "dianying&dianshiju&zongyi&dongman",
16 | "筛选数据": "ext",
17 | "筛选子分类名称": "动作片&爱情片&科幻片&恐怖片&喜剧片&剧情片&在线直播||国产剧&港台剧&欧美剧&日韩剧",
18 | "筛选子分类替换词": "dongzuopian&aiqingpian&kehuanpian&kongbupian&xijupian&juqingpian&zaixianzhibo||guochanju&tangtaiju&oumeiju&rihanju",
19 | "筛选类型名称": "",
20 | "筛选类型替换词": "*",
21 | "筛选地区名称": "",
22 | "筛选地区替换词": "*",
23 | "筛选年份名称": "",
24 | "筛选年份替换词": "*",
25 | "筛选语言名称": "",
26 | "筛选语言替换词": "*",
27 | "筛选排序名称": "",
28 | "筛选排序替换词": "",
29 | "分类截取模式": "1",
30 | "分类列表数组规则": ".stui-vodlist&&li",
31 | "分类片单是否Jsoup写法": "1",
32 | "分类片单标题": "h4&&a&&Text",
33 | "分类片单链接": "h4&&a&&href",
34 | "分类片单图片": ".lazyload&&data-original",
35 | "分类片单副标题": ".pic-text&&Text",
36 | "分类片单链接加前缀": "http://www.40yb.com",
37 | "分类片单链接加后缀": "",
38 | "搜索请求头参数": "User-Agent$手机#Cookie$tcpvsd=1686288471101",
39 | "搜索链接": "http://www.40yb.com/search.php;post",
40 | "POST请求数据": "searchword={wd}",
41 | "搜索截取模式": "1",
42 | "搜索列表数组规则": ".stui-vodlist__media&&li",
43 | "搜索片单是否Jsoup写法": "1",
44 | "搜索片单图片": ".lazyload&&data-original",
45 | "搜索片单标题": "h3&&a&&Text",
46 | "搜索片单链接": "h3&&a&&href",
47 | "搜索片单副标题": ".pic-text&&Text",
48 | "搜索片单链接加前缀": "http://www.40yb.com",
49 | "搜索片单链接加后缀": "",
50 | "链接是否直接播放": "0",
51 | "直接播放链接加前缀": "",
52 | "直接播放链接加后缀": "",
53 | "直接播放直链视频请求头": "",
54 | "详情是否Jsoup写法": "0",
55 | "类型详情": "类型:&&",
56 | "年代详情": "年份:&&",
57 | "地区详情": "地区:&&",
58 | "演员详情": "主演:&&",
59 | "简介详情": "简介:&&",
60 | "线路列表数组规则": "body&playlist",
61 | "线路标题": "h3&&Text",
62 | "播放列表数组规则": "body&&.stui-content__playlist",
63 | "选集列表数组规则": "li",
64 | "选集标题链接是否Jsoup写法": "1",
65 | "选集标题": "a&&Text",
66 | "选集链接": "a&&href",
67 | "是否反转选集序列": "0",
68 | "选集链接加前缀": "http://www.40yb.com",
69 | "选集链接加后缀": "",
70 | "分析MacPlayer": "0",
71 | "是否开启手动嗅探": "0",
72 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
73 | "手动嗅探视频链接过滤词": ".html#=http"
74 | }
--------------------------------------------------------------------------------
/TVBoxOSC/tvbox/XYQHiker/电影港.json:
--------------------------------------------------------------------------------
1 | //写法思路来海阔视界,xpath筛选。本人是海阔用户,所以搬了海阔的jsoup写法过来。2022年9月17日
2 | //jsoup规则写法请查阅海阔视界或者海阔影视相关教程。不支持js写法
3 | //本文档为完整模板,请不要去无中生有添加多余的键值参数。
4 | {
5 | //规则名
6 | "title": "电影港",
7 | //作者
8 | "author": "香雅情",
9 | //请求头UA,键名$键值,每一组用#分开,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA
10 | //多个请求头参数写法示例,"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok",每一组用#分开。
11 | //习惯查看手机源码写建议用手机版UA,习惯查看PC版源码写建议用电脑版UA
12 | "Headers":"PC_UA",
13 | //网页编码格式默认UTF-8编码,UTF-8,GBK,GB2312
14 | "Coding_format":"gb2312",
15 | //图片是否需要代理
16 | "PicNeedProxy":"0",
17 | //是否开启获取首页数据,0关闭,1开启
18 | "homeContent":"0",
19 | //分类链接起始页码,禁止负数和含小数点。
20 | "firstpage": "1",
21 | //分类链接,{cateId}是分类,{catePg}是页码,第一页没有页码的可以这样写 第二页链接[firstPage=第一页的链接]
22 | "class_url": "https://www.dygang.tv/{cateId}/index_{catePg}.htm[firstPage=https://www.dygang.cc/{cateId}/index.htm]",
23 | //分类名,分类1&分类2&分类3
24 | "class_name": "最新电影&经典高清&国配电影&经典港片&国剧&日韩剧&美剧&综艺&动漫&纪录片&高清原盘&4K高清区&3D电影&电影专题",
25 | //分类名替换词,替换词1&替换词2&替换词3,替换词包含英文&的用两个中文&&代替,示例:&&id=0&&&id=1
26 | "class_value": "ys&bd&gy&gp&dsj&dsj1&yx&zy&dmq&jilupian&1080p&4K&3d&dyzt",
27 | //筛选数据,json格式,参考xpath的筛选写法
28 | "filterdata":{},
29 |
30 | //分类页面截取数据模式,0为json,其它数字为普通网页。
31 | "cat_mode": "1",
32 | //分类列表数组定位,最多支持3层,能力有限,不是所有页面都能支持
33 | "cat_arr_rule": "body&&table[width=388]",
34 | //分类片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法
35 | "cat_is_jsoup":"1",
36 | //分类片单标题
37 | "cat_title": "img&&alt",
38 | //分类片单链接
39 | "cat_url": "a&&href",
40 | //分类片单图片,支持自定义图片链接
41 | "cat_pic": "img&&src",
42 | //分类片单副标题
43 | "cat_subtitle":"[align=center]&&Text",
44 | //分类片单链接补前缀
45 | "cat_prefix": "https://www.dygang.tv",
46 | //分类片单链接补后缀
47 | "cat_suffix": "",
48 |
49 | //搜索请求头参数,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA
50 | //多个请求头参数写法示例,键名$键值,每一组用#分开。"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok"。
51 | "SHeaders":"User-Agent$PC_UA#Content-Type$charset=gb2312",
52 | //搜索链接,搜索关键字用{wd}表示,post请求的最后面加;post
53 | //POST链接示例 http://www.lezhutv.com/index.php?m=vod-search;post
54 | "search_url": "https://www.dygang.tv/e/search/index123.php;post",
55 | //POST搜索body,填写搜索关键字的键值,一般常见的是searchword和wd,不是POST搜索的可留空或删除。
56 | "sea_PtBody":"keyboard={wd}&submit=搜+索&show=title,smalltext&tempid=1&tbname=article",
57 |
58 | //搜索截取模式,0为json搜索,只支持列表在list数组里的,其它数字为网页截取。
59 | "search_mode": "1",
60 | //搜索列表数组定位,不填默认内置list,最多支持3层,能力有限,不是所有页面都能支持。
61 | "sea_arr_rule": "body&&table[width=388]",
62 | //搜索片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法
63 | "sea_is_jsoup":"1",
64 | //搜索片单图片,支持自定义图片链接
65 | "sea_pic": "img&&src",
66 | //搜索片单标题
67 | "sea_title": "img&&alt",
68 | //搜索片单链接
69 | "sea_url": "a&&href",
70 | //搜索片单副标题
71 | "sea_subtitle":"",
72 | //搜索片单链接补前缀
73 | "search_prefix": "https://www.dygang.tv",
74 | //搜索片单链接补后缀,这个一般json搜索的需要
75 | "search_suffix": "",
76 |
77 | //片单链接是否直接播放,0否,1分类片单链接直接播放,2详情选集链接直接播放。
78 | //设置成直接播放后,后面3个参数请注意该留空的请务必留空。
79 | "force_play": "0",
80 | //直接播放链接补前缀
81 | "play_prefix": "",
82 | //直接播放链接补后缀,设置为#isVideo=true#可强制识别为视频链接
83 | "play_suffix": "",
84 | //直接播放链接设置请求头,只对直链视频有效,每一组用#分开
85 | "play_header": "",
86 |
87 | //项目信息jsoup与xb截取写法切换,1为jsoup写法(默认),0为xb写法
88 | "proj_is_jsoup":"0",
89 | //类型数据,截取前缀&&截取后缀
90 | "proj_cate": "",
91 | //年代数据,截取前缀&&截取后缀
92 | "proj_year": "",
93 | //地区数据,截取前缀&&截取后缀
94 | "proj_area": "",
95 | //演员数据,截取前缀&&截取后缀
96 | "proj_actor": "演 员&&",
97 | //简介内容,截取前缀&&截取后缀
98 | "proj_plot": "简 介&&",
99 |
100 | //线路截取区域,如果不需要请把tab_title或tab_arr_rule置空或者全部不要填。
101 | //线路截取数组
102 | "tab_arr_rule": "#dede_content",
103 | //线路标题,截取前缀&&截取后缀
104 | "tab_title": "strong&&Text",
105 |
106 | //列表数组截取,必须
107 | "list_arr_rule": "#dede_content",
108 | //集数数组截取,必须
109 | "epi_arr_rule": "table&&[href*=magnet]",
110 | //集数标题,截取前缀&&截取后缀
111 | "epi_title": "a&&Text",
112 | //集数链接,截取前缀&&截取后缀
113 | "epi_url": "a&&href",
114 | //选集是否反转显示
115 | "epi_reverse": "0",
116 | //集数链接补前缀
117 | "epiurl_prefix": "",
118 | //集数链接补后缀
119 | "epiurl_suffix": "",
120 |
121 | //下面几个参数请勿乱用。否则可能会有副作用。
122 | //分析网页源码中有