├── .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_.*?=(.*?) { 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_.*?=(.*?) { 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_.*?=(.*?) 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 | "播放标题": ">&&&&", 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": "演  员&&var player_aaaa={"flag":"play","encrypt这种源码的链接解析 123 | //如果网页源码里没有这种请设置为0 124 | "Anal_MacPlayer":"0", 125 | //是否开启手动嗅探,只对网页嗅探有效,0否,1是 126 | "ManualSniffer":"0", 127 | //手动嗅探视频链接关键字,每个用#隔开 128 | "VideoFormat":".mp4#.m3u8#.flv", 129 | //手动嗅探视频链接过滤关键词,每个用#隔开 130 | "VideoFilter":".html#=http" 131 | } -------------------------------------------------------------------------------- /TVBoxOSC/tvbox/XYQHiker/电影牛.json: -------------------------------------------------------------------------------- 1 | { 2 | "规则名": "电影牛影院", 3 | "规则作者": "香雅情", 4 | "请求头参数": "手机", 5 | "网页编码格式": "UTF-8", 6 | "图片是否需要代理": "1", 7 | "是否开启获取首页数据": "1", 8 | "首页推荐链接": "https://www.dianyingn.cc", 9 | "首页列表数组规则": "body&&.fed-list-info:has(.fed-list-remarks)", 10 | "首页片单列表数组规则": "li", 11 | "首页片单是否Jsoup写法": "1", 12 | "首页片单标题": ".fed-list-title&&Text", 13 | "首页片单链接": "a&&href", 14 | "首页片单图片": ".fed-list-pics&&data-original", 15 | "首页片单副标题": ".fed-list-remarks&&Text", 16 | "首页片单链接加前缀": "https://www.dianyingn.cc", 17 | "首页片单链接加后缀": "", 18 | "分类起始页码": "1", 19 | "分类链接": "https://www.dianyingn.cc/vodtype/{cateId}-{catePg}.html", 20 | "分类名称": "电影&电视剧&综艺&动漫", 21 | "分类名称替换词": "dianying&dianshiju&zongyi&dongman", 22 | "筛选数据": "ext", 23 | "筛选子分类名称": "动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片||国产剧&港台剧&日韩剧&欧美剧", 24 | "筛选子分类替换词": "dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian||guochanju&gangtaiju&rihanju&oumeiju", 25 | 26 | "分类截取模式": "1", 27 | "分类列表数组规则": "body&&.fed-list-item:has(.fed-list-remarks)", 28 | "分类片单是否Jsoup写法": "1", 29 | "分类片单标题": ".fed-list-title&&Text", 30 | "分类片单链接": "a&&href", 31 | "分类片单图片": ".fed-list-pics&&data-original", 32 | "分类片单副标题": ".fed-list-remarks&&Text", 33 | "分类片单链接加前缀": "https://www.dianyingn.cc", 34 | "分类片单链接加后缀": "", 35 | "搜索请求头参数": "手机", 36 | "搜索链接": "https://www.dianyingn.cc/index.php/ajax/suggest.html?mid=1&wd={wd}", 37 | "POST请求数据": "", 38 | "搜索截取模式": "0", 39 | "搜索列表数组规则": "list", 40 | "搜索片单是否Jsoup写法": "1", 41 | "搜索片单图片": "pic", 42 | "搜索片单标题": "name", 43 | "搜索片单链接": "id", 44 | "搜索片单副标题": "", 45 | "搜索片单链接加前缀": "https://www.dianyingn.cc/voddetail/", 46 | "搜索片单链接加后缀": ".html", 47 | "链接是否直接播放": "0", 48 | "直接播放链接加前缀": "https://live.52sf.ga/huya/", 49 | "直接播放链接加后缀": "#isVideo=true#", 50 | "直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online", 51 | "详情是否Jsoup写法": "0", 52 | "类型详情": "", 53 | "年代详情": "", 54 | "地区详情": "", 55 | "演员详情": "主演:&&", 56 | "简介详情": "简介:&&", 57 | "线路列表数组规则": ".fed-tabs-item&&ul&&li", 58 | "线路标题": "Text", 59 | "播放列表数组规则": "body&&.fed-play-item", 60 | "选集列表数组规则": ".fed-btns-info", 61 | "选集标题链接是否Jsoup写法": "1", 62 | "选集标题": "a&&Text", 63 | "选集链接": "a&&href", 64 | "是否反转选集序列": "0", 65 | "选集链接加前缀": "https://www.dianyingn.cc", 66 | "选集链接加后缀": "", 67 | "分析MacPlayer": "0", 68 | "是否开启手动嗅探": "0", 69 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv", 70 | "手动嗅探视频链接过滤词": ".html#=http" 71 | } -------------------------------------------------------------------------------- /TVBoxOSC/tvbox/XYQHiker/百思派.json: -------------------------------------------------------------------------------- 1 | { 2 | "规则名": "百思派电影网", 3 | "请求头参数": "手机", 4 | "网页编码格式": "UTF-8", 5 | "图片是否需要代理": "0", 6 | "是否开启获取首页数据": "1", 7 | "首页推荐链接": "https://www.bestpipe.cn", 8 | "首页列表数组规则": "body&&.stui-vodlist", 9 | "首页片单列表数组规则": "li", 10 | "首页片单是否Jsoup写法": "1", 11 | "分类起始页码": "1", 12 | "分类链接": "https://www.bestpipe.cn/vodshow/{cateId}-{area}-{by}-{class}-{lang}----{catePg}---{year}.html", 13 | "分类名称": "电影&剧集&短剧&动漫&综艺", 14 | "分类名称替换词": "20&21&24&22&23", 15 | "筛选数据": "ext", 16 | "筛选类型名称": "Netflix&剧情&科幻&动作&喜剧&爱情&冒险&儿童&歌舞&音乐&奇幻&动画&恐怖&惊悚&战争&传记&纪录&犯罪&悬疑&西部&灾难&古装&武侠&家庭&短片&校园&文艺&运动&青春&同性&励志&历史||Netflix&欧美&短剧&古装&武侠&励志&家庭&剧情&喜剧&战争&科幻&惊悚&恐怖&悬疑&犯罪&动作&冒险&历史&同性||古代&现代&穿越&玄幻&霸总&英雄救美&未婚妻&师姐&绝美&逆袭&美女&爱情&甜宠&虐恋&爽剧&搞笑&情感&动漫&萌宝&都市&言情&重生&乡村&神医&幻想&反转&复仇&修仙&古装&男频||Netflix&热血&科幻&美少女&魔幻&经典&励志&少儿&冒险&搞笑&推理&恋爱&治愈&幻想&校园&动物&机战&亲子&儿歌&运动&悬疑&怪物&战争&益智&青春&童话&竞技&动作&社会&友情&真人版&电影版&OVA版&TV版&新番动画&完结动画||Netflix&脱口秀&真人秀&选秀&八卦&访谈&情感&生活&晚会&搞笑&音乐&时尚&游戏&少儿&体育&纪实&科教&曲艺&歌舞&财经&汽车&播报&其他", 17 | "筛选类型替换词": "*", 18 | "筛选地区名称": "大陆&香港&台湾&美国&日本&韩国&英国&法国&德国&印度&泰国&丹麦&瑞典&巴西&加拿大&俄罗斯&意大利&比利时&爱尔兰&西班牙&澳大利亚&其它||大陆&香港&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其他||大陆&香港&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其他||大陆&日本&欧美&其他||大陆&韩国&香港&台湾&美国&其它", 19 | "筛选地区替换词": "*", 20 | "筛选语言名称": "英语&法语&国语&粤语&日语&韩语&泰语&德语&俄语&闽南语&丹麦语&波兰语&瑞典语&印地语&挪威语&意大利语&西班牙语||空||空||国语&英语&粤语&闽南语&韩语&日语&其它||国语&英语&粤语&闽南语&韩语&日语&其它", 21 | "筛选语言替换词": "*", 22 | "详情是否Jsoup写法": "是", 23 | "类型详情": ".stui-content__detail&&.data,1&&Text!状态:", 24 | "年代详情": ".stui-content__detail&&.data,4&&Text!年份:", 25 | "地区详情": ".stui-content__detail&&.data,2&&Text!地区:", 26 | "演员详情": ".stui-content__detail&&.data,6&&Text!主演:", 27 | "简介详情": ".stui-content__detail&&.detail-content&&Text", 28 | "分类截取模式": "1", 29 | "分类列表数组规则": "body&&.stui-vodlist__box", 30 | "分类片单是否Jsoup写法": "1", 31 | "分类片单标题": "a&&title", 32 | "分类片单链接": "a&&href", 33 | "分类片单图片": ".stui-vodlist__thumb&&data-original", 34 | "分类片单副标题": ".pic-text&&Text", 35 | "分类片单链接加前缀": "https://www.bestpipe.cn", 36 | "搜索请求头参数": "User-Agent$手机", 37 | "搜索链接": "https://www.bestpipe.cn/vodsearch/{wd}----------1---.html", 38 | "搜索截取模式": "1", 39 | "搜索列表数组规则": "body&&.stui-vodlist__box", 40 | "搜索片单是否Jsoup写法": "1", 41 | "搜索片单标题": "a&&title", 42 | "搜索片单链接": "a&&href", 43 | "搜索片单图片": ".stui-vodlist__thumb&&data-original", 44 | "搜索片单副标题": ".pic-text&&Text", 45 | "搜索片单链接加前缀": "https://www.bestpipe.cn", 46 | "线路列表数组规则": "body&&.nav-tabs&&a", 47 | "线路标题": "Text", 48 | "播放列表数组规则": "body&&.stui-content__playlist", 49 | "选集列表数组规则": "a", 50 | "选集标题链接是否Jsoup写法": "1", 51 | "选集标题": "a&&Text", 52 | "选集链接": "a&&href", 53 | "是否反转选集序列": "0", 54 | "选集链接加前缀": "https://www.bestpipe.cn", 55 | "选集链接加后缀": "", 56 | "分析MacPlayer": "2", 57 | "是否开启手动嗅探": "0", 58 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos", 59 | "手动嗅探视频链接过滤词": ".html#=http" 60 | } -------------------------------------------------------------------------------- /TVBoxOSC/tvbox/XYQHiker/盒子影视.json: -------------------------------------------------------------------------------- 1 | { 2 | "规则名": "电影盒子", 3 | "规则作者": "", 4 | "请求头参数": "手机", 5 | "网页编码格式": "UTF-8", 6 | "图片是否需要代理": "0", 7 | "是否开启获取首页数据": "0", 8 | "首页推荐链接": "http://80kp.com", 9 | "首页列表数组规则": "body&&.stui-vodlist:has(h4)", 10 | "首页片单列表数组规则": "li", 11 | "首页片单是否Jsoup写法": "1", 12 | "分类起始页码": "1", 13 | "分类链接": "http://80kp.com/films/{cateId}_{catePg}.html[firstPage=http://80kp.com/films/{cateId}.html]", 14 | "分类名称": "电影&电视剧&综艺&动漫", 15 | "分类名称替换词": "1&2&4&3", 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 | "分类列表数组规则": ".stui-vodlist&&li", 38 | "分类片单是否Jsoup写法": "1", 39 | "分类片单标题": "h4&&a&&Text", 40 | "分类片单链接": "h4&&a&&href", 41 | "分类片单图片": ".lazyload&&data-original", 42 | "分类片单副标题": ".pic-text&&Text", 43 | "分类片单链接加前缀": "http://80kp.com", 44 | "分类片单链接加后缀": "", 45 | "搜索请求头参数": "User-Agent$手机", 46 | "搜索链接": "http://80kp.com/search.php;post", 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://80kp.com", 56 | "搜索片单链接加后缀": "", 57 | "链接是否直接播放": "0", 58 | "直接播放链接加前缀": "", 59 | "直接播放链接加后缀": "", 60 | "直接播放直链视频请求头": "", 61 | "详情是否Jsoup写法": "0", 62 | "类型详情": "类型:&&", 63 | "年代详情": "年份:&&", 64 | "地区详情": "地区:&&", 65 | "演员详情": "主演:&&

    ", 66 | "简介详情": "简介:&&

    ", 67 | "线路列表数组规则": ".nav-tabs&&li", 68 | "线路标题": "Text", 69 | "播放列表数组规则": "body&&.stui-content__playlist", 70 | "选集列表数组规则": "li", 71 | "选集标题链接是否Jsoup写法": "1", 72 | "选集标题": "a&&Text", 73 | "选集链接": "a&&href", 74 | "是否反转选集序列": "0", 75 | "选集链接加前缀": "http://80kp.com", 76 | "选集链接加后缀": "", 77 | "分析MacPlayer": "0", 78 | "是否开启手动嗅探": "1", 79 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos#obj/tos-#pt=m3u8#mime_type=video_mp4#x-oss-signature=", 80 | "手动嗅探视频链接过滤词": ".html#=http" 81 | } -------------------------------------------------------------------------------- /TVBoxOSC/tvbox/XYQHiker/看看影视.json: -------------------------------------------------------------------------------- 1 | { 2 | "规则名": "看一看", 3 | "规则作者": "", 4 | "请求头参数": "User-Agent$手机#Referer$https://www.kykhd.cc/", 5 | "网页编码格式": "UTF-8", 6 | "图片是否需要代理": "0", 7 | "是否开启获取首页数据": "1", 8 | "首页推荐链接": "https://www.kykhd.cc", 9 | "首页列表数组规则": "body&&.index-area", 10 | "首页片单列表数组规则": "ul&&li", 11 | "首页片单是否Jsoup写法": "1", 12 | "分类起始页码": "1", 13 | "分类链接": "https://www.kykhd.cc/index.php?m=vod-list-id-{cateId}-pg-{catePg}-order--by-{by}-class-0-year-0-letter--area-{area}-lang-.html", 14 | "分类名称": "电影&电视剧&综艺&动漫", 15 | "分类名称替换词": "1&2&3&4", 16 | //"筛选数据": {}, 17 | "筛选数据": "ext", 18 | //{cateId} 19 | "筛选子分类名称": "动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&微电影&惊悚片&悬疑片||国产剧&港台剧&日韩剧&欧美剧&泰剧&海外剧||TV综艺&音乐MV||TV版&电影版&剧场版&国语经典", 20 | "筛选子分类替换词": "5&6&7&8&9&10&11&16&18&20&21||12&13&14&15&19&32||26&31||23&24&25&36", 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 | "分类列表数组规则": ".index-area&&li", 38 | "分类片单是否Jsoup写法": "1", 39 | "分类片单标题": "a&&title", 40 | "分类片单链接": "a&&href", 41 | "分类片单图片": "img&&data-original", 42 | "分类片单副标题": ".other&&Text", 43 | "分类片单链接加前缀": "https://www.kykhd.cc", 44 | "分类片单链接加后缀": "", 45 | "搜索请求头参数": "User-Agent$手机#Referer$https://www.kykhd.cc/", 46 | "搜索链接": "https://www.kykhd.cc/index.php?m=vod-search-pg-1-wd-{wd}.html", 47 | "POST请求数据": "", 48 | "搜索截取模式": "1", 49 | "搜索列表数组规则": ".index-area&&li", 50 | "搜索片单是否Jsoup写法": "1", 51 | "搜索片单图片": "img&&data-original", 52 | "搜索片单标题": "a&&title", 53 | "搜索片单链接": "a&&href", 54 | "搜索片单副标题": ".other&&Text", 55 | "搜索片单链接加前缀": "https://www.kykhd.cc", 56 | "搜索片单链接加后缀": "", 57 | "链接是否直接播放": "0", 58 | "直接播放链接加前缀": "", 59 | "直接播放链接加后缀": "", 60 | "直接播放直链视频请求头": "", 61 | "详情是否Jsoup写法": "1", 62 | "类型详情": "", 63 | "年代详情": "", 64 | "地区详情": "", 65 | "演员详情": "", 66 | "简介详情": ".ct-c&&.js&&Text", 67 | "线路列表数组规则": ".playfrom&&li", 68 | "线路标题": "Text", 69 | "播放列表数组规则": "body&&.playlist", 70 | "选集列表数组规则": "ul&&li", 71 | "选集标题链接是否Jsoup写法": "1", 72 | "选集标题": "a&&Text", 73 | "选集链接": "a&&href", 74 | "是否反转选集序列": "0", 75 | "选集链接加前缀": "https://www.kykhd.cc", 76 | "选集链接加后缀": "", 77 | "分析MacPlayer": "0", 78 | "是否开启手动嗅探": "0", 79 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos", 80 | "手动嗅探视频链接过滤词": ".html#=http" 81 | } -------------------------------------------------------------------------------- /TVBoxOSC/tvbox/XYQHiker/短剧屋.json: -------------------------------------------------------------------------------- 1 | { 2 | "规则名": "短剧屋", 3 | "规则作者": "", 4 | "请求头参数": "手机", 5 | "网页编码格式": "UTF-8", 6 | "图片是否需要代理": "0", 7 | "是否开启获取首页数据": "1", 8 | "首页推荐链接": "http://www.metaysw.com", 9 | "首页列表数组规则": "body&&.vod-vodlist", 10 | "首页片单列表数组规则": "li", 11 | "首页片单是否Jsoup写法": "1", 12 | "分类起始页码": "1", 13 | "分类链接": "http://www.metaysw.com/type/{cateId}-{catePg}.html", 14 | "分类名称": "短剧", 15 | "分类名称替换词": "lianxuju", 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 | "分类列表数组规则": ".vod-vodlist&&li", 38 | "分类片单是否Jsoup写法": "1", 39 | "分类片单标题": ".vod-vodlist__title&&Text", 40 | "分类片单链接": "a&&href", 41 | "分类片单图片": ".lazyload&&data-original", 42 | "分类片单副标题": ".pic-text&&Text", 43 | "分类片单链接加前缀": "http://www.metaysw.com", 44 | "分类片单链接加后缀": "", 45 | "搜索请求头参数": "User-Agent$手机", 46 | "搜索链接": "http://www.metaysw.com/search/page/{SearchPg}/wd/{wd}.html", 47 | "POST请求数据": "", 48 | "搜索截取模式": "1", 49 | "搜索列表数组规则": ".vod-vodlist&&li", 50 | "搜索片单是否Jsoup写法": "1", 51 | "搜索片单图片": ".lazyload&&data-original", 52 | "搜索片单标题": ".vod-vodlist__title&&Text", 53 | "搜索片单链接": "a&&href", 54 | "搜索片单副标题": ".pic-text&&Text", 55 | "搜索片单链接加前缀": "http://www.metaysw.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 | "演员详情": ".vod-content__detail&&p,2&&Text!主演:", 66 | "简介详情": "", 67 | "线路列表数组规则": ".dropdown-menu&&li", 68 | "线路标题": "a&&Text", 69 | "播放列表数组规则": "body&&.vod-content__playlist", 70 | "选集列表数组规则": "li", 71 | "选集标题链接是否Jsoup写法": "1", 72 | "选集标题": "a&&Text", 73 | "选集链接": "a&&href", 74 | "是否反转选集序列": "0", 75 | "选集链接加前缀": "http://www.metaysw.com", 76 | "选集链接加后缀": "", 77 | "分析MacPlayer": "0", 78 | "是否开启手动嗅探": "0", 79 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos", 80 | "手动嗅探视频链接过滤词": ".html#=http" 81 | } -------------------------------------------------------------------------------- /TVBoxOSC/tvbox/XYQHiker/骚火影视.json: -------------------------------------------------------------------------------- 1 | { 2 | "规则名": "骚火电影VIP", 3 | "规则作者": "", 4 | "请求头参数": "User-Agent$MOBILE_UA#Referer$https://saohuo.tv", 5 | "网页编码格式": "UTF-8", 6 | "图片是否需要代理": "0", 7 | "是否开启获取首页数据": "0", 8 | "首页推荐链接": "https://saohuo.tv/", 9 | "首页列表数组规则": "body&&.v_list", 10 | "首页片单列表数组规则": "li", 11 | "首页片单是否Jsoup写法": "1", 12 | "分类起始页码": "1", 13 | "分类链接": "https://saohuo.tv/list/{cateId}-{catePg}.html[firstPage=https://saohuo.tv/list/{cateId}.html]", 14 | "分类名称": "电影&电视剧&动漫", 15 | "分类名称替换词": "1&2&13", 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 | "分类列表数组规则": ".v_list&&li", 38 | "分类片单是否Jsoup写法": "1", 39 | "分类片单标题": "a&&title", 40 | "分类片单链接": "a&&href", 41 | "分类片单图片": "img&&data-original", 42 | "分类片单副标题": ".v_note&&Text", 43 | "分类片单链接加前缀": "https://saohuo.tv", 44 | "分类片单链接加后缀": "", 45 | "搜索请求头参数": "User-Agent$手机#Accept$text/html", 46 | "搜索链接": "https://saohuo.tv/s-{wd}---------{SearchPg}.html", 47 | "POST请求数据": "", 48 | "搜索截取模式": "1", 49 | "搜索列表数组规则": ".v_list&&li", 50 | "搜索片单是否Jsoup写法": "1", 51 | "搜索片单图片": "img&&data-original", 52 | "搜索片单标题": "a&&title", 53 | "搜索片单链接": "a&&href", 54 | "搜索片单副标题": ".v_note&&Text", 55 | "搜索片单链接加前缀": "https://saohuo.tv", 56 | "搜索片单链接加后缀": "", 57 | "链接是否直接播放": "0", 58 | "直接播放链接加前缀": "", 59 | "直接播放链接加后缀": "", 60 | "直接播放直链视频请求头": "", 61 | "详情是否Jsoup写法": "1", 62 | "类型详情": "", 63 | "年代详情": "", 64 | "地区详情": "", 65 | "演员详情": "", 66 | "简介详情": ".p_txt&&Text", 67 | "线路列表数组规则": ".from_list&&li", 68 | "线路标题": "Text", 69 | "播放列表数组规则": ".play_list&&li", 70 | "选集列表数组规则": "a", 71 | "选集标题链接是否Jsoup写法": "1", 72 | "选集标题": "a&&Text", 73 | "选集链接": "a&&href", 74 | "是否反转选集序列": "1", 75 | "选集链接加前缀": "https://saohuo.tv", 76 | "选集链接加后缀": "", 77 | "分析MacPlayer": "0", 78 | "是否开启手动嗅探": "0", 79 | "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos", 80 | "手动嗅探视频链接过滤词": ".html#=http" 81 | } -------------------------------------------------------------------------------- /TVBoxOSC/tvbox/spider.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/celin1286/Wogg-Series-URL/56761595da27cafb561363c6b7dcba7349d59510/TVBoxOSC/tvbox/spider.jar -------------------------------------------------------------------------------- /TVBoxOSC/tvbox/wex.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/celin1286/Wogg-Series-URL/56761595da27cafb561363c6b7dcba7349d59510/TVBoxOSC/tvbox/wex.jar -------------------------------------------------------------------------------- /TVBoxOSC/订阅链接.txt: -------------------------------------------------------------------------------- 1 | ★订阅链接★ 2 | 3 | 通用订阅链接: 4 | 5 | clan://localhost/TVBoxOSC/tvbox/api.json 6 | 7 | 影视(fongmi版)专用订阅链接: 8 | 9 | file://TVBoxOSC/tvbox/api.json 10 | 11 | 12 | 13 | ★本地包在线更新方式★ 14 | 15 | 1、点击“豆瓣|首页”选择“检查|更新” 16 | 2、根据个人喜好选择单线路或多线路 17 | 3、点击图标后会自动下载解压 18 | 4、更新完成后会有提示 19 | 5、最后重启软件即可 20 | -------------------------------------------------------------------------------- /_worker.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Welcome to Cloudflare Workers! This is your first worker. 3 | * 4 | * - Run "npm run dev" in your terminal to start a development server 5 | * - Open a browser tab at http://localhost:8787/ to see your worker in action 6 | * - Run "npm run deploy" to publish your worker 7 | * 8 | * Learn more at https://developers.cloudflare.com/workers/ 9 | */ 10 | 11 | const store = { 12 | }; 13 | const configUrl = 14 | "https://raw.githubusercontent.com/celin1286/xiaosa/main/url.json"; 15 | 16 | export default { 17 | async fetch(request, env, ctx) { 18 | try { 19 | const res = await fetch(configUrl); 20 | if (!res.ok) { 21 | throw new Error("获取地址配置失败"); 22 | } 23 | const ret = await res.json(); 24 | Object.assign(store, ret); 25 | } catch (e) { 26 | return new Response(e.message, { status: 400 }); 27 | } 28 | 29 | const url = new URL(request.url); 30 | const { pathname, search } = url; 31 | 32 | const temps = pathname.split("/").filter(Boolean); 33 | if (temps.length < 1) { 34 | //路径不包含site 35 | return new Response("Not Found", { status: 404 }); 36 | } 37 | //如果不是中文可以不需要解码 38 | const siteKey = decodeURIComponent(temps.shift()); 39 | 40 | const baseUrl = store[siteKey]; 41 | if (!baseUrl) { 42 | //找不到站点 43 | return new Response(`Not Found [${siteKey}]`, { status: 404 }); 44 | } 45 | return Response.redirect(`${baseUrl}/${temps.join("/")}${search}`, 301); 46 | }, 47 | }; 48 | -------------------------------------------------------------------------------- /buye.json: -------------------------------------------------------------------------------- 1 | { 2 | "libo": "https://libvio.mov", 3 | "ouge": "https://woog.nxog.eu.org", 4 | "xmi": "https://www.milvdou.fun", 5 | "duo": "https://tv.yydsys.cc", 6 | "labi": "http://feimaoai.site", 7 | "zhiz": "https://mihdr.top", 8 | "hub": "http://103.45.162.207:20720", 9 | "xiaf": "http://154.204.177.231", 10 | "wogg": "https://wogg.heshiheng.top", 11 | "muo": "http://123.666291.xyz", 12 | "star2": "https://1.star2.cn", 13 | "erxiao": "https://xhww.net", 14 | "dawanou": "http://149.88.87.18:6688", 15 | "woss": "https://woss.fenwe.eu.org", 16 | "baijia": "http://cj.jiexi.news", 17 | "sd": "http://1.95.79.193" 18 | } -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests>=2.31.0 2 | urllib3>=2.1.0 3 | -------------------------------------------------------------------------------- /url.json: -------------------------------------------------------------------------------- 1 | { 2 | "libo": "https://libvio.mov", 3 | "ouge": "https://woog.nxog.eu.org", 4 | "xiaomi": "https://www.milvdou.fun", 5 | "duoduo": "https://tv.yydsys.cc", 6 | "labi": "http://feimaoai.site", 7 | "zhizhen": "https://mihdr.top", 8 | "huban": "http://103.45.162.207:20720", 9 | "xiafan": "http://154.204.177.231", 10 | "wogg": "https://wogg.heshiheng.top", 11 | "mogg": "http://123.666291.xyz", 12 | "star2": "https://1.star2.cn", 13 | "erxiao": "https://xhww.net", 14 | "dawanou": "http://149.88.87.18:6688", 15 | "woss": "https://woss.fenwe.eu.org", 16 | "baijia": "http://cj.jiexi.news", 17 | "shandian": "http://1.95.79.193" 18 | } -------------------------------------------------------------------------------- /url.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import json 3 | import time 4 | import os 5 | import requests 6 | import warnings 7 | import re 8 | from urllib3.exceptions import InsecureRequestWarning 9 | 10 | warnings.simplefilter('ignore', InsecureRequestWarning) 11 | 12 | site_mappings = { 13 | '立播': 'libo', 14 | '欧哥': 'ouge', 15 | '小米': 'xiaomi', 16 | '多多': 'duoduo', 17 | '蜡笔': 'labi', 18 | '至臻': 'zhizhen', 19 | '木偶': 'mogg', 20 | '虎斑': 'huban', 21 | '下饭': 'xiafan', 22 | '玩偶': 'wogg', 23 | '星剧社': 'star2', 24 | '二小': 'erxiao', 25 | '大玩ou': 'dawanou', 26 | '玩偶叔叔': 'woss', 27 | '百家影音': 'baijia', 28 | '闪电': 'shandian' 29 | } 30 | 31 | buye_mappings = { 32 | '立播': 'libo', 33 | '欧哥': 'ouge', 34 | '小米': 'xmi', 35 | '多多': 'duo', 36 | '蜡笔': 'labi', 37 | '至臻': 'zhiz', 38 | '木偶': 'muo', 39 | '虎斑': 'hub', 40 | '下饭': 'xiaf', 41 | '玩偶': 'wogg', 42 | '星剧社': 'star2', 43 | '二小': 'erxiao', 44 | '大玩ou': 'dawanou', 45 | '玩偶叔叔': 'woss', 46 | '百家影音': 'baijia', 47 | '闪电': 'sd' 48 | } 49 | 50 | def test_url(url): 51 | try: 52 | response = requests.get(url.strip(), timeout=5, verify=False) 53 | return response.status_code == 200 54 | except: 55 | return False 56 | 57 | def get_best_url(urls): 58 | if not isinstance(urls, list): 59 | return urls.strip() 60 | 61 | if len(urls) == 1: 62 | return urls[0].strip() 63 | 64 | default_url = urls[0].strip() 65 | 66 | for i in range(0, len(urls), 2): 67 | test_urls = urls[i:i+2] 68 | for url in test_urls: 69 | if test_url(url): 70 | return url.strip() 71 | 72 | return default_url 73 | 74 | def get_star2_real_url(source_url): 75 | try: 76 | response = requests.get(source_url, timeout=5, verify=False) 77 | if response.status_code == 200: 78 | match = re.search(r'https?://[^"\'\s<>]+?star2\.cn[^"\'\s<>]*', response.text) 79 | if match: 80 | real_url = match.group(0).strip() 81 | print(f"从源站获取到星剧社真实链接: {real_url}") 82 | return real_url 83 | except Exception as e: 84 | print(f"获取星剧社真实链接失败: {str(e)}") 85 | return None 86 | 87 | def process_urls(existing_urls): 88 | url_data = {} 89 | buye_data = {} 90 | 91 | try: 92 | if not os.path.exists('yuan.json'): 93 | print("yuan.json 文件不存在") 94 | return False 95 | 96 | with open('yuan.json', 'r', encoding='utf-8') as f: 97 | yuan_data = json.load(f) 98 | 99 | base_data = {} 100 | for cn_name, urls in yuan_data.items(): 101 | if urls: 102 | if cn_name == '星剧社': 103 | source_url = get_best_url(urls if isinstance(urls, list) else [urls]) 104 | if source_url: 105 | real_url = get_star2_real_url(source_url) 106 | if real_url: 107 | base_data[cn_name] = real_url 108 | print(f"添加 {cn_name} 链接: {real_url}") 109 | elif cn_name in site_mappings and site_mappings[cn_name] in existing_urls: 110 | base_data[cn_name] = existing_urls[site_mappings[cn_name]] 111 | print(f"保持 {cn_name} 原有链接") 112 | else: 113 | best_url = get_best_url(urls if isinstance(urls, list) else [urls]) 114 | if best_url: 115 | base_data[cn_name] = best_url 116 | print(f"添加 {cn_name} 链接: {best_url}") 117 | elif cn_name in site_mappings and site_mappings[cn_name] in existing_urls: 118 | base_data[cn_name] = existing_urls[site_mappings[cn_name]] 119 | print(f"保持 {cn_name} 原有链接") 120 | 121 | for cn_name, url in base_data.items(): 122 | if cn_name in site_mappings: 123 | url_data[site_mappings[cn_name]] = url 124 | if cn_name in buye_mappings: 125 | buye_data[buye_mappings[cn_name]] = url 126 | 127 | if url_data: 128 | with open('url.json', 'w', encoding='utf-8') as f: 129 | json.dump(url_data, f, ensure_ascii=False, indent=2) 130 | with open('buye.json', 'w', encoding='utf-8') as f: 131 | json.dump(buye_data, f, ensure_ascii=False, indent=2) 132 | print(f"成功更新 url.json 和 buye.json") 133 | return True 134 | 135 | print("没有新的有效数据") 136 | return False 137 | 138 | except Exception as e: 139 | print(f"处理出错: {str(e)}") 140 | return False 141 | 142 | def main(): 143 | print("开始更新 URL...") 144 | 145 | existing_urls = {} 146 | try: 147 | if os.path.exists('url.json'): 148 | with open('url.json', 'r', encoding='utf-8') as f: 149 | existing_urls = json.load(f) 150 | except Exception as e: 151 | print(f"读取 url.json 失败: {str(e)}") 152 | 153 | if process_urls(existing_urls): 154 | print("更新完成") 155 | else: 156 | print("更新失败,保持文件不变") 157 | 158 | if __name__ == "__main__": 159 | main() 160 | -------------------------------------------------------------------------------- /yuan.json: -------------------------------------------------------------------------------- 1 | { 2 | "立播": [ 3 | "https://libvio.mov", 4 | "https://www.libvio.cc", 5 | "https://libvio.la", 6 | "https://libvio.pro", 7 | "https://libvio.fun", 8 | "https://libvio.me", 9 | "https://libvio.in", 10 | "https://libvio.site", 11 | "https://libvio.art", 12 | "https://libvio.vip", 13 | "https://libvio.pw", 14 | "https://libvio.link" 15 | ], 16 | "欧哥": [ 17 | "https://woog.nxog.eu.org" 18 | ], 19 | "小米": [ 20 | "https://www.milvdou.fun", 21 | "https://www.mucpan.cc", 22 | "https://mucpan.cc", 23 | "http://milvdou.fun", 24 | "https://xiaomi.628383.xyz", 25 | "http://156.238.229.163" 26 | ], 27 | "多多": [ 28 | "https://tv.yydsys.top", 29 | "https://tv.yydsys.cc", 30 | "https://tv.214521.xyz" 31 | ], 32 | "蜡笔": [ 33 | "http://feimaoai.site", 34 | "http://www.labi88.sbs", 35 | "https://feimao666.fun", 36 | "http://feimao888.fun" 37 | ], 38 | "至臻": [ 39 | "https://mihdr.top", 40 | "http://xiaomi666.fun", 41 | "http://www.miqk.cc", 42 | "https://xiaomiai.site" 43 | ], 44 | "虎斑": [ 45 | "http://103.45.162.207:20720" 46 | ], 47 | "下饭": [ 48 | "http://154.204.177.231", 49 | "http://www.xn--ghqy10g1w0a.xyz" 50 | ], 51 | "玩偶": [ 52 | "https://wogg.xxooo.cf", 53 | "https://wogg.333232.xyz", 54 | "https://woggpan.333232.xyz", 55 | "https://wogg.heshiheng.top", 56 | "https://www.wogg.one", 57 | "https://www.wogg.lol" 58 | ], 59 | "木偶": [ 60 | "http://123.666291.xyz", 61 | "https://mogg.5568.eu.org", 62 | "https://mo.91muou.icu", 63 | "https://mo.666291.xyz", 64 | "https://mo.muouso.fun" 65 | ], 66 | "星剧社": [ 67 | "https://mlink.cc/520TV" 68 | ], 69 | "二小": [ 70 | "https://xhww.net", 71 | "http://2xiaopan.fun", 72 | "https://erxiaofn.click", 73 | "https://erxiaofn.site", 74 | "https://www.xhww.net", 75 | "https://xiaoer.5568.eu.org", 76 | "http://wexfnw.999888456.xyz", 77 | "http://89.213.49.249" 78 | ], 79 | "大玩ou": [ 80 | "http://149.88.87.18:6688" 81 | ], 82 | "玩偶叔叔": [ 83 | "https://woss.fenwe.eu.org" 84 | ], 85 | "百家影音": [ 86 | "http://cj.jiexi.news", 87 | "https://baijia.885525.xyz" 88 | ], 89 | "闪电": [ 90 | "http://1.95.79.193", 91 | "http://1.95.79.193:666" 92 | ] 93 | } 94 | -------------------------------------------------------------------------------- /单线路.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/celin1286/Wogg-Series-URL/56761595da27cafb561363c6b7dcba7349d59510/单线路.zip --------------------------------------------------------------------------------