利用模板Q>一键制作你懂的任意视频规则(无需懂写任何代码)

第一步:下载海阔最新版

https://haikuo.lanzoui.com/u/GoldRiver

 

第二步:导入 模板Q>并打开

海阔视界规则分享,当前分享的是:小程序¥home_rule¥{"last_chapter_rule":"","title":"模板·Q","author":"发粪涂墙","url":"hiker://empty","version":9,"col_type":"text_center_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nif (getItem(\"start\", \"\") == \"\") {\n    setItem(\"start\", \"1\")\n    confirm({\n        title: '温馨提示',\n        content: '请勿删除或改名此模板,以免依赖此模板的小程序无法使用!!\\n并特别感谢 Reborn LoyDgIk大佬的技术支持!!!',\n        confirm: '',\n        cancel: 'refreshPage()'\n    })\n}\n\naddListener(\"onClose\", $.toString(() => {\n    clearVar(\"template-url\")\n    clearVar(\"template-search-url\")\n    clearVar(\"template-pages-unfold\")\n}))\n\nlet d2 = [{\n    desc: \"输入分类或详情页链接测试匹配\",\n    col_type: \"input\",\n    url: \"input\",\n    title: \"测试\",\n    extra: {\n        onChange: \"putVar('template-url',input)\"\n    }\n},{\n    desc: \"输入搜索链接,**为关键字占位符\",\n    col_type: \"input\",\n    url: \"input\",\n    title: \"测试搜索\",\n    extra: {\n        titleVisible: false,\n        defaultValue: getVar(\"template-search-url\"),\n        onChange: \"putVar('template-search-url',input)\"\n    }\n}, {\n    desc: \"输入搜索关键词测试匹配\",\n    col_type: \"input\",\n    url: $.toString((ruleTitle)=>{\n            return \"hiker://search?s=\" + input +  \"&rule=\"+ ruleTitle;\n    }, MY_RULE.title),\n    title: \"测试搜索\",\n}, {\n    title: \"生成规则\",\n    col_type: \"text_center_1\",\n    url: \"input://请输入规则名.js:\" + $.toString(() => {\n        var url = getVar('template-url', \"\");\n        if (url.length <= 0 || input.length <= 0) {\n            return \"toast://请先输入链接和规则名\"\n        }\n        var rule = {\n            \"last_chapter_rule\": \"\",\n            \"title\": input,\n            \"author\": \"\",\n            \"url\": url,\n            \"version\": 0,\n            \"col_type\": \"movie_3\",\n            \"class_name\": \"\",\n            \"class_url\": \"\",\n            \"area_name\": \"\",\n            \"area_url\": \"\",\n            \"sort_name\": \"\",\n            \"year_name\": \"\",\n            \"sort_url\": \"\",\n            \"year_url\": \"\",\n            \"find_rule\": \"js:\\nconst {\\n    autoPage\\n} = $.require(\\\"hiker://page/auto?rule=模板·Q\\\");\\nautoPage(getResCode())\",\n            \"search_url\": getVar(\"template-search-url\"),\n            \"titleColor\": \"\",\n            \"group\": \"测试\",\n            \"searchFind\": \"js:\\nconst {\\n    autoPage\\n} = $.require(\\\"hiker://page/auto?rule=模板·Q\\\");\\nautoPage(getResCode())\",\n            \"detail_col_type\": \"movie_1\",\n            \"detail_find_rule\": \"js:\\n//通用匹配\\nputVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    for (var i in urls) {\\n        if (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)) {\\n            //fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('动态解析中,请稍候');'x5Rule://'+input+'@' + getVar('_x5')\\\";\\nconst {\\n    autoPage\\n} = $.require(\\\"hiker://page/auto?rule=模板·Q\\\");\\nautoPage(getResCode())\",\n            \"sdetail_col_type\": \"movie_1\",\n            \"sdetail_find_rule\": \"*\",\n            \"ua\": \"mobile\",\n            \"preRule\": \"\",\n            \"pages\": \"[]\"\n        };\n        return \"海阔视界规则分享,当前分享的是:小程序¥home_rule¥\" + JSON.stringify(rule)\n    })\n},{\ntitle: '文字教程',\ncol_type: 'text_2',\nurl: 'hiker://page/detail?rule=视界论坛R',\nextra: {\n    url: 'https://haikuoshijie.cn/topic/8440#fypage#noHistory#',\n},\n// url: 'web://https://haikuoshijie.cn/topic/8440'\n},{\ntitle: '视频教程',\ncol_type: 'text_2',\nurl: $(\"https://www.bilibili.com/video/BV1dM4y1g7re?share_source=copy_web\").lazyRule(() => {\n        showLoading(\"强力嗅探中,请稍候……\")\n        let inputValue = input\n        return $(inputValue).x5Lazy(() => {\n            var urls = _getUrls()\n            /**\n             * exceptKeys 是排除的关键字列表\n             */\n            var exceptKeys = [\"m3u8djksiej\", \"playm3u8\", \"m3u8.tv\", \"min.css\"]\n            /**\n             * searchKeys 是匹配的关键字列表\n             */\n            var searchKeys = [\".mp3\", \".mp4\", \".m3u8\", \".flv\", \".avi\", \".3gp\", \"mpeg\", \".wmv\", \".mov\", \"rmvb\", \".dat\", \"qqBFdownload\", \"mime=video%2F\"]\n            fy_bridge_app.log(JSON.stringify(urls))\n            for (var i in urls) {\n                if (exceptKeys.every((key)=> !urls[i].includes(key)) \n                    && searchKeys.some((key)=> urls[i].includes(key))\n                    ) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    })\n// url: 'web://https://www.bilibili.com/video/BV1dM4y1g7re?share_source=copy_web'\n},{\ntitle: getVar('template-pages-unfold', 'false') === 'true'? '点我收缩模板列表': '点我展开模板列表',\ncol_type: 'text_center_1',\nurl: $(\"#noLoading#\").lazyRule((pageUnfold) => {\n     putVar('template-pages-unfold', pageUnfold === 'true' ? 'false' : 'true')\nrefreshPage(false)\nreturn 'toast://' + (getVar('template-pages-unfold', 'false') === 'true'? '展开成功': '收缩成功')\n}, getVar('template-pages-unfold', 'false'))\n},{\ntitle: '如果上面的测试通过能显示图片,那么就说明是可以生成规则的,依次填入分类链接与搜索链接,第三个框留空点击生成规则,填好名字即可,详细添加分类词之类的请点击上面的两个教程链接参考!!',\ncol_type: 'rich_text'\n}]\nif(getVar('template-pages-unfold', 'false') === 'true') {\nlet d = []\nd.push({\n    title: '点击模板可查看代码:',\n    col_type: 'rich_text'\n})\nlet pageList = MY_RULE.pageList.filter(page => page.name != '字符串处理工具'\n&& page.name != '#Mapping'\n&& page.name != '#auto')\nfor (let page of pageList) {\n    d.push({\n        title: page.name,\n        col_type: 'text_2',\n        url: $().rule((page) => {\n            const {\n                htmlEscape\n            } = $.require(\"hiker://page/stringtool\");\n            let d = []\n            d.push({\n                title: htmlEscape(page.rule),\n                col_type: 'rich_text'\n            })\n            setResult(d)\n        }, page)\n    })\n}\nd2.push.apply(d2, d)\n}\nsetResult(d2)","search_url":"hiker://empty#**#fypage.js: let surl =  getVar(\"template-search-url\");;let insplits=input.split(\"#\");;let url = surl.replace(base64Decode(\"Kio=\"), insplits[1]).replace(base64Decode(\"ZnlwYWdl\"), insplits[2]);;url;;","group":"模板规则","searchFind":"js:\n/*let surl =  getVar(\"template-search-url\")\nlog(\"surl=\"+surl)\nlet insplits=MY_URL.split(\"#\")\nlog(insplits)\nlet url = surl.replace(\"**\", insplits[1]).replace(\"fypage\", insplits[2])\nlog(\"url=\"+url)\nlet html=request(url,{})\nlog(html);\nlog(MY_URL)*/\nvar lazy = '';\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","detail_col_type":"movie_3","detail_find_rule":"js:\nvar lazy = '';\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\\nfor (var j in list) {\\n    d.push({\\n        title: parseDomForHtml(list[j], 'a&&title'),\\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\\n        img: parseDom(list[j], '.lazyload||a&&data-original')+'@Referer=',\\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级.b\",\"path\":\".b\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\n\\nvar tabs = [];\\nvar conts = parseDomForArray(html, 'body&&.b');\\nvar lists = [];\\nfor (var i in conts) {\\n    tabs.push(parseDomForHtml(conts[i], 'h3&&Text'))\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n    title: parseDomForHtml(html, '.stui-content__detail--h1&&Text').replace('地区', '\\\\n地区').replace('主演', '\\\\n主演'),\\n    desc: parseDomForHtml(html, '.desc||.detail-content&&Text'),\\n    pic_url: parseDom(html, '.lazyload&&data-original'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n        for (var i = 0; i < tabs.length; i++) {\\n            var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!'\\\";\\n            d.push({\\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n                url: url,\\n                col_type: 'flex_button'\\n            })\\n        }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空,可能匹配错误\\\"\\nfor (var j in list) {\\n    d.push({\\n        title: parseDomForHtml(list[j], 'a&&title'),\\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\\n        img: parseDom(list[j], 'a&&data-original'),\\n        content: parseDomForHtml(list[j], '.detail--h3&&Text'),\\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var d = [];\\n\\nparseDomForArray(getResCode(), '.myui-vodlist&&li').forEach(list => {\\n  d.push({\\n       title: parseDomForHtml(list, 'h4&&Text'),\\n       desc: parseDomForHtml(list, '.pic-tag||.pic-text&&Text'),\\n       pic_url: parseDom(list, '.lazyload&&data-original')+'@Referer=',\\n       url: parseDom(list,'a&&href')+'#immersiveTheme#'\\n  });\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"\\nvar d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\n\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n    title: parseDomForHtml(html, '.data,0&&Text').replace('地区:', '  ').replace('年份:', '  ') + '\\\\n' + parseDomForHtml(html, '.data,1&&Text').substring(0, 15) + '\\\\n' + parseDomForHtml(html, '.data,2&&Text'),\\n    desc: parseDomForHtml(html, '.data,3&&Text'),\\n    pic_url: parseDom(html, '.lazyload&&data-original'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nvar tabs = [];\\nvar lists = [];\\nif (!arts || !conts) {\\n    var arts = parseDomForArray(html, '.nav-tabs&&a');\\n    //log(arts);\\n\\n    for (var i in arts) {\\n        tabs.push(parseDomForHtml(arts[i], 'Text'))\\n    }\\n    var conts = parseDomForArray(html, 'body&&.myui-content__list||.b');\\n   // log(conts);\\n   \\n    for(let item of conts) {\\n        lists.push(parseDomForArray(item, 'ul&&li'));\\n    }\\n}\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href')+lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n    setTabs(tabs, MY_URL);\\n    setLists(lists, getVar(MY_URL, '0'));\\n    \\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var d = [];\\r\\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空,可能匹配错误\\\"\\r\\nfor (var j in list) {\\r\\n    d.push({\\r\\n        title: parseDomForHtml(list[j], 'a&&title'),\\r\\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\\r\\n        pic_url: parseDom(list[j], 'a&&data-original'),\\r\\n        content: parseDomForHtml(list[j], '.detail--h4&&Text'),\\r\\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\\r\\n    })\\r\\n}\\r\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'a&&title'),\\n       desc: parseDomForHtml(list[j], 'a&&Text'),\\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\\n       url: parseDom(list[j],'a&&href')\\n  });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\n\\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace('[推荐]', ''))\\n}\\n\\nvar conts = parseDomForArray(html, 'body&&.sort-item');\\n\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'body&&Text');\\n\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n    title: parseDomForHtml(html, '.video-info-items,2&&Text').replace('分类|', '').replace('地区:', '').replace('年份:', ' ').substring(0, 18) + '\\\\n' + '\\\\n' + parseDomForHtml(html, '.video-info-items,1&&Text').substring(0, 18),\\n    pic_url: parseDom(html, '.lazyload&&data-src'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\n    setTabs(tabs, MY_URL);\\n    setLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\n\\nvar arts = parseDomForArray(html,'.nav-tabs&&a');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\n\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist||.b');\\nvar lists =[];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n title: parseDomForHtml(getResCode(), 'p,1&&Text').replace('类型:','').replace('地区:',' ').replace('年份:','').replace('语言:','')+ '\\\\n\\\\n'+parseDomForHtml(getResCode(), 'p,4&&Text').substring(0, 30),\\n    desc:parseDomForHtml(getResCode(), 'p,2&&Text'),\\n pic_url: parseDom(html, '.lazyload&&data-original'),\\n url: fm,\\n col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n        for (var i = 0; i < tabs.length; i++) {\\n            var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!'\\\";\\n            d.push({\\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n                url: url,\\n                col_type: 'flex_button'\\n            })\\n        }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"定位二级\",\"path\":\"erji\",\"rule\":\"var tabs = [];\\nvar lists = [];\\n\\nvar arts = parseDomForArray(html, 线路);\\nvar conts = parseDomForArray(html, 选集);\\n\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 线路名))\\n}\\n\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 选集列表))\\n}\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\ntry {\\n    setTabs(tabs, MY_URL);\\n    setLists(lists, getVar(MY_URL, '0'));\\n} catch (e) {}\"},{\"col_type\":\"movie_3\",\"name\":\"二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\ntry {\\nd.push({\\n    title: parseDomForHtml(html, '.remarks&&Text') + '\\\\n' + parseDomForHtml(html, '.s-top-info-detail&&a&&Text')+ parseDomForHtml(html, '.s-top-info-detail&&a,1&&Text')+ parseDomForHtml(html, '.s-top-info-detail&&a,2&&Text') + '\\\\n““简介:不能用就删掉吧””',\\n    desc: parseDomForHtml(html, '.desc_txt&&Text').substring(0, 20),\\n    img: parseDom(html, '.img-cover||.vod-detail-bj&&src'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n} catch (e) {}\\n\\nvar arts = parseDomForArray(html, '.play_source_tab&&a');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\nvar conts = parseDomForArray(html, 'body&&#playsx');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n        for (var i = 0; i < tabs.length; i++) {\\n            var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!'\\\";\\n            d.push({\\n                title: (getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i]).replace('',''),\\n                url: url,\\n                col_type: 'flex_button'\\n            })\\n        }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nvar arts = parseDomForArray(html, 'body&&.fed-drop-btns');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\\n}\\nd.push({\\n    title: parseDomForHtml(html, 'dd&&li,3&&Text') + '\\\\n' + parseDomForHtml(html, 'dd&&li,4&&Text').substring(0, 15) + '\\\\n' + parseDomForHtml(html, 'dd&&li,5&&Text').substring(0, 15),\\n    desc: parseDomForHtml(html, 'dd&&li,6&&Text').substring(0, 25),\\n    pic_url: parseDom(html, '.fed-lazy&&data-original'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索dl\",\"path\":\"dl\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 'body&&dl');\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空,可能匹配错误\\\"\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'h1&&Text'),\\n       desc: parseDomForHtml(list[j], '.fed-list-remarks&&Textt'),\\n\\t    content: parseDomForHtml(list[j], '.fed-part-esan--span&&Text'),\\n       img: parseDom(list[j], 'a&&data-original'),\\n       url: parseDom(list[j], 'a&&href')\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key + \\\"?rule=模板·Q\\\");\\n    // log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping?rule=模板·Q\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if(pageRules.length == 0) {\\n        log(\\\"暂无合适的模板\\\");\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配:\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功,正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板,暂无合适的模板\\\");\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var d =[];\\nvar list = parseDomForArray(getResCode(), 'body&&.pack-ykpack');\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'a&&title'),\\n       desc: parseDomForHtml(list[j], 'span,-1&&Text'),\\n       img: parseDom(list[j], '.eclazy&&data-original')+'@Referer=',\\n       url: parseDom(list[j],'a&&href')+ '#immersiveTheme#'\\n  });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"一级module-items\",\"path\":\"module-items\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nvar list = parseDomForArray(html, '.module-items&&.module-item');\\nfor (var j in list) {\\n    d.push({\\n        title: parseDomForHtml(list[j], 'a&&title'),\\n        desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\\n        pic_url: parseDom(list[j], 'img||.lazy&&data-src')+'@Referer=',\\n        url: parseDom(list[j], 'a&&href') + \\\"#immersiveTheme#\\\"\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\ntry {\\nvar title = parseDomForArray(html, 'body--a&&.tag-link');\\n} catch (e) {\\n  var title = '';\\n}\\nvar T = [];\\nfor (var i in title) {\\n    T.push(parseDomForHtml(title[i], 'a&&Text'))\\n}\\nd.push({\\n    title: T.join('  ') + '\\\\n' + parseDomForHtml(html, '.video-info-items,1&&Text').split('/').join('  ').substring(0, 20) + '\\\\n' + parseDomForHtml(html, '.video-info-items&&Text').split('/').join('  ').substring(0, 20),\\n    desc: parseDomForHtml(html, '.video-info-items,2&&Text'),\\n    img: parseDom(html, '.lazyload&&data-src'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nvar des_desc = parseDomForHtml(html, '.vod_content--a&&Text');\\nif (des_desc.length > 50) {\\n    des_desc = des_desc.replace(des_desc, des_desc.substring(0, 50) + \\\"......\\\");\\n}\\nd.push({\\n    title: des_desc,\\n    col_type: 'long_text'\\n});\\n\\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\\n}\\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\n\\nfunction setTabs(tabs, vari) {\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\n\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘选集’’',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        for (var j = list.length - 1; j >= 0; j--) {\\n            d.push({\\n                title: parseDomForHtml(list[j], 'a&&Text'),\\n                url: parseDom(list[j], 'a&&href') + lazy,\\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\\n            });\\n        }\\n    } else {\\n        for (var j = 0; j < list.length; j++) {\\n            d.push({\\n                title: parseDomForHtml(list[j], 'a&&Text'),\\n                url: parseDom(list[j], 'a&&href') + lazy,\\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\\n            });\\n        }\\n    }\\n}\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\n\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空,可能匹配错误\\\"\\nfor (var j in list) {\\n    d.push({\\n        title: parseDomForHtml(list[j], 'h3&&Text'),\\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\\n        img: parseDom(list[j], 'img&&data-src'),\\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\\n    });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"一级item\",\"path\":\"item\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 'body&&.item');\\nfor (let i in list) {\\n    d.push({\\n        title: parseDomForHtml(list[i], 'img&&alt'),\\n        desc: parseDomForHtml(list[i], 'p&&Text'),\\n        pic_url: parseDom(list[i], 'img&&src'),\\n        url: parseDom(list[i], 'a&&href'),\\n        col_type: 'movie_3'\\n    })\\n}\\nsetResult(d)\"},{\"name\":\"一级data_list\",\"path\":\"data_list\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), '#data_list&&li');\\nfor (let i in list) {\\n    d.push({\\n        title: parseDomForHtml(list[i], 'a&&title'),\\n        desc: parseDomForHtml(list[i], 'em&&Text'),\\n        pic_url: parseDom(list[i], 'img&&data-src'),\\n        url: parseDom(list[i], 'a&&href'),\\n        col_type: 'movie_3'\\n    })\\n}\\nsetResult(d)\"},{\"name\":\"二级h3\",\"path\":\"h3\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc:'330&&float',\\n\\t\\tcol_type: 'x5_webview_single'\\n});\\n\\nvar arts = parseDomForArray(html,'body&&.stui-pannel:has(.stui-content__playlist)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\\n}\\n\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists =[];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n\\ttitle: parseDomForHtml(html, '.data,2&&Text').replace('类型:','').replace('地区:','').replace('年份:',' ').substring(0, 18)+ '\\\\n' + parseDomForHtml(html,'.data,1&&Text').substring(0, 15)+'\\\\n'+parseDomForHtml(html, '.data&&Text').substring(0, 15),\\n\\tdesc:parseDomForHtml(html,'.detail-sketch||.data,3||#desc&&Text'),\\n\\tpic_url: parseDom(html, '.lazyload&&data-original'),\\n\\turl: fm,\\n\\tcol_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), '.fed-list-info&&li');\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], '.fed-list-title&&Text'),\\n       desc: parseDomForHtml(list[j], '.fed-text-center&&Text'),\\n       img: parseDom(list[j], 'a&&data-original')+'@Referer=',\\n       url: parseDom(list[j], 'a&&href')\\n  });\\n}\\nsetResult(d)\"},{\"name\":\"二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nd.push({\\n    desc:'330&&float',\\n\\t\\tcol_type: 'x5_webview_single'\\n});\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n    title: parseDomForHtml(html, '.data,0&&Text').replace('地区:', '  ').replace('年份:', '  ') + '\\\\n' + parseDomForHtml(html, '.data,1&&Text').substring(0, 15) + '\\\\n' + parseDomForHtml(html, '.data,2&&Text'),\\n    desc: parseDomForHtml(html, '.data,3&&Text'),\\n    pic_url: parseDom(html, '.lazyload&&data-original'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nvar arts = parseDomForArray(html, 'body&&.myui-panel-box:has(.myui-content__list)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\\n}\\n\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\n\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功!';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text'),\\n            url: parseDom(list[j], 'a&&href')+lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\ntry {\\n    setTabs(tabs, MY_URL);\\n    setLists(lists, getVar(MY_URL, '0'));\\n} catch (e) {}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"字符串处理工具\",\"path\":\"stringtool\",\"rule\":\"js:\\nconst matchList  = {\\n  // \\\"<\\\":\\\"&lt;\\\",\\n  // \\\">\\\": \\\"&gt;\\\",\\n  // \\\"&\\\": \\\"&amp;\\\",\\n  // '\\\"': \\\"&quot;\\\",\\n  // \\\"'\\\": \\\"acute;\\\",\\n  \\\" \\\": \\\"&nbsp;\\\",\\n  \\\"\\\\n\\\":\\\"<br>\\\"\\n}\\n// 字符过滤器\\nfunction htmlEscape(text){\\n  let regStr = '(' + Object.keys(matchList).toString() + ')'\\n  regStr = regStr.replace(/,/g, ')|(')  \\n  const regExp = new RegExp(regStr, 'g')\\n  return text.replace(regExp, match => matchList[match])\\n}\\n$.exports.htmlEscape = htmlEscape\"}]","icon":""}

第三步:打开 88影视网

https://m.88kan.tv

点导航我们看到电影,电视剧,综艺,动漫

点击电影>筛选,依次点击动作片,2021,大陆,热门。然后拉到最下面点击下一页

得到网址

https://m.88kan.tv/vod-list-id-5-pg-2-order--by-hits-class-0-year-2021-letter--area-大陆-lang-.html

 

第三步:复制

https://m.88kan.tv/vod-list-id-5-pg-2-order--by-hits-class-0-year-2021-letter--area-大陆-lang-.html

到>模板Q>第一个输入框

 

搜索源码

<form action="/search/" method="post" > <div class="searchFormCon globalPadding"> <p class="pSearchForm"> <input type="text" class="searchTxt searchTxtBlur ac_input" name="wd" id="wd" autocomplete="off" value="" placeholder="请在此处输入影片片名或演员名称。"><input type="submit" value="" class="searchBtn" οnclick="var i = document.getElementById('wd');if(i.value==''){alert('请在输入影片片名或演员名称。');i.focus();return false;}searchM.submitSearch=function(){};"><i class="clearSearchBtn" style="display:none;"><em></em></i> </p> </div> </form>

搜索代码

https://m.88kan.tv/search/?wd=**;POST

写法说明

网站链接  https://m.88kan.tv

提取 action="/search/" 中的 /search/

合并就是  https://m.88kan.tv/search/

 

提取(提取参数有 ?  请用两个中文  ??  代替)

action="?search/" 中的   ?search/

合并就是  https://m.88kan.tv??search/

 

name="wd"  提取 wd 并在前面加上 ?

后面加上      =**

特别说明  **  代表搜索关键词  

?wd=**

后面用  ;  连接 POST 模式  GBK 编码

;POST;GBK

关于编码必看(不写如果没数据就写 GBK)

查看网页源码 <meta charset="utf-8">

绿色的 utf-8 可以不写

如果是其他字符,统一写成  GBK

 

特别说明,如果没数据,后面添加

;{User-Agent@Windows&&Cookie@id}

说明:

默认 Windows 没数据写成 Android

阅读,海阔,异次元,已经支持了

 

第四步:点击 测试 无错就点击    生成规则

任意输入名称(比如  88影视) 点击 确认        立即导入

 

第五步:点击右上角>长按刚才生成的规则(比如  88影视)>点击编辑规则

第六步:找到小程序链接并将输入框中的

https://m.88kan.tv/vod-list-id-5-pg-2-order--by-hits-class-0-year-2021-letter--area-大陆-lang-.html

按照图片替换一下

这个可以替换成

https://m.88kan.tv/vod-list-id-12-pg-fypage-order--by-fysort-class-fyclass-year-fyyear-letter--area-fyarea-lang-.html

特别说明

下一页

fypage

 

分类

fyclass

 

年代

fyyear

 

语言

fyarea

 

排行方式

fysort

 

它们的写法都可以>比如年代

说明:每个都用 &  分割

替换词比名称少的前面必须添加 &

年代&2021&2020
&2021&2020

 

链接

https://m.88kan.tv/guochanju/202110/122152.html

第七步:找到>二级列表解析规则

如果你啥也不会,请把二级列表解析规则留空

一般推荐吧二级列表解析规则写成(一般可以提取集数)

二级列表显示样式  text_3    左右显示

body&&li;a&&Text;*;*;a&&href

懂点的推荐写成(可以免嗅)

粘贴方式>长按>选择 以纯文本形式粘贴

js:
var d = [];

//列表接口
var 列表 = “body&&li”;
var 标题 = “a&&Text”;
var 简介 = “”;
var 图片 = “”;
var 地址 = “a&&href”;

//以下代码,如非必要请勿修改
var list = parseDomForArray(getResCode(), 列表);
for (var i in list) {
d.push({
title: parseDomForHtml(list[i], 标题),
desc: parseDomForHtml(list[i], 简介),
pic_url: parseDom(list[i], 图片),
url: parseDom(list[i], 地址)+’@lazyRule=.playerall&&script&&Html.js:eval(input);url’,
col_type: ‘text_3’
});
}
setResult(d);

关于自动嗅探代码说明(不同的网站代码不同,详细请看网站源码)

@lazyRule=.playerall&&script&&Html.js:eval(input);url

这里的url主要看

比如

https://m.88kan.tv/vod-play-id-163764-src-1-num-1.html

源码中的

<div class="playerall"><div class="player"><script>var vid="57494";var vfrom="0";var vpart="0";var url="https://vod8.wenshibaowenbei.com/20211108/zQo4Dy4s/index.m3u8";var pn="bdym3u8"; var next="";var prePage="/play/57494-0-0.html";var nextPage="/play/57494-0-0.html";</script>

中的 url  另外获取到的链接不能是加密的

 

第六步:打开刚才生成的规则,分类页和详情页就基本上可以了。

 

最后说明(参数可以是任意值)

url: '参数'+parseDom(list[i], 地址)+'参数',

 

像以下代码的

<div class="detailPosterIntro1 globalPadding clearfix" style="height:auto;"><script>var mac_flag='play',mac_link='/vod-play-id-163764-src-{src}-num-{num}.html', mac_name='最近,妹妹的样子有点怪',mac_from='tkm3u8',mac_server='no',mac_note='',mac_url=unescape('HD%24https%3A%2F%2Fv7.dious.cc%2F20210512%2Fe8Otnrao%2Findex.m3u8'); </script>

写成

@lazyRule=.detailPosterIntro1&&script&&Html.js:eval(input);mac_url

会有多余参数 自行到 http://hm46148.j.h57.site/?thread-119.htm

查看提取和修改方法

 

正规影视的需要自行写二级解析规则,就是修改  二级列表解析规则

教程

http://hm46148.j.h57.site/?thread-118.htm

 

最后给出 88影视小程序

海阔视界规则分享,当前分享的是:小程序¥home_rule¥{"last_chapter_rule":"","title":"88影视","author":"","url":"https://m.88kan.tv/vod-list-id-5-pg-2-order--by-hits-class-0-year-2021-letter--area-大陆-lang-.html","version":0,"col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://m.88kan.tv/search/?wd=**;post","group":"测试","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\n\n//列表接口\nvar 列表 = \"body&&li\";\n      var 标题 = \"a&&Text\";\n      var 简介 = \"\";\n      var 图片 = \"\";\n      var 地址 = \"a&&href\";\n\n\n//以下代码,如非必要请勿修改\nvar list = parseDomForArray(getResCode(), 列表);\nfor (var i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], 标题),\n        desc: parseDomForHtml(list[i], 简介),\n        pic_url: parseDom(list[i], 图片),\n        url: parseDom(list[i], 地址)+'@lazyRule=.detailPosterIntro1&&script&&Html.js:eval(input);mac_url',\n        col_type: 'text_3'\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""}
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值