From 4d763d3dbc82096ad4a8c01971fbef0961e6901f Mon Sep 17 00:00:00 2001
From: Liu <18409283+ls125781003@users.noreply.github.com>
Date: Sun, 17 May 2026 01:33:29 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
OK/api.json | 1633 ------------------------
OK/spider.jar | Bin 22766 -> 0 bytes
南风/api.json | 118 +-
南风/api/drpy2.min.js | 7 +-
南风/api/模板.js | 398 +++---
南风/jars/弹幕.jar | Bin 1305627 -> 1085363 bytes
南风/json/嗷呜动漫.json | 86 --
小虎斑/api.json | 18 +-
摸鱼儿/api.json | 308 ++---
摸鱼儿/spider.jar | Bin 1618196 -> 67222 bytes
欧歌/api.json | 36 +-
欧歌/jars/豆瓣1.jar | Bin 131403 -> 0 bytes
潇洒/api.json | 128 +-
潇洒/spider.jar | Bin 2007316 -> 2007316 bytes
王二小/lives/综合直播.txt | 1586 +++++++++++++----------
肥猫/api.json | 12 +-
肥猫/js/兔小贝.js | 2 +-
肥猫/lives/develop202.txt | 130 +-
肥猫/spider.jar | Bin 855024 -> 832666 bytes
饭太硬/api.json | 14 +-
饭太硬/lives/B站直播.txt | 1080 +++++++++++-----
饭太硬/lives/develop202.txt | 130 +-
饭太硬/lives/斗鱼一起看.txt | 1916 +---------------------------
饭太硬/lives/虎牙一起看.txt | 2370 +----------------------------------
饭太硬/spider.jar | Bin 960628 -> 961665 bytes
香雅情/lives/Tianmu.txt | 156 ++-
26 files changed, 2494 insertions(+), 7634 deletions(-)
delete mode 100644 OK/api.json
delete mode 100644 OK/spider.jar
delete mode 100644 南风/json/嗷呜动漫.json
delete mode 100644 欧歌/jars/豆瓣1.jar
diff --git a/OK/api.json b/OK/api.json
deleted file mode 100644
index 06bb866..0000000
--- a/OK/api.json
+++ /dev/null
@@ -1,1633 +0,0 @@
-{
- "spider": "./spider.jar",
- "wallpaper": "http://127.0.0.1:9978/proxy?do=wall",
- "logo": "http://oss4liview.moji.com/thd_file/2026/03/16/8f3aa460979f999455633dc256d27a34.jpg",
- "sites": [
- {
- "key": "豆瓣",
- "name": "🤓公众号┃OK猫开发 (关注不迷路)",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "changeable": 1,
- "ext": {
- "sp": "Douban"
- }
- },
- {
- "key": "配置中心",
- "name": "👨🍳配置┃中心",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "changeable": 0,
- "indexs": 0,
- "style": {
- "type": "rect",
- "ratio": 1.43
- },
- "ext": {
- "sp": "Config"
- }
- },
- {
- "key": "本地播放",
- "name": "🐼本地┃播放",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "changeable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "timeout": 5,
- "ext": {
- "sp": "Local"
- }
- },
- {
- "key": "二小",
- "name": "🦢二小┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "ErXiao"
- },
- "timeout": 25
- },
- {
- "key": "双星",
- "name": "🤩双星┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "Star2"
- },
- "timeout": 25
- },
- {
- "key": "玩偶",
- "name": "👽玩偶┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 1,
- "ext": {
- "sp": "Wogg"
- },
- "timeout": 30
- },
- {
- "key": "立播版",
- "name": "🌟立播┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 1,
- "ext": {
- "sp": "Libvio"
- },
- "timeout": 30
- },
- {
- "key": "蜡笔",
- "name": "👠蜡笔┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Labi"
- },
- "timeout": 25
- },
- {
- "key": "木偶",
- "name": "🪵木偶┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Muou"
- },
- "timeout": 25
- },
- {
- "key": "多多",
- "name": "🪅多多┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "DuoDuo"
- },
- "timeout": 25
- },
- {
- "key": "小飒",
- "name": "💒小飒┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Xsayang"
- },
- "timeout": 25
- },
- {
- "key": "至臻",
- "name": "💌至臻┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "ZhiZhen"
- },
- "timeout": 25
- },
- {
- "key": "虎斑",
- "name": "🐯虎斑┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "HuBan"
- },
- "timeout": 25
- },
- {
- "key": "SeedHub",
- "name": "🍀种子┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "SeedHub"
- },
- "timeout": 25
- },
- {
- "key": "光影",
- "name": "🎥光影┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "Guanying"
- },
- "timeout": 30
- },
- {
- "key": "云集",
- "name": "🍊云集┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "YunJi"
- },
- "timeout": 25
- },
- {
- "key": "4K指南",
- "name": "⭐指南┃4K原盘",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "ext": {
- "sp": "Zn4k"
- },
- "timeout": 30
- },
- {
- "key": "盘他",
- "name": "🎸盘他┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Panta"
- },
- "timeout": 25
- },
- {
- "key": "雷鲸",
- "name": "🐳雷鲸┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "LeiJing"
- },
- "timeout": 25
- },
- {
- "key": "123分享",
- "name": "🌂123┃4K",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "Time123"
- },
- "timeout": 25
- },
- {
- "key": "七味",
- "name": "🌈七味┃在线",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "QiWei"
- },
- "timeout": 30
- },
- {
- "key": "瓜子",
- "name": "🍉瓜子┃App",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Guazi"
- },
- "timeout": 10
- },
- {
- "key": "文才",
- "name": "🌺文才┃在线",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Jpys"
- },
- "timeout": 10
- },
- {
- "key": "糯米",
- "name": "🍓糯米┃秒播",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Nmys"
- },
- "timeout": 10
- },
- {
- "key": "热播",
- "name": "📺热播┃App",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "TianTian",
- "site": 0
- },
- "timeout": 10
- },
- {
- "key": "奇奇",
- "name": "🐵奇奇┃App",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "QiQi"
- },
- "timeout": 10
- },
- {
- "key": "独播",
- "name": "👠独播┃直连",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "Duboku"
- },
- "timeout": 10
- },
- {
- "key": "厂长",
- "name": "📔厂长┃直连",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "Czzy"
- },
- "timeout": 10
- },
- {
- "key": "csp_Btt",
- "name": "🌞比特┃在线",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "ext": {
- "sp": "Btt"
- },
- "timeout": 10
- },
- {
- "key": "荐片",
- "name": "⚔️荐片┃手机",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Jianpian"
- },
- "timeout": 10
- },
- {
- "key": "韩圈",
- "name": "🦄韩圈┃App",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "playerType": 2,
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "HanXiaoQuan"
- },
- "timeout": 10
- },
- {
- "key": "我的夸克",
- "name": "🗽我的┃夸克",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "MyQuark"
- },
- "timeout": 30
- },
- {
- "key": "我的UC",
- "name": "😼我的┃UC",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "MyUc"
- },
- "timeout": 30
- },
- {
- "key": "我的百度",
- "name": "☘️我的┃百度",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "MyBaidu"
- },
- "timeout": 30
- },
- {
- "key": "我的123",
- "name": "🌂我的┃123",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "My123"
- },
- "timeout": 30
- },
- {
- "key": "我的天逸",
- "name": "🧽我的┃天逸",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "My189"
- },
- "timeout": 30
- },
- {
- "key": "我的115",
- "name": "🌷我的┃115",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "My115"
- },
- "timeout": 30
- },
- {
- "key": "我的阿里",
- "name": "🐱我的┃阿里",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "MyAli"
- },
- "timeout": 30
- },
- {
- "key": "我的迅雷",
- "name": "⭐我的┃迅雷",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "MyXunLei"
- },
- "timeout": 30
- },
- {
- "key": "️爱看Bot",
- "name": "⛅️爱看┃直连",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Ikanbot"
- },
- "timeout": 10
- },
- {
- "key": "电影天堂",
- "name": "🎞️天堂┃采集",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Caiji",
- "api": "http://dyttzy5.tv/api.php/provide/vod/from/dyttm3u8/at/m3u8/"
- },
- "exclude": "34",
- "timeout": 10
- },
- {
- "key": "量子",
- "name": "📷量子┃采集",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 1,
- "filterable": 1,
- "ext": {
- "sp": "Caiji",
- "api": "https://cj.lziapi.com/api.php/provide/vod/from/lzm3u8/at/m3u8/"
- },
- "exclude": "34",
- "timeout": 10
- },
- {
- "key": "盒马短剧",
- "name": "🦓盒马┃短剧",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "HeMa"
- },
- "timeout": 10
- },
- {
- "key": "星芽短剧",
- "name": "💖星芽┃短剧",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "AppXY"
- },
- "timeout": 10
- },
- {
- "key": "甜圈短剧",
- "name": "🌸甜圈┃短剧",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "TianQuan"
- },
- "timeout": 10
- },
- {
- "key": "Omofun",
- "name": "🏖️奥陌┃动漫",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "Omofuns"
- },
- "timeout": 10
- },
- {
- "key": "动漫巴士",
- "name": "🚌巴士┃动漫",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "filterable": 1,
- "ext": {
- "sp": "Dm84"
- },
- "timeout": 10
- },
- {
- "key": "新6V",
- "name": "🧲新6V┃磁力",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 1,
- "changeable": 0,
- "ext": {
- "sp": "Xb6v"
- },
- "timeout": 20
- },
- {
- "key": "快手直播",
- "name": "😎快手┃直播",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 1,
- "style": {
- "type": "rect",
- "ratio": 1.433
- },
- "ext": {
- "sp": "KsLive"
- },
- "timeout": 10
- },
- {
- "key": "虎牙直播",
- "name": "🐯虎牙┃直播",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 1,
- "style": {
- "type": "rect",
- "ratio": 1.433
- },
- "ext": {
- "sp": "Huya"
- },
- "timeout": 10
- },
- {
- "key": "瓜子看球",
- "name": "⚽瓜子┃看球",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "GzSport"
- },
- "timeout": 10
- },
- {
- "key": "88看球",
- "name": "⚽88┃看球",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "Kanqiu"
- },
- "timeout": 10
- },
- {
- "key": "爱听音乐",
- "name": "🎧爱听┃音乐",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "AiMusic"
- },
- "timeout": 10
- },
- {
- "key": "易听音乐",
- "name": "🎧易听┃音乐",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "ShiJiMusic"
- },
- "timeout": 10
- },
- {
- "key": "酷狗音乐",
- "name": "🐕酷狗┃音乐",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "KuGou"
- },
- "timeout": 10
- },
- {
- "key": "世界听书",
- "name": "🎸世界┃听书",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "BookTing"
- },
- "timeout": 10
- },
- {
- "key": "听悠听书",
- "name": "🎤听悠┃听书",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "TingYou"
- },
- "timeout": 10
- },
- {
- "key": "bilimd",
- "name": "🅱哔哩┃影视",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 1,
- "style": {
- "type": "rect",
- "ratio": 1.433
- },
- "ext": {
- "sp": "Bilimd"
- },
- "timeout": 10
- },
- {
- "key": "bili",
- "name": "🅱哔哩┃合集",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 1,
- "style": {
- "type": "rect",
- "ratio": 1.433
- },
- "ext": {
- "sp": "Bili",
- "json": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/57EAD2E_773_bili_20251204145747516newMediaFile.bmp"
- },
- "timeout": 20
- },
- {
- "key": "biliych",
- "name": "🅱哔哩┃歌曲",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 1,
- "style": {
- "type": "rect",
- "ratio": 1.433
- },
- "ext": {
- "sp": "Bili",
- "json": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/28CD73E_773_biliych_20251204150624308newMediaFile.bmp"
- },
- "timeout": 20
- },
- {
- "key": "bilixs",
- "name": "🅱哔哩┃相声",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 1,
- "style": {
- "type": "rect",
- "ratio": 1.433
- },
- "ext": {
- "sp": "Bili",
- "json": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/C7FB4B_773_bilixs_20251204150416832newMediaFile.bmp"
- },
- "timeout": 20
- },
- {
- "key": "bilixp",
- "name": "🅱哔哩┃小品",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 1,
- "style": {
- "type": "rect",
- "ratio": 1.433
- },
- "ext": {
- "sp": "Bili",
- "json": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/41F4D38_773_bilixp_20251204150443351newMediaFile.bmp"
- },
- "timeout": 20
- },
- {
- "key": "少儿教育",
- "name": "📚少儿┃教育",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "style": {
- "type": "rect",
- "ratio": 1.597
- },
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "Bili",
- "json": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/32EF375_773_bilisejy_20251204150311837newMediaFile.bmp"
- }
- },
- {
- "key": "小学课堂",
- "name": "📚小学┃课堂",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "style": {
- "type": "rect",
- "ratio": 1.597
- },
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "Bili",
- "json": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/3753221_773_bilixxkt_20251204150347660newMediaFile.bmp"
- }
- },
- {
- "key": "初中课堂",
- "name": "📚初中┃课堂",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "style": {
- "type": "rect",
- "ratio": 1.597
- },
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "Bili",
- "json": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/3ED04A6_773_biliczkt_20251204150157889newMediaFile.bmp"
- }
- },
- {
- "key": "高中教育",
- "name": "📚高中┃课堂",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "style": {
- "type": "rect",
- "ratio": 1.597
- },
- "searchable": 0,
- "quickSearch": 0,
- "changeable": 0,
- "ext": {
- "sp": "Bili",
- "json": "https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/531DD35_773_biligzkt_20251204150243460newMediaFile.bmp"
- }
- },
- {
- "key": "115分享",
- "name": "🌷115┃分享",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "quickSearch": 0,
- "changeable": 0,
- "filterable": 0,
- "indexs": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "Pan115Share"
- },
- "timeout": 30
- },
- {
- "key": "csp_AListGuard",
- "name": "🦋AList",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "style": {
- "type": "list"
- },
- "ext": {
- "sp": "AList",
- "json": "file://TV/alist.json"
- },
- "timeout": 15
- },
- {
- "key": "csp_QuPanSouGuard",
- "name": "🤓趣盘┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "QuPanSou"
- },
- "timeout": 25
- },
- {
- "key": "太极",
- "name": "☯️太极┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "TaiChi"
- },
- "timeout": 25
- },
- {
- "key": "糖果搜",
- "name": "🍬糖果┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "TaiChi"
- },
- "timeout": 25
- },
- {
- "key": "聚盘",
- "name": "🎞️聚盘┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "JuPan"
- },
- "timeout": 25
- },
- {
- "key": "音海",
- "name": "🎸音海┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "YinHai"
- },
- "timeout": 25
- },
- {
- "key": "爱盘",
- "name": "❤️爱盘┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "AiPan"
- },
- "timeout": 25
- },
- {
- "key": "云搜",
- "name": "☁️云搜┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "YunPanPan"
- },
- "timeout": 25
- },
- {
- "key": "度搜",
- "name": "🦈度搜┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "Bdxd"
- },
- "timeout": 25
- },
- {
- "key": "找盘",
- "name": "🎾找盘┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "V2Pan"
- },
- "timeout": 25
- },
- {
- "key": "djps",
- "name": "🔍短剧┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "Djps"
- },
- "timeout": 25
- },
- {
- "key": "djso",
- "name": "🔍剧搜┃搜索",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 1,
- "filterable": 1,
- "changeable": 0,
- "ext": {
- "sp": "Djso"
- },
- "timeout": 25
- },
- {
- "key": "push_agent",
- "name": "🛴手机┃推送",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "searchable": 0,
- "filterable": 0,
- "changeable": 0,
- "ext": {
- "sp": "Push"
- },
- "timeout": 25
- }
- ],
- "parses": [
- {
- "name": "聚合1",
- "type": 3,
- "url": "Demo"
- },
- {
- "name": "聚合0",
- "type": 3,
- "url": "Web"
- },
- {
- "name": "ikun",
- "type": 0,
- "url": "https://jx.hls.one/?url="
- },
- {
- "name": "77",
- "type": 0,
- "url": "https://jx.77flv.cc/?url="
- },
- {
- "name": "A6",
- "type": 0,
- "url": "https://pl.a6club.com/player/analysis.php?v="
- },
- {
- "name": "8090",
- "type": 0,
- "url": "https://www.8090g.cn/?url="
- },
- {
- "name": "M3u8TV",
- "type": 0,
- "url": "https://jx.m3u8.tv/jiexi/?url="
- },
- {
- "name": "CK",
- "type": 0,
- "url": "https://www.ckplayer.vip/jiexi/?url="
- },
- {
- "name": "冰豆",
- "type": 0,
- "url": "https://bd.jx.cn/?url="
- },
- {
- "name": "XY",
- "type": 0,
- "url": "https://jx.xymp4.cc/?url="
- },
- {
- "name": "推荐",
- "type": 1,
- "url": "https://zy.qiaoji8.com/gouzi.php?url=94b07e0b2c0e8244&url="
- },
- {
- "name": "臻享",
- "type": 1,
- "url": "https://150.138.78.37:4399/api?key=94b07e0b2c0e8244&url="
- },
- {
- "name": "优选",
- "type": 1,
- "url": "http://1.94.221.189:88/algorithm.php?url="
- }
- ],
- "doh": [
- {
- "name": "Google",
- "url": "https://dns.google/dns-query",
- "ips": [
- "8.8.4.4",
- "8.8.8.8"
- ]
- },
- {
- "name": "Cloudflare",
- "url": "https://cloudflare-dns.com/dns-query",
- "ips": [
- "1.1.1.1",
- "1.0.0.1",
- "2606:4700:4700::1111",
- "2606:4700:4700::1001"
- ]
- },
- {
- "name": "AdGuard",
- "url": "https://dns.adguard.com/dns-query",
- "ips": [
- "94.140.14.140",
- "94.140.14.141"
- ]
- },
- {
- "name": "DNSWatch",
- "url": "https://resolver2.dns.watch/dns-query",
- "ips": [
- "84.200.69.80",
- "84.200.70.40"
- ]
- },
- {
- "name": "Quad9",
- "url": "https://dns.quad9.net/dns-quer",
- "ips": [
- "9.9.9.9",
- "149.112.112.112"
- ]
- }
- ],
- "ads": [
- "mozai.4gtv.tv"
- ],
- "lives": [
- {
- "name": "MIGU(登录版)",
- "type": 0,
- "url": "http://127.0.0.1:9978/proxy?do=migu&type=m3u8"
- },
- {
- "name": "MIGU(AI版本)",
- "type": 0,
- "url": "http://127.0.0.1:9978/proxy?do=live&url=https://ds65.tv1288.xyz"
- },
- {
- "name": "江苏移动",
- "type": 0,
- "url": "http://127.0.0.1:9978/proxy?do=live&url=https://storage.7x24cc.com/storage-server/presigned/ss1/a6-online-fileupload/newMediaFile/529EAA1_773_jsyd_20251205182514164newMediaFile.bmp"
- },
- {
- "name": "一起看",
- "type": 3,
- "api": "csp_AweSomeGuard",
- "url": "yqk"
- },
- {
- "name": "肥羊虎牙一起看",
- "type": 0,
- "url": "http://127.0.0.1:9978/proxy?do=live&url=https://sub.ottiptv.cc/huyayqk.m3u",
- "ua": "okHttp/Mod-1.5.0.0"
- },
- {
- "name": "肥羊B站直播",
- "type": 0,
- "url": "http://127.0.0.1:9978/proxy?do=live&url=https://sub.ottiptv.cc/bililive.m3u",
- "ua": "okHttp/Mod-1.5.0.0"
- },
- {
- "name": "肥羊斗鱼一起看",
- "type": 0,
- "url": "http://127.0.0.1:9978/proxy?do=live&url=https://sub.ottiptv.cc/douyuyqk.m3u",
- "ua": "okHttp/Mod-1.5.0.0"
- },
- {
- "name": "肥羊YY轮播",
- "type": 0,
- "url": "http://127.0.0.1:9978/proxy?do=live&url=https://sub.ottiptv.cc/yylunbo.m3u",
- "ua": "okHttp/Mod-1.5.0.0"
- }
- ],
- "ijk": [
- {
- "group": "软解码",
- "options": [
- {
- "category": 4,
- "name": "opensles",
- "value": "0"
- },
- {
- "category": 4,
- "name": "overlay-format",
- "value": "842225234"
- },
- {
- "category": 4,
- "name": "framedrop",
- "value": "1"
- },
- {
- "category": 4,
- "name": "soundtouch",
- "value": "1"
- },
- {
- "category": 4,
- "name": "start-on-prepared",
- "value": "1"
- },
- {
- "category": 1,
- "name": "http-detect-range-support",
- "value": "0"
- },
- {
- "category": 1,
- "name": "fflags",
- "value": "fastseek"
- },
- {
- "category": 2,
- "name": "skip_loop_filter",
- "value": "48"
- },
- {
- "category": 4,
- "name": "reconnect",
- "value": "1"
- },
- {
- "category": 4,
- "name": "enable-accurate-seek",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec-auto-rotate",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec-handle-resolution-change",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec-hevc",
- "value": "0"
- },
- {
- "category": 1,
- "name": "dns_cache_timeout",
- "value": "600000000"
- }
- ]
- },
- {
- "group": "硬解码",
- "options": [
- {
- "category": 4,
- "name": "opensles",
- "value": "0"
- },
- {
- "category": 4,
- "name": "overlay-format",
- "value": "842225234"
- },
- {
- "category": 4,
- "name": "framedrop",
- "value": "1"
- },
- {
- "category": 4,
- "name": "soundtouch",
- "value": "1"
- },
- {
- "category": 4,
- "name": "start-on-prepared",
- "value": "1"
- },
- {
- "category": 1,
- "name": "http-detect-range-support",
- "value": "0"
- },
- {
- "category": 1,
- "name": "fflags",
- "value": "fastseek"
- },
- {
- "category": 2,
- "name": "skip_loop_filter",
- "value": "48"
- },
- {
- "category": 4,
- "name": "reconnect",
- "value": "1"
- },
- {
- "category": 4,
- "name": "enable-accurate-seek",
- "value": "0"
- },
- {
- "category": 4,
- "name": "mediacodec",
- "value": "1"
- },
- {
- "category": 4,
- "name": "mediacodec-auto-rotate",
- "value": "1"
- },
- {
- "category": 4,
- "name": "mediacodec-handle-resolution-change",
- "value": "1"
- },
- {
- "category": 4,
- "name": "mediacodec-hevc",
- "value": "1"
- },
- {
- "category": 1,
- "name": "dns_cache_timeout",
- "value": "600000000"
- }
- ]
- }
- ],
- "proxy": [
- "file://TV/proxy.json"
- ],
- "rules": [
- {
- "name": "cl",
- "hosts": [
- "magnet"
- ],
- "regex": [
- "最 新",
- "直 播",
- "更 新"
- ]
- },
- {
- "name": "火山嗅探",
- "hosts": [
- "huoshan.com"
- ],
- "regex": [
- "item_id="
- ]
- },
- {
- "name": "抖音嗅探",
- "hosts": [
- "douyin.com"
- ],
- "regex": [
- "is_play_url="
- ]
- },
- {
- "name": "农民嗅探",
- "hosts": [
- "toutiaovod.com"
- ],
- "regex": [
- "video/tos/cn"
- ]
- },
- {
- "name": "七新嗅探",
- "hosts": [
- "api.52wyb.com"
- ],
- "regex": [
- "m3u8?pt=m3u8"
- ]
- },
- {
- "name": "夜市",
- "hosts": [
- "yeslivetv.com"
- ],
- "script": [
- "document.getElementsByClassName('vjs-big-play-button')[0].click()"
- ]
- },
- {
- "name": "毛驴",
- "hosts": [
- "www.maolvys.com"
- ],
- "script": [
- "document.getElementsByClassName('swal-button swal-button--confirm')[0].click()"
- ]
- },
- {
- "name": "czzy",
- "hosts": [
- "10086.cn"
- ],
- "regex": [
- "/storageWeb/servlet/downloadServlet"
- ]
- },
- {
- "name": "bdys",
- "hosts": [
- "bytetos.com",
- "byteimg.com",
- "bytednsdoc.com",
- "pstatp.com"
- ],
- "regex": [
- "/tos-cn"
- ],
- "exclude": [
- ".m3u8"
- ]
- },
- {
- "name": "bdys10",
- "hosts": [
- "bdys10.com"
- ],
- "regex": [
- "/obj/"
- ],
- "exclude": [
- ".m3u8"
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/OK/spider.jar b/OK/spider.jar
deleted file mode 100644
index b6f70668431efb9e15f906afb10d54764141f66e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 22766
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
&&",
+ "链接": "href=\"&&\"",
+ "影片年代": "年份:&&
",
+ "线路标题": "+>&&<",
+ "播放二次截取": "",
+ "播放数组": "playlist clearfix&&",
+ "倒序": "0",
+ "播放列表": "",
+ "播放标题": ">&&<",
+ "播放链接": "href=\"&&\"",
+ "跳转播放链接": "var player_*\"url\":\"&&\"",
+ "搜索请求头": "UTF-8;{User-Agent@Mozilla/5.0",
+ "搜索url": "http://www.pbpbt.com/sou/{wd}----------{pg}---.html",
+ "搜索模式": "1",
+ "搜索后缀": "",
+ "搜索二次截取": "",
+ "搜索数组": "lazyload\"&&&&",
+ "搜索链接": "href=\"&&\"",
+ "排序": "最新上映&超高人气&全网热播&高分好评",
+ "排序值": "time&hits&up&score",
+ "筛选": "1",
+ "类型": "动作片$5#喜剧片$6#恐怖片$7#科幻片$8#爱情片$9#剧情片$10#战争片$11||国产剧$13#港台剧$14#欧美剧$15#日韩剧$16#海外剧$17||节目秀$23#纪录片$12#赛事$26||动画电影$21#动画剧集$22"
+ }
+ },
+ {
+ "key": "茶杯狐",
+ "name": "🍵茶杯狐",
+ "type": 3,
+ "api": "csp_XBPQ",
+ "ext": {
+ "简介": "【广告勿信】+&&",
+ "请求头": "User-Agent$MOBILE_UA",
+ "编码": "UTF-8",
+ "数组": "lazyload&&",
+ "标题": "+title=\"&&\"",
+ "图片": "data-original=\"&&\"",
+ "分类url": "https://www.xmhxdq.com/vodshow/{cateId}--------{catePg}---.html",
+ "分类": "电影$1#电视剧$2#综艺$3#动漫$4#短剧$36#"
+ }
+ },
{
"key": "永乐",
"name": "🍰永乐",
@@ -270,16 +330,6 @@
"quickSearch": 1,
"filterable": 1
},
- {
- "key": "csp_xlys",
- "name": "🧲修罗",
- "type": 3,
- "api": "csp_Bdys01",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "ext": "7lj763gg402i7942476492jlg94li29kk6gi8448ij"
- },
{
"key": "csp_New6v",
"name": "🧲新6V",
@@ -317,15 +367,6 @@
"filterable": 1,
"ext": "https://www.meijumi.net/"
},
- {
- "key": "csp_BLSGod",
- "name": "🧲80S影视",
- "type": 3,
- "api": "csp_BLSGod",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1
- },
{
"key": "csp_SP360",
"name": "💘360",
@@ -354,16 +395,6 @@
"playerType": 2,
"ext": "7lj763gg402i79425l2l9j9jh14i9ijil0h1jk58ih8633354h0l18lil40h755g029i0ghhil4gh89i133hk9i9l1k604i9g4797k09k8k5j3j73kgj1hg725gg575ig9g790"
},
- {
- "key": "嗷呜动漫",
- "name": "🙀嗷呜动漫",
- "type": 3,
- "api": "csp_XYQHiker",
- "searchable": 1,
- "quickSearch": 1,
- "filterable": 1,
- "ext": "./json/嗷呜动漫.json"
- },
{
"name": "☕韩剧",
"key": "Hxq",
@@ -600,10 +631,7 @@
"siteUrl": [
"https://mihdr.top",
"https://www.miqk.cc",
- "https://xiaomiai.site",
- "https://xiaomi666.fun",
- "https://www.mihdr.top",
- "https://www.zhizhenpan.fun"
+ "https://www.mihdr.top"
],
"filter": "https://gh-proxy.com/raw.githubusercontent.com/yoursmile66/TVBox/main/json/wogg.json"
}
diff --git a/南风/api/drpy2.min.js b/南风/api/drpy2.min.js
index 7e28988..7ec73e7 100644
--- a/南风/api/drpy2.min.js
+++ b/南风/api/drpy2.min.js
@@ -1,4 +1,7 @@
-import cheerio from"assets://js/lib/cheerio.min.js";import"assets://js/lib/crypto-js.js";import"./node-rsa.js";import"./pako.min.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";import"./json5.js";import"./jinja.js";const _jinja2=cheerio.jinja2;cheerio.jinja2=function(template,obj){try{return jinja.render(template,obj)}catch(e){console.log("新的jinja2库渲染失败,换回原始cheerio:"+e.message);return _jinja2(template,obj)}};function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log("本地代理地址:"+getProxyUrl());console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function ocr_demo_test(){let img_base64=`iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`;OcrApi.api=OCR_API;let code=OcrApi.classification(img_base64);log("测试验证码图片的ocr识别结果为:"+code)}function rsa_demo_test(){let t1=(new Date).getTime();let pkcs1_public=`
+import cheerio from"assets://js/lib/cheerio.min.js";import"assets://js/lib/crypto-js.js";import"./jsencrypt.js";import"./node-rsa.js";import"./pako.min.js";import 模板 from"./模板.js";import{gbkTool}from"./gbk.js";import"./json5.js";import"./jinja.js";const _jinja2=cheerio.jinja2;cheerio.jinja2=function(template,obj){try{return jinja.render(template,obj)}catch(e){console.log("新的jinja2库渲染失败,换回原始cheerio:"+e.message);return _jinja2(template,obj)}};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.51beta5 20241104";const UpdateInfo=[{date:"20241104",title:"drpy更新,增加新特性",version:"3.9.51beta5 20241104",msg:`
+ 1. rule增加 搜索验证标识 属性,可以不定义,默认为 '系统安全验证|请输入验证码'
+ 2. rule增加 searchNoPage 属性,可以不定义,如果定义 1 将关闭该源的搜索翻页功能,超过1页直接返回空
+ `}];function getUpdateInfo(){return UpdateInfo.map(_o=>{_o.msg=_o.msg.trim().split("\n").map(_it=>_it.trim()).join("\n");return _o})}function init_test(){console.log("init_test_start");console.log("当前版本号:"+VERSION);console.log("本地代理地址:"+getProxyUrl());console.log(RKEY);console.log(JSON.stringify(rule));console.log("init_test_end")}function ocr_demo_test(){let img_base64=`iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`;OcrApi.api=OCR_API;let code=OcrApi.classification(img_base64);log("测试验证码图片的ocr识别结果为:"+code)}function rsa_demo_test(){let t1=(new Date).getTime();let pkcs1_public=`
-----BEGIN RSA PUBLIC KEY-----
MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy
lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE=
@@ -70,4 +73,4 @@ HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN
QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51
MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw
m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA==
------END RSA PRIVATE KEY-----`,{options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("decryptedWithPrivate");console.log(decryptedWithPrivate);(()=>{let key=new NODERSA.NodeRSA({b:1024});key.setOptions({encryptionScheme:"pkcs1"});let text=`你好drpy node-ras`;let encrypted=key.encrypt(text,"base64");console.log("encrypted: ",encrypted);const decrypted=key.decrypt(encrypted,"utf8");console.log("decrypted: ",decrypted)})();let t2=(new Date).getTime();console.log("rsa_demo_test 测试耗时:"+(t2-t1)+"毫秒")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log(`预处理执行失败:${e.message}`)}}}let rule={};let vercode=typeof pdfl==="function"?"drpy2.1":"drpy2";const VERSION=vercode+" 3.9.51beta2 20240711";const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|榜|评论";const OCR_RETRY=3;const OCR_API="https://api.nn.ci/ocr/b64/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;const $js={toString(func){let strfun=func.toString();return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/,"js:").replace(/\}$/,"")}};function window_b64(){let b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out="";while(i>2);out+=b64map.charAt((c1&3)<<4);out+="==";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+="=";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out="";while(i>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(ithis.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:out+=String.fromCharCode(c);break;case 12:case 13:char2=array[i++];out+=String.fromCharCode((c&31)<<6|char2&63);break;case 14:char2=array[i++];char3=array[i++];out+=String.fromCharCode((c&15)<<12|(char2&63)<<6|(char3&63)<<0);break}}return out}function gzip(str){let arr=pako.gzip(str,{});return uint8ArrayToBase64(arr)}function ungzip(b64Data){let strData=atob(b64Data);const charData=strData.split("").map(function(x){return x.charCodeAt(0)});const binData=new Uint8Array(charData);const data=pako.inflate(binData);return Utf8ArrayToStr(data)}function encodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.encode(input)}return input}function decodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.decode(input)}return input}function getCryptoJS(){return'console.log("CryptoJS已装载");'}const RSA={decode:function(data,key,option){option=option||{};if(typeof JSEncrypt==="function"){let chunkSize=option.chunkSize||117;let privateKey=this.getPrivateKey(key);const decryptor=new JSEncrypt;decryptor.setPrivateKey(privateKey);let uncrypted="";uncrypted=decryptor.decryptUnicodeLong(data);return uncrypted}else{return false}},encode:function(data,key,option){option=option||{};if(typeof JSEncrypt==="function"){let chunkSize=option.chunkSize||117;let publicKey=this.getPublicKey(key);const encryptor=new JSEncrypt;encryptor.setPublicKey(publicKey);let encrypted="";encrypted=encryptor.encryptUnicodeLong(data);return encrypted}else{return false}},fixKey(key,prefix,endfix){if(!key.includes(prefix)){key=prefix+key}if(!key.includes(endfix)){key+=endfix}return key},getPrivateKey(key){let prefix="-----BEGIN RSA PRIVATE KEY-----";let endfix="-----END RSA PRIVATE KEY-----";return this.fixKey(key,prefix,endfix)},getPublicKey(key){let prefix="-----BEGIN PUBLIC KEY-----";let endfix="-----END PUBLIC KEY-----";return this.fixKey(key,prefix,endfix)}};function getProxyUrl(){if(typeof getProxy==="function"){return getProxy(true)}else{return"http://127.0.0.1:9978/proxy?do=js"}}function fixAdM3u8(m3u8_text,m3u8_url,ad_remove){if(!m3u8_text&&!m3u8_url||!m3u8_text&&m3u8_url&&!m3u8_url.startsWith("http")){return""}if(!m3u8_text){log("m3u8_url:"+m3u8_url);m3u8_text=request(m3u8_url)}log("len(m3u8_text):"+m3u8_text.length);if(!ad_remove){return m3u8_text}if(ad_remove.startsWith("reg:")){ad_remove=ad_remove.slice(4)}else if(ad_remove.startsWith("js:")){ad_remove=ad_remove.slice(3)}let m3u8_start=m3u8_text.slice(0,m3u8_text.indexOf("#EXTINF")).trim();let m3u8_body=m3u8_text.slice(m3u8_text.indexOf("#EXTINF"),m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();let m3u8_end=m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();let murls=[];let m3_body_list=m3u8_body.split("\n");let m3_len=m3_body_list.length;let i=0;while(i{new_m3u8_body.push(it)})}}new_m3u8_body=new_m3u8_body.join("\n").trim();m3u8_text=[m3u8_start,new_m3u8_body,m3u8_end].join("\n").trim();return m3u8_text}function fixAdM3u8Ai(m3u8_url,headers){let ts=(new Date).getTime();let option=headers?{headers:headers}:{};function b(s1,s2){let i=0;while(iit.startsWith("#")?it:urljoin(m3u8_url,it)).join("\n");m3u8=m3u8.replace(/\n\n/gi,"\n");let last_url=m3u8.split("\n").slice(-1)[0];if(last_url.length<5){last_url=m3u8.split("\n").slice(-2)[0]}if(last_url.includes(".m3u8")&&last_url!==m3u8_url){m3u8_url=urljoin2(m3u8_url,last_url);log("嵌套的m3u8_url:"+m3u8_url);m3u8=request(m3u8_url,option)}let s=m3u8.trim().split("\n").filter(it=>it.trim()).join("\n");let ss=s.split("\n");let firststr="";let maxl=0;let kk=0;let kkk=2;let secondstr="";for(let i=0;i1){if(maxl>b(firststr,s)){if(secondstr.length<5)secondstr=s;kkk=kkk+2}else{maxl=b(firststr,s);kkk++}}kk++;if(kk>=20)break}}if(kkk>30)firststr=secondstr;let firststrlen=firststr.length;let ml=Math.round(ss.length/2).toString().length;let maxc=0;let laststr=ss.toReversed().find(x=>{if(!x.startsWith("#")){let k=b(reverseString(firststr),reverseString(x));maxl=b(firststr,x);maxc++;if(firststrlen-maxl<=ml+k||maxc>10){return true}}return false});log("最后一条切片:"+laststr);let ad_urls=[];for(let i=0;i=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];function getQuery(url){try{if(url.indexOf("?")>-1){url=url.slice(url.indexOf("?")+1)}let arr=url.split("#")[0].split("&");const resObj={};arr.forEach(item=>{let arr1=item.split("=");let key=arr1[0];let value=arr1.slice(1).join("=");resObj[key]=value});return resObj}catch(err){log(`getQuery发生错误:${e.message}`);return{}}}function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print(`html对象转文本发生了错误:${e.message}`)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print(`html对象转文本发生了错误:${e.message}`)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.slice(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html="";if(this.api.endsWith("drpy/text")){html=request(this.api,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true)}else{html=post(this.api,{body:img})}code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function $require(url){eval(request(url))}function keysToLowerCase(obj){return Object.keys(obj).reduce((result,key)=>{const newKey=key.toLowerCase();result[newKey]=obj[key];return result},{})}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA;if(typeof fetch_params==="object"&&fetch_params&&fetch_params.headers){let fetch_headers=keysToLowerCase(fetch_params.headers);if(fetch_headers["user-agent"]){headers["User-Agent"]=fetch_headers["user-agent"]}}}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}if(obj.redirect===false){obj.redirect=0}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj=obj||{};obj.method="POST";return request(url,obj)}function reqCookie(url,obj,all_cookie){obj=obj||{};obj.withHeaders=true;all_cookie=all_cookie||false;let html=request(url,obj);let json=JSON.parse(html);let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");let cookie=setCk?json[setCk]:"";if(Array.isArray(cookie)){cookie=cookie.join(";")}if(!all_cookie){cookie=cookie.split(";")[0]}html=json.body;return{cookie:cookie,html:html}}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i0){classes=list}}}catch(e){console.log(e.message)}}else if(p.length>=3&&!is_json){try{let html=homeObj.home_html||getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p0);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]&&!homeObj.home_html){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级?rule.一级.split(";"):[];if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log(`首页列表双层定位处理发生错误:${e.message}`)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log(`首页列表单层定位处理发生错误:${e.message}`)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}url=url.replaceAll("fyclass",cateObj.tid);let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print(`合并不同分类对应的默认筛选出错:${e.message}`)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl,fyclass:cateObj.tid});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级?rule.一级.split(";"):[];let url=searchObj.searchUrl.replaceAll("**",searchObj.wd);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",searchObj.pg)}}MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){if(/系统安全验证|输入验证码/.test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print(`搜索发生错误:${e.message}`);return"{}"}}if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="免费分享";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();if(!v_title){v_title="线路空"}console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["免费分享"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print(`格式化LISTS发生错误:${e.message}`)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print(`js执行lists: 发生错误:${e.message}`)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let list_url_prefix=p.list_url_prefix||"";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL);if(list_url_prefix){new_vod_list=new_vod_list.map(it=>it.split("$")[0]+"$"+list_url_prefix+it.split("$").slice(1).join("$"))}}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];vod.vod_pic=vod.vod_pic.replace(replace_from,replace_to)}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);try{vod=vodDeal(vod)}catch(e){console.log(`vodDeal发生错误:${e.message}`)}return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return vod}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;var MY_FLAG=playObj.flag;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;var flag=MY_FLAG;let common_play={parse:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0:1,url:input,flag:flag,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.trim();if(lazy_code.startsWith("js:")){lazy_code=lazy_code.replace("js:","").trim()}print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0:1,jx:tellIsJx(input),url:input}}catch(e){print(`js免嗅错误:${e.message}`);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length>=3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log(`执行嗅探规则发生错误:${e.message}`);return false}}}function getOriginalJs(js_code){let current_match=/var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/;if(current_match.test(js_code)){return js_code}let rsa_private_key="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs=";let decode_content="";function aes_decrypt(data){let key=CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A");let iv=CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A");let encrypted=CryptoJS.AES.decrypt({ciphertext:CryptoJS.enc.Base64.parse(data)},key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);return encrypted}let error_log=false;function logger(text){if(error_log){log(text)}}let decode_funcs=[text=>{try{return ungzip(text)}catch(e){logger("非gzip加密");return""}},text=>{try{return base64Decode(text)}catch(e){logger("非b64加密");return""}},text=>{try{return aes_decrypt(text)}catch(e){logger("非aes加密");return""}},text=>{try{return RSA.decode(text,rsa_private_key,null)}catch(e){logger("非rsa加密");return""}}];let func_index=0;while(!current_match.test(decode_content)){decode_content=decode_funcs[func_index](js_code);func_index++;if(func_index>=decode_funcs.length){break}}return decode_content}function runMain(main_func_code,arg){let mainFunc=function(){return""};try{eval(main_func_code+"\nmainFunc=main;");return mainFunc(arg)}catch(e){log(`执行main_funct发生了错误:${e.message}`);return""}}function init(ext){console.log("init");rule={};rule_fetch_params={};fetch_params=null;try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){if(ext.startsWith("http")||ext.startsWith("file://")){let query=getQuery(ext);let js=request(ext,{method:"GET"});if(js){js=getOriginalJs(js);eval("(function(){"+js.replace("var rule","rule")+"})()")}if(query.type==="url"&&query.params){rule.params=urljoin(ext,query.params)}else if(query.params){rule.params=query.params}}else{ext=getOriginalJs(ext);eval("(function(){"+ext.replace("var rule","rule")+"})()")}}else{console.log(`规则加载失败,不支持的规则类型:${typeof ext}`);return}rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`)}}if(rule["模板"]==="自动"){try{let host_headers=rule["headers"]||{};let host_html=getCode(HOST,{headers:host_headers});let match_muban="";let muban_keys=Object.keys(muban).filter(it=>!/默认|短视2|采集1/.test(it));for(let muban_key of muban_keys){try{let host_data=JSON.parse(home({},host_html,muban[muban_key].class_parse));if(host_data.class&&host_data.class.length>0){match_muban=muban_key;console.log(`自动匹配模板:【${muban_key}】`);break}}catch(e){console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`)}}if(match_muban){muban["自动"]=muban[match_muban];if(rule["模板修改"]&&rule["模板修改"].startsWith("js:")){eval(rule["模板修改"].replace("js:","").trim())}}else{delete rule["模板"]}}catch(e){delete rule["模板"]}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.类型=rule.类型||"影视";rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.homeUrl=cheerio.jinja2(rule.homeUrl,{rule:rule});rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")&&!rule.searchUrl.includes("#")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl}rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.图片替换=rule.图片替换||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";if(!rule.hasOwnProperty("sniffer")){rule.sniffer=false}rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";if(rule.sniffer&&!rule.isVideo){rule.isVideo="http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*"}rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:${e.message}`)}}}}}catch(e){console.log(`处理headers发生错误:${e.message}`)}}rule_fetch_params={headers:rule.headers||false,timeout:rule.timeout,encoding:rule.encoding};oheaders=rule.headers||{};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log(`init_test发生错误:${e.message}`)}}let homeHtmlCache=undefined;function home(filter,home_html,class_parse){console.log("home");home_html=home_html||"";class_parse=class_parse||"";if(typeof rule.filter==="string"&&rule.filter.trim().length>0){try{let filter_json=ungzip(rule.filter.trim());rule.filter=JSON.parse(filter_json)}catch(e){rule.filter={}}}let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:class_parse||rule.class_parse||"",cate_exclude:rule.cate_exclude,home_html:home_html};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function getRule(key){return key?rule[key]||"":rule}function DRPY(){return{runMain:runMain,getRule:getRule,init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,fixAdM3u8Ai:fixAdM3u8Ai}}export default{runMain:runMain,getRule:getRule,init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,fixAdM3u8Ai:fixAdM3u8Ai,DRPY:DRPY};
\ No newline at end of file
+-----END RSA PRIVATE KEY-----`,{options:{environment:"browser",encryptionScheme:"pkcs1_oaep"}});console.log("decryptedWithPrivate");console.log(decryptedWithPrivate);(()=>{let key=new NODERSA.NodeRSA({b:1024});key.setOptions({encryptionScheme:"pkcs1"});let text=`你好drpy node-ras`;let encrypted=key.encrypt(text,"base64");console.log("encrypted: ",encrypted);const decrypted=key.decrypt(encrypted,"utf8");console.log("decrypted: ",decrypted)})();let t2=(new Date).getTime();console.log("rsa_demo_test 测试耗时:"+(t2-t1)+"毫秒")}function pre(){if(typeof rule.预处理==="string"&&rule.预处理&&rule.预处理.trim()){let code=rule.预处理.trim();console.log("执行预处理代码:"+code);if(code.startsWith("js:")){code=code.replace("js:","")}try{eval(code)}catch(e){console.log(`预处理执行失败:${e.message}`)}}}let rule={};const MOBILE_UA="Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36";const PC_UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36";const UA="Mozilla/5.0";const UC_UA="Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";const IOS_UA="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";const RULE_CK="cookie";const CATE_EXCLUDE="首页|留言|APP|下载|资讯|新闻|动态";const TAB_EXCLUDE="猜你|喜欢|下载|剧情|榜|评论";const OCR_RETRY=3;const OCR_API="https://api.nn.ci/ocr/b64/text";if(typeof MY_URL==="undefined"){var MY_URL}var HOST;var RKEY;var fetch;var print;var log;var rule_fetch_params;var fetch_params;var oheaders;var _pdfh;var _pdfa;var _pd;const DOM_CHECK_ATTR=/(url|src|href|-original|-src|-play|-url|style)$/;const SPECIAL_URL=/^(ftp|magnet|thunder|ws):/;const NOADD_INDEX=/:eq|:lt|:gt|:first|:last|^body$|^#/;const URLJOIN_ATTR=/(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/;const SELECT_REGEX=/:eq|:lt|:gt|#/g;const SELECT_REGEX_A=/:eq|:lt|:gt/g;const $js={toString(func){let strfun=func.toString();return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/,"js:").replace(/\}$/,"")}};function window_b64(){let b64map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out="";while(i>2);out+=b64map.charAt((c1&3)<<4);out+="==";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+="=";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out="";while(i>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(ithis.length){return false}else{return this.indexOf(search,start)!==-1}}}if(!Array.prototype.includes){Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(this==null){throw new TypeError('"this" is null or not defined')}var o=Object(this);var len=o.length>>>0;if(len===0){return false}var n=fromIndex|0;var k=Math.max(n>=0?n:len-Math.abs(n),0);while(k>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:out+=String.fromCharCode(c);break;case 12:case 13:char2=array[i++];out+=String.fromCharCode((c&31)<<6|char2&63);break;case 14:char2=array[i++];char3=array[i++];out+=String.fromCharCode((c&15)<<12|(char2&63)<<6|(char3&63)<<0);break}}return out}function gzip(str){let arr=pako.gzip(str,{});return uint8ArrayToBase64(arr)}function ungzip(b64Data){let strData=atob(b64Data);const charData=strData.split("").map(function(x){return x.charCodeAt(0)});const binData=new Uint8Array(charData);const data=pako.inflate(binData);return Utf8ArrayToStr(data)}function encodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.encode(input)}return input}function decodeStr(input,encoding){encoding=encoding||"gbk";if(encoding.startsWith("gb")){const strTool=gbkTool();input=strTool.decode(input)}return input}function getCryptoJS(){return'console.log("CryptoJS已装载");'}const RSA={decode:function(data,key,option){option=option||{};if(typeof JSEncrypt==="function"){let chunkSize=option.chunkSize||117;let privateKey=this.getPrivateKey(key);const decryptor=new JSEncrypt;decryptor.setPrivateKey(privateKey);let uncrypted="";uncrypted=decryptor.decryptUnicodeLong(data);return uncrypted}else{return false}},encode:function(data,key,option){option=option||{};if(typeof JSEncrypt==="function"){let chunkSize=option.chunkSize||117;let publicKey=this.getPublicKey(key);const encryptor=new JSEncrypt;encryptor.setPublicKey(publicKey);let encrypted="";encrypted=encryptor.encryptUnicodeLong(data);return encrypted}else{return false}},fixKey(key,prefix,endfix){if(!key.includes(prefix)){key=prefix+key}if(!key.includes(endfix)){key+=endfix}return key},getPrivateKey(key){let prefix="-----BEGIN RSA PRIVATE KEY-----";let endfix="-----END RSA PRIVATE KEY-----";return this.fixKey(key,prefix,endfix)},getPublicKey(key){let prefix="-----BEGIN PUBLIC KEY-----";let endfix="-----END PUBLIC KEY-----";return this.fixKey(key,prefix,endfix)}};function getProxyUrl(){if(typeof getProxy==="function"){return getProxy(true)}else{return"http://127.0.0.1:9978/proxy?do=js"}}function fixAdM3u8(m3u8_text,m3u8_url,ad_remove){if(!m3u8_text&&!m3u8_url||!m3u8_text&&m3u8_url&&!m3u8_url.startsWith("http")){return""}if(!m3u8_text){log("m3u8_url:"+m3u8_url);m3u8_text=request(m3u8_url)}log("len(m3u8_text):"+m3u8_text.length);if(!ad_remove){return m3u8_text}if(ad_remove.startsWith("reg:")){ad_remove=ad_remove.slice(4)}else if(ad_remove.startsWith("js:")){ad_remove=ad_remove.slice(3)}let m3u8_start=m3u8_text.slice(0,m3u8_text.indexOf("#EXTINF")).trim();let m3u8_body=m3u8_text.slice(m3u8_text.indexOf("#EXTINF"),m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();let m3u8_end=m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")).trim();let murls=[];let m3_body_list=m3u8_body.split("\n");let m3_len=m3_body_list.length;let i=0;while(i{new_m3u8_body.push(it)})}}new_m3u8_body=new_m3u8_body.join("\n").trim();m3u8_text=[m3u8_start,new_m3u8_body,m3u8_end].join("\n").trim();return m3u8_text}function fixAdM3u8Ai(m3u8_url,headers){let ts=(new Date).getTime();let option=headers?{headers:headers}:{};function b(s1,s2){let i=0;while(iit.startsWith("#")?it:urljoin(m3u8_url,it)).join("\n");m3u8=m3u8.replace(/\n\n/gi,"\n");let last_url=m3u8.split("\n").slice(-1)[0];if(last_url.length<5){last_url=m3u8.split("\n").slice(-2)[0]}if(last_url.includes(".m3u8")&&last_url!==m3u8_url){m3u8_url=urljoin2(m3u8_url,last_url);log("嵌套的m3u8_url:"+m3u8_url);m3u8=request(m3u8_url,option)}let s=m3u8.trim().split("\n").filter(it=>it.trim()).join("\n");let ss=s.split("\n");let firststr="";let maxl=0;let kk=0;let kkk=2;let secondstr="";for(let i=0;i1){if(maxl>b(firststr,s)){if(secondstr.length<5)secondstr=s;kkk=kkk+2}else{maxl=b(firststr,s);kkk++}}kk++;if(kk>=20)break}}if(kkk>30)firststr=secondstr;let firststrlen=firststr.length;let ml=Math.round(ss.length/2).toString().length;let maxc=0;let laststr=ss.toReversed().find(x=>{if(!x.startsWith("#")){let k=b(reverseString(firststr),reverseString(x));maxl=b(firststr,x);maxc++;if(firststrlen-maxl<=ml+k||maxc>10){return true}}return false});log("最后一条切片:"+laststr);let ad_urls=[];for(let i=0;i=end){return lists}let first=lists[start];let second=lists[end];if(key){try{first=first[key];second=second[key]}catch(e){}}if(option&&typeof option==="function"){try{first=option(first);second=option(second)}catch(e){}}first+="";second+="";if(first.match(/(\d+)/)&&second.match(/(\d+)/)){let num1=Number(first.match(/(\d+)/)[1]);let num2=Number(second.match(/(\d+)/)[1]);if(num1>num2){lists.reverse()}}return lists}let VODS=[];let VOD={};let TABS=[];let LISTS=[];function getQuery(url){try{if(url.indexOf("?")>-1){url=url.slice(url.indexOf("?")+1)}let arr=url.split("#")[0].split("&");const resObj={};arr.forEach(item=>{let arr1=item.split("=");let key=arr1[0];let value=arr1.slice(1).join("=");resObj[key]=value});return resObj}catch(err){log(`getQuery发生错误:${e.message}`);return{}}}function urljoin(fromPath,nowPath){fromPath=fromPath||"";nowPath=nowPath||"";return joinUrl(fromPath,nowPath)}var urljoin2=urljoin;const defaultParser={pdfh:pdfh,pdfa:pdfa,pd:pd};function pdfh2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print(`html对象转文本发生了错误:${e.message}`)}let result=defaultParser.pdfh(html2,parse);let option=parse.includes("&&")?parse.split("&&").slice(-1)[0]:parse.split(" ").slice(-1)[0];if(/style/.test(option.toLowerCase())&&/url\(/.test(result)){try{result=result.match(/url\((.*?)\)/)[1];result=result.replace(/^['|"](.*)['|"]$/,"$1")}catch(e){}}return result}function pdfa2(html,parse){let html2=html;try{if(typeof html!=="string"){html2=html.rr(html.ele).toString()}}catch(e){print(`html对象转文本发生了错误:${e.message}`)}return defaultParser.pdfa(html2,parse)}function pd2(html,parse,uri){let ret=pdfh2(html,parse);if(typeof uri==="undefined"||!uri){uri=""}if(DOM_CHECK_ATTR.test(parse)&&!SPECIAL_URL.test(ret)){if(/http/.test(ret)){ret=ret.slice(ret.indexOf("http"))}else{ret=urljoin(MY_URL,ret)}}return ret}const parseTags={jsp:{pdfh:pdfh2,pdfa:pdfa2,pd:pd2},json:{pdfh(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}parse=parse.split("||");for(let ps of parse){let ret=cheerio.jp(ps,html);if(Array.isArray(ret)){ret=ret[0]||""}else{ret=ret||""}if(ret&&typeof ret!=="string"){ret=ret.toString()}if(ret){return ret}}return""},pdfa(html,parse){if(!parse||!parse.trim()){return""}if(typeof html==="string"){html=JSON.parse(html)}parse=parse.trim();if(!parse.startsWith("$.")){parse="$."+parse}let ret=cheerio.jp(parse,html);if(Array.isArray(ret)&&Array.isArray(ret[0])&&ret.length===1){return ret[0]||[]}return ret||[]},pd(html,parse){let ret=parseTags.json.pdfh(html,parse);if(ret){return urljoin(MY_URL,ret)}return ret}},jq:{pdfh(html,parse){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();let result=defaultParser.pdfh(html,parse);return result},pdfa(html,parse){if(!html||!parse||!parse.trim()){return[]}parse=parse.trim();let result=defaultParser.pdfa(html,parse);print(`pdfa解析${parse}=>${result.length}`);return result},pd(html,parse,base_url){if(!html||!parse||!parse.trim()){return""}parse=parse.trim();base_url=base_url||MY_URL;return defaultParser.pd(html,parse,base_url)}},getParse(p0){if(p0.startsWith("jsp:")){return this.jsp}else if(p0.startsWith("json:")){return this.json}else if(p0.startsWith("jq:")){return this.jq}else{return this.jq}}};const stringify=JSON.stringify;const jsp=parseTags.jsp;const jq=parseTags.jq;function readFile(filePath){filePath=filePath||"./uri.min.js";var fd=os.open(filePath);var buffer=new ArrayBuffer(1024);var len=os.read(fd,buffer,0,1024);console.log(len);let text=String.fromCharCode.apply(null,new Uint8Array(buffer));console.log(text);return text}function dealJson(html){try{html=html.trim();if(!(html.startsWith("{")&&html.endsWith("}")||html.startsWith("[")&&html.endsWith("]"))){html="{"+html.match(/.*?\{(.*)\}/m)[1]+"}"}}catch(e){}try{html=JSON.parse(html)}catch(e){}return html}var OcrApi={api:OCR_API,classification:function(img){let code="";try{log("通过drpy_ocr验证码接口过验证...");let html="";if(this.api.endsWith("drpy/text")){html=request(this.api,{data:{img:img},headers:{"User-Agent":PC_UA},method:"POST"},true)}else{html=post(this.api,{body:img})}code=html||""}catch(e){log(`OCR识别验证码发生错误:${e.message}`)}return code}};function verifyCode(url){let cnt=0;let host=getHome(url);let cookie="";while(cntit.toLowerCase()==="set-cookie");cookie=setCk?json[setCk].split(";")[0]:""}console.log("cookie:"+cookie);let img=json.body;let code=OcrApi.classification(img);console.log(`第${cnt+1}次验证码识别结果:${code}`);let submit_url=`${host}/index.php/ajax/verify_check?type=search&verify=${code}`;console.log(submit_url);let html=request(submit_url,{headers:{Cookie:cookie},method:"POST"});html=JSON.parse(html);if(html.msg==="ok"){console.log(`第${cnt+1}次验证码提交成功`);return cookie}else if(html.msg!=="ok"&&cnt+1>=OCR_RETRY){cookie=""}}catch(e){console.log(`第${cnt+1}次验证码提交失败:${e.message}`);if(cnt+1>=OCR_RETRY){cookie=""}}cnt+=1}return cookie}function setItem(k,v){local.set(RKEY,k,v);console.log(`规则${RKEY}设置${k} => ${v}`)}function getItem(k,v){return local.get(RKEY,k)||v}function clearItem(k){local.delete(RKEY,k)}function getHome(url){if(!url){return""}let tmp=url.split("//");url=tmp[0]+"//"+tmp[1].split("/")[0];try{url=decodeURIComponent(url)}catch(e){}return url}function buildUrl(url,obj){obj=obj||{};if(url.indexOf("?")<0){url+="?"}let param_list=[];let keys=Object.keys(obj);keys.forEach(it=>{param_list.push(it+"="+obj[it])});let prs=param_list.join("&");if(keys.length>0&&!url.endsWith("?")){url+="&"}url+=prs;return url}function $require(url){eval(request(url))}function keysToLowerCase(obj){return Object.keys(obj).reduce((result,key)=>{const newKey=key.toLowerCase();result[newKey]=obj[key];return result},{})}function parseQueryString(query){const params={};query.split("&").forEach(function(part){const regex=/^(.*?)=(.*)/;const match=part.match(regex);if(match){const key=decodeURIComponent(match[1]);const value=decodeURIComponent(match[2]);params[key]=value}});return params}function encodeIfContainsSpecialChars(value){const specialChars=":/?#[]@!$'()*+,;=%";if(specialChars.split("").some(char=>value.includes(char))){return encodeURIComponent(value)}return value}function objectToQueryString(obj){const encoded=[];for(let key in obj){if(obj.hasOwnProperty(key)){encoded.push(encodeURIComponent(key)+"="+encodeIfContainsSpecialChars(obj[key]))}}return encoded.join("&")}function request(url,obj,ocr_flag){ocr_flag=ocr_flag||false;if(typeof obj==="undefined"||!obj||obj==={}){if(!fetch_params||!fetch_params.headers){let headers={"User-Agent":MOBILE_UA};if(rule.headers){Object.assign(headers,rule.headers)}if(!fetch_params){fetch_params={}}fetch_params.headers=headers}if(!fetch_params.headers.Referer){fetch_params.headers.Referer=getHome(url)}obj=fetch_params}else{let headers=obj.headers||{};let keys=Object.keys(headers).map(it=>it.toLowerCase());if(!keys.includes("user-agent")){headers["User-Agent"]=MOBILE_UA;if(typeof fetch_params==="object"&&fetch_params&&fetch_params.headers){let fetch_headers=keysToLowerCase(fetch_params.headers);if(fetch_headers["user-agent"]){headers["User-Agent"]=fetch_headers["user-agent"]}}}if(!keys.includes("referer")){headers["Referer"]=getHome(url)}obj.headers=headers}if(rule.encoding&&rule.encoding!=="utf-8"&&!ocr_flag){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="text/html; charset="+rule.encoding}}if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="string"){if(!obj.headers.hasOwnProperty("Content-Type")&&!obj.headers.hasOwnProperty("content-type")){obj.headers["Content-Type"]="application/x-www-form-urlencoded; charset="+rule.encoding}}else if(typeof obj.body!="undefined"&&obj.body&&typeof obj.body==="object"){obj.data=obj.body;delete obj.body}if(!url){return obj.withHeaders?"{}":""}if(obj.toBase64){obj.buffer=2;delete obj.toBase64}if(obj.redirect===false){obj.redirect=0}if(obj.headers.hasOwnProperty("Content-Type")||obj.headers.hasOwnProperty("content-type")){let _contentType=obj.headers["Content-Type"]||obj.headers["content-type"]||"";if(_contentType.includes("application/x-www-form-urlencoded")){log("custom body is application/x-www-form-urlencoded");if(typeof obj.body=="string"){let temp_obj=parseQueryString(obj.body);console.log(JSON.stringify(temp_obj))}}}console.log(JSON.stringify(obj.headers));console.log("request:"+url+`|method:${obj.method||"GET"}|body:${obj.body||""}`);let res=req(url,obj);let html=res.content||"";if(obj.withHeaders){let htmlWithHeaders=res.headers;htmlWithHeaders.body=html;return JSON.stringify(htmlWithHeaders)}else{return html}}function post(url,obj){obj=obj||{};obj.method="POST";return request(url,obj)}function reqCookie(url,obj,all_cookie){obj=obj||{};obj.withHeaders=true;all_cookie=all_cookie||false;let html=request(url,obj);let json=JSON.parse(html);let setCk=Object.keys(json).find(it=>it.toLowerCase()==="set-cookie");let cookie=setCk?json[setCk]:"";if(Array.isArray(cookie)){cookie=cookie.join(";")}if(!all_cookie){cookie=cookie.split(";")[0]}html=json.body;return{cookie:cookie,html:html}}fetch=request;print=function(data){data=data||"";if(typeof data=="object"&&Object.keys(data).length>0){try{data=JSON.stringify(data);console.log(data)}catch(e){console.log(typeof data+":"+data.length);return}}else if(typeof data=="object"&&Object.keys(data).length<1){console.log("null object")}else{console.log(data)}};log=print;function checkHtml(html,url,obj){if(/\?btwaf=/.test(html)){let btwaf=html.match(/btwaf(.*?)"/)[1];url=url.split("#")[0]+"?btwaf"+btwaf;print("宝塔验证访问链接:"+url);html=request(url,obj)}return html}function getCode(url,obj){let html=request(url,obj);html=checkHtml(html,url,obj);return html}function getHtml(url){let obj={};if(rule.headers){obj.headers=rule.headers}let cookie=getItem(RULE_CK,"");if(cookie){if(obj.headers&&!Object.keys(obj.headers).map(it=>it.toLowerCase()).includes("cookie")){log("历史无cookie,新增过验证后的cookie");obj.headers["Cookie"]=cookie}else if(obj.headers&&obj.headers.cookie&&obj.headers.cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有小写过期的cookie,更新过验证后的cookie")}else if(obj.headers&&obj.headers.Cookie&&obj.headers.Cookie!==cookie){obj.headers["Cookie"]=cookie;log("历史有大写过期的cookie,更新过验证后的cookie")}else if(!obj.headers){obj.headers={Cookie:cookie};log("历史无headers,更新过验证后的含cookie的headers")}}let html=getCode(url,obj);return html}function homeParse(homeObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let classes=[];if(homeObj.class_name&&homeObj.class_url){let names=homeObj.class_name.split("&");let urls=homeObj.class_url.split("&");let cnt=Math.min(names.length,urls.length);for(let i=0;i0){classes=list}}}catch(e){console.log(e.message)}}else if(p.length>=3&&!is_json){try{let html=homeObj.home_html||getHtml(homeObj.MY_URL);if(html){homeHtmlCache=html;let list=_pdfa(html,p0);if(list&&list.length>0){list.forEach((it,idex)=>{try{let name=_pdfh(it,p[1]);if(homeObj.cate_exclude&&new RegExp(homeObj.cate_exclude).test(name)){return}let url=_pd(it,p[2]);if(p.length>3&&p[3]&&!homeObj.home_html){let exp=new RegExp(p[3]);url=url.match(exp)[1]}classes.push({type_id:url.trim(),type_name:name.trim()})}catch(e){console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`)}})}}}catch(e){console.log(e.message)}}}}classes=classes.filter(it=>!homeObj.cate_exclude||!new RegExp(homeObj.cate_exclude).test(it.type_name));let resp={class:classes};if(homeObj.filter){resp.filters=homeObj.filter}console.log(JSON.stringify(resp));return JSON.stringify(resp)}function getPP(p,pn,pp,ppn){try{let ps=p[pn]==="*"&&pp.length>ppn?pp[ppn]:p[pn];return ps}catch(e){return""}}function homeVodParse(homeVodObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];MY_URL=homeVodObj.homeUrl;console.log(MY_URL);let t1=(new Date).getTime();let p=homeVodObj.推荐;print("p:"+p);if(p==="*"&&rule.一级){p=rule.一级;homeVodObj.double=false}if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级?rule.一级.split(";"):[];if(p.startsWith("js:")){const TYPE="home";var input=MY_URL;HOST=rule.host;eval(p.replace("js:",""));d=VODS}else{p=p.split(";");if(!homeVodObj.double&&p.length<5){return"{}"}else if(homeVodObj.double&&p.length<6){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");let html=homeHtmlCache||getHtml(MY_URL);homeHtmlCache=undefined;if(is_json){html=dealJson(html)}try{console.log("double:"+homeVodObj.double);if(homeVodObj.double){let items=_pdfa(html,p0);let p1=getPP(p,1,pp,0);let p2=getPP(p,2,pp,1);let p3=getPP(p,3,pp,2);let p4=getPP(p,4,pp,3);let p5=getPP(p,5,pp,4);let p6=getPP(p,6,pp,5);for(let item of items){let items2=_pdfa(item,p1);for(let item2 of items2){try{let title=_pdfh(item2,p2);let img="";try{img=_pd(item2,p3)}catch(e){}let desc="";try{desc=_pdfh(item2,p4)}catch(e){}let links=[];for(let _p5 of p5.split("+")){let link=!homeVodObj.detailUrl?_pd(item2,_p5,MY_URL):_pdfh(item2,_p5);links.push(link)}let content;if(p.length>6&&p[6]){content=_pdfh(item2,p6)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log(`首页列表双层定位处理发生错误:${e.message}`)}}}}else{let items=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);for(let item of items){try{let title=_pdfh(item,p1);let img="";try{img=_pd(item,p2,MY_URL)}catch(e){}let desc="";try{desc=_pdfh(item,p3)}catch(e){}let links=[];for(let _p5 of p4.split("+")){let link=!homeVodObj.detailUrl?_pd(item,_p5,MY_URL):_pdfh(item,_p5);links.push(link)}let content;if(p.length>5&&p[5]){content=_pdfh(item,p5)}else{content=""}let vid=links.join("$");if(rule.二级==="*"){vid=vid+"@@"+title+"@@"+img}let vod={vod_name:title,vod_pic:img,vod_remarks:desc,vod_content:content,vod_id:vid};d.push(vod)}catch(e){console.log(`首页列表单层定位处理发生错误:${e.message}`)}}}}catch(e){}}let t2=(new Date).getTime();console.log("加载首页推荐耗时:"+(t2-t1)+"毫秒");if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}return JSON.stringify({list:d})}function categoryParse(cateObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let p=cateObj.一级;if(!p||typeof p!=="string"){return"{}"}let d=[];let url=cateObj.url.replaceAll("fyclass",cateObj.tid);if(cateObj.pg===1&&url.includes("[")&&url.includes("]")){url=url.split("[")[1].split("]")[0]}else if(cateObj.pg>1&&url.includes("[")&&url.includes("]")){url=url.split("[")[0]}if(rule.filter_url){if(!/fyfilter/.test(url)){if(!url.endsWith("&")&&!rule.filter_url.startsWith("&")){url+="&"}url+=rule.filter_url}else{url=url.replace("fyfilter",rule.filter_url)}url=url.replaceAll("fyclass",cateObj.tid);let fl=cateObj.filter?cateObj.extend:{};if(rule.filter_def&&typeof rule.filter_def==="object"){try{if(Object.keys(rule.filter_def).length>0&&rule.filter_def.hasOwnProperty(cateObj.tid)){let self_fl_def=rule.filter_def[cateObj.tid];if(self_fl_def&&typeof self_fl_def==="object"){let fl_def=JSON.parse(JSON.stringify(self_fl_def));fl=Object.assign(fl_def,fl)}}}catch(e){print(`合并不同分类对应的默认筛选出错:${e.message}`)}}let new_url;new_url=cheerio.jinja2(url,{fl:fl,fyclass:cateObj.tid});url=new_url}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",cateObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",cateObj.pg)}}MY_URL=url;console.log(MY_URL);p=p.trim();const MY_CATE=cateObj.tid;if(p.startsWith("js:")){var MY_FL=cateObj.extend;const TYPE="cate";var input=MY_URL;const MY_PAGE=cateObj.pg;var desc="";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let _ps=parseTags.getParse(p[0]);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p[0].startsWith("json:");p[0]=p[0].replace(/^(jsp:|json:|jq:)/,"");try{let html=getHtml(MY_URL);if(html){if(is_json){html=dealJson(html)}let list=_pdfa(html,p[0]);list.forEach(it=>{let links=p[4].split("+").map(p4=>{return!rule.detailUrl?_pd(it,p4,MY_URL):_pdfh(it,p4)});let link=links.join("$");let vod_id=rule.detailUrl?MY_CATE+"$"+link:link;let vod_name=_pdfh(it,p[1]).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p[2],MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}d.push({vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p[3]).replace(/\n|\t/g,"").trim()})})}}catch(e){console.log(e.message)}}if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}if(d.length>0){print(d.slice(0,2))}let pagecount=0;if(rule.pagecount&&typeof rule.pagecount==="object"&&rule.pagecount.hasOwnProperty(MY_CATE)){print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`);pagecount=parseInt(rule.pagecount[MY_CATE])}let nodata={list:[{vod_name:"无数据,防无限请求",vod_id:"no_data",vod_remarks:"不要点,会崩的",vod_pic:"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg"}],total:1,pagecount:1,page:1,limit:1};let vod=d.length<1?JSON.stringify(nodata):JSON.stringify({page:parseInt(cateObj.pg),pagecount:pagecount||999,limit:20,total:999,list:d});return vod}function searchParse(searchObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let d=[];if(!searchObj.searchUrl){return"{}"}if(rule.searchNoPage&&Number(searchObj.pg)>1){return"{}"}let p=searchObj.搜索==="*"&&rule.一级?rule.一级:searchObj.搜索;if(!p||typeof p!=="string"){return"{}"}p=p.trim();let pp=rule.一级?rule.一级.split(";"):[];let url=searchObj.searchUrl.replaceAll("**",searchObj.wd);if(searchObj.pg===1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[1].split("]")[0]}else if(searchObj.pg>1&&url.includes("[")&&url.includes("]")&&!url.includes("#")){url=url.split("[")[0]}if(/fypage/.test(url)){if(url.includes("(")&&url.includes(")")){let url_rep=url.match(/.*?\((.*)\)/)[1];let cnt_page=url_rep.replaceAll("fypage",searchObj.pg);let cnt_pg=eval(cnt_page);url=url.replaceAll(url_rep,cnt_pg).replaceAll("(","").replaceAll(")","")}else{url=url.replaceAll("fypage",searchObj.pg)}}MY_URL=url;console.log(MY_URL);if(p.startsWith("js:")){const TYPE="search";const MY_PAGE=searchObj.pg;const KEY=searchObj.wd;var input=MY_URL;var detailUrl=rule.detailUrl||"";eval(p.trim().replace("js:",""));d=VODS}else{p=p.split(";");if(p.length<5){return"{}"}let p0=getPP(p,0,pp,0);let _ps=parseTags.getParse(p0);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;let is_json=p0.startsWith("json:");p0=p0.replace(/^(jsp:|json:|jq:)/,"");try{let req_method=MY_URL.split(";").length>1?MY_URL.split(";")[1].toLowerCase():"get";let html;if(req_method==="post"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`post=》rurl:${rurl},params:${params}`);let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else if(req_method==="postjson"){let rurls=MY_URL.split(";")[0].split("#");let rurl=rurls[0];let params=rurls.length>1?rurls[1]:"";print(`postjson-》rurl:${rurl},params:${params}`);try{params=JSON.parse(params)}catch(e){params="{}"}let _fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let postData={body:params};Object.assign(_fetch_params,postData);html=post(rurl,_fetch_params)}else{html=getHtml(MY_URL)}if(html){let search_tag=rule.搜索验证标识||"系统安全验证|输入验证码";if(new RegExp(search_tag).test(html)){let cookie=verifyCode(MY_URL);if(cookie){console.log(`本次成功过验证,cookie:${cookie}`);setItem(RULE_CK,cookie)}else{console.log(`本次自动过搜索验证失败,cookie:${cookie}`)}html=getHtml(MY_URL)}if(!html.includes(searchObj.wd)){console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码");console.log(html)}if(is_json){html=dealJson(html)}let list=_pdfa(html,p0);let p1=getPP(p,1,pp,1);let p2=getPP(p,2,pp,2);let p3=getPP(p,3,pp,3);let p4=getPP(p,4,pp,4);let p5=getPP(p,5,pp,5);list.forEach(it=>{let links=p4.split("+").map(_p4=>{return!rule.detailUrl?_pd(it,_p4,MY_URL):_pdfh(it,_p4)});let link=links.join("$");let content;if(p.length>5&&p[5]){content=_pdfh(it,p5)}else{content=""}let vod_id=link;let vod_name=_pdfh(it,p1).replace(/\n|\t/g,"").trim();let vod_pic=_pd(it,p2,MY_URL);if(rule.二级==="*"){vod_id=vod_id+"@@"+vod_name+"@@"+vod_pic}let ob={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,vod_remarks:_pdfh(it,p3).replace(/\n|\t/g,"").trim(),vod_content:content.replace(/\n|\t/g,"").trim()};d.push(ob)})}}catch(e){print(`搜索发生错误:${e.message}`);return"{}"}}if(rule.图片替换){if(rule.图片替换.startsWith("js:")){d.forEach(it=>{try{var input=it.vod_pic;eval(rule.图片替换.trim().replace("js:",""));it.vod_pic=input}catch(e){log(`图片:${it.vod_pic}替换错误:${e.message}`)}})}else if(rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic.replace(replace_from,replace_to)}})}}if(rule.图片来源){d.forEach(it=>{if(it.vod_pic&&it.vod_pic.startsWith("http")){it.vod_pic=it.vod_pic+rule.图片来源}})}return JSON.stringify({page:parseInt(searchObj.pg),pagecount:10,limit:20,total:100,list:d})}function detailParse(detailObj){let t1=(new Date).getTime();fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));let orId=detailObj.orId;let vod_name="片名";let vod_pic="";let vod_id=orId;if(rule.二级==="*"){let extra=orId.split("@@");vod_name=extra.length>1?extra[1]:vod_name;vod_pic=extra.length>2?extra[2]:vod_pic}let vod={vod_id:vod_id,vod_name:vod_name,vod_pic:vod_pic,type_name:"类型",vod_year:"年份",vod_area:"地区",vod_remarks:"更新信息",vod_actor:"主演",vod_director:"导演",vod_content:"简介"};let p=detailObj.二级;let url=detailObj.url;let detailUrl=detailObj.detailUrl;let fyclass=detailObj.fyclass;let tab_exclude=detailObj.tab_exclude;let html=detailObj.html||"";MY_URL=url;if(detailObj.二级访问前){try{print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`);eval(detailObj.二级访问前.trim().replace("js:",""))}catch(e){print(`二级访问前执行代码出现错误:${e.message}`)}}if(p==="*"){vod.vod_play_from="道长在线";vod.vod_remarks=detailUrl;vod.vod_actor="没有二级,只有一级链接直接嗅探播放";vod.vod_content=MY_URL;vod.vod_play_url="嗅探播放$"+MY_URL.split("@@")[0]}else if(typeof p==="string"&&p.trim().startsWith("js:")){const TYPE="detail";var input=MY_URL;var play_url="";eval(p.trim().replace("js:",""));vod=VOD;console.log(JSON.stringify(vod))}else if(p&&typeof p==="object"){let tt1=(new Date).getTime();if(!html){html=getHtml(MY_URL)}print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`);let _ps;if(p.is_json){print("二级是json");_ps=parseTags.json;html=dealJson(html)}else if(p.is_jsp){print("二级是jsp");_ps=parseTags.jsp}else if(p.is_jq){print("二级是jq");_ps=parseTags.jq}else{print("二级默认jq");_ps=parseTags.jq}let tt2=(new Date).getTime();print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`);_pdfa=_ps.pdfa;_pdfh=_ps.pdfh;_pd=_ps.pd;if(p.title){let p1=p.title.split(";");vod.vod_name=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();let type_name=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").replace(/ /g,"").trim():"";vod.type_name=type_name||vod.type_name}if(p.desc){try{let p1=p.desc.split(";");vod.vod_remarks=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim();vod.vod_year=p1.length>1?_pdfh(html,p1[1]).replace(/\n|\t/g,"").trim():"";vod.vod_area=p1.length>2?_pdfh(html,p1[2]).replace(/\n|\t/g,"").trim():"";vod.vod_actor=p1.length>3?_pdfh(html,p1[3]).replace(/\n|\t/g,"").trim():"";vod.vod_director=p1.length>4?_pdfh(html,p1[4]).replace(/\n|\t/g,"").trim():""}catch(e){}}if(p.content){try{let p1=p.content.split(";");vod.vod_content=_pdfh(html,p1[0]).replace(/\n|\t/g,"").trim()}catch(e){}}if(p.img){try{let p1=p.img.split(";");vod.vod_pic=_pd(html,p1[0],MY_URL)}catch(e){}}let vod_play_from="$$$";let playFrom=[];if(p.重定向&&p.重定向.startsWith("js:")){print("开始执行重定向代码:"+p.重定向);html=eval(p.重定向.replace("js:",""))}if(p.tabs){if(p.tabs.startsWith("js:")){print("开始执行tabs代码:"+p.tabs);var input=MY_URL;eval(p.tabs.replace("js:",""));playFrom=TABS}else{let p_tab=p.tabs.split(";")[0];let vHeader=_pdfa(html,p_tab);console.log(vHeader.length);let tab_text=p.tab_text||"body&&Text";let new_map={};for(let v of vHeader){let v_title=_pdfh(v,tab_text).trim();if(!v_title){v_title="线路空"}console.log(v_title);if(tab_exclude&&new RegExp(tab_exclude).test(v_title)){continue}if(!new_map.hasOwnProperty(v_title)){new_map[v_title]=1}else{new_map[v_title]+=1}if(new_map[v_title]>1){v_title+=Number(new_map[v_title]-1)}playFrom.push(v_title)}}console.log(JSON.stringify(playFrom))}else{playFrom=["道长在线"]}vod.vod_play_from=playFrom.join(vod_play_from);let vod_play_url="$$$";let vod_tab_list=[];if(p.lists){if(p.lists.startsWith("js:")){print("开始执行lists代码:"+p.lists);try{var input=MY_URL;var play_url="";eval(p.lists.replace("js:",""));for(let i in LISTS){if(LISTS.hasOwnProperty(i)){try{LISTS[i]=LISTS[i].map(it=>it.split("$").slice(0,2).join("$"))}catch(e){print(`格式化LISTS发生错误:${e.message}`)}}}vod_play_url=LISTS.map(it=>it.join("#")).join(vod_play_url)}catch(e){print(`js执行lists: 发生错误:${e.message}`)}}else{let list_text=p.list_text||"body&&Text";let list_url=p.list_url||"a&&href";let list_url_prefix=p.list_url_prefix||"";let is_tab_js=p.tabs.trim().startsWith("js:");for(let i=0;i1&&!is_tab_js?p.tabs.split(";")[1]:"";let p1=p.lists.replaceAll("#idv",tab_name).replaceAll("#id",i);tab_ext=tab_ext.replaceAll("#idv",tab_name).replaceAll("#id",i);let tabName=tab_ext?_pdfh(html,tab_ext):tab_name;console.log(tabName);let new_vod_list=[];let tt1=(new Date).getTime();if(typeof pdfl==="function"){new_vod_list=pdfl(html,p1,list_text,list_url,MY_URL);if(list_url_prefix){new_vod_list=new_vod_list.map(it=>it.split("$")[0]+"$"+list_url_prefix+it.split("$").slice(1).join("$"))}}else{let vodList=[];try{vodList=_pdfa(html,p1);console.log("len(vodList):"+vodList.length)}catch(e){}for(let i=0;i0){new_vod_list=forceOrder(new_vod_list,"",x=>x.split("$")[0]);console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`)}let vlist=new_vod_list.join("#");vod_tab_list.push(vlist)}vod_play_url=vod_tab_list.join(vod_play_url)}}vod.vod_play_url=vod_play_url}if(rule.图片替换&&rule.图片替换.includes("=>")){let replace_from=rule.图片替换.split("=>")[0];let replace_to=rule.图片替换.split("=>")[1];vod.vod_pic=vod.vod_pic.replace(replace_from,replace_to)}if(rule.图片来源&&vod.vod_pic&&vod.vod_pic.startsWith("http")){vod.vod_pic=vod.vod_pic+rule.图片来源}if(!vod.vod_id||vod_id.includes("$")&&vod.vod_id!==vod_id){vod.vod_id=vod_id}let t2=(new Date).getTime();console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`);try{vod=vodDeal(vod)}catch(e){console.log(`vodDeal发生错误:${e.message}`)}return JSON.stringify({list:[vod]})}function get_tab_index(vod){let obj={};vod.vod_play_from.split("$$$").forEach((it,index)=>{obj[it]=index});return obj}function vodDeal(vod){let vod_play_from=vod.vod_play_from.split("$$$");let vod_play_url=vod.vod_play_url.split("$$$");let tab_removed_list=vod_play_from;let tab_ordered_list=vod_play_from;let tab_renamed_list=vod_play_from;let tab_list=vod_play_from;let play_ordered_list=vod_play_url;if(rule.tab_remove&&rule.tab_remove.length>0||rule.tab_order&&rule.tab_order.length>0){let tab_index_dict=get_tab_index(vod);if(rule.tab_remove&&rule.tab_remove.length>0){tab_removed_list=vod_play_from.filter(it=>!rule.tab_remove.includes(it));tab_list=tab_removed_list}if(rule.tab_order&&rule.tab_order.length>0){let tab_order=rule.tab_order;tab_ordered_list=tab_removed_list.sort((a,b)=>{return(tab_order.indexOf(a)===-1?9999:tab_order.indexOf(a))-(tab_order.indexOf(b)===-1?9999:tab_order.indexOf(b))});tab_list=tab_ordered_list}play_ordered_list=tab_list.map(it=>vod_play_url[tab_index_dict[it]])}if(rule.tab_rename&&typeof rule.tab_rename==="object"&Object.keys(rule.tab_rename).length>0){tab_renamed_list=tab_list.map(it=>rule.tab_rename[it]||it);tab_list=tab_renamed_list}vod.vod_play_from=tab_list.join("$$$");vod.vod_play_url=play_ordered_list.join("$$$");return vod}function tellIsJx(url){try{let is_vip=!/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0])&&是否正版(url);return is_vip?1:0}catch(e){return 1}}function playParse(playObj){fetch_params=JSON.parse(JSON.stringify(rule_fetch_params));MY_URL=playObj.url;var MY_FLAG=playObj.flag;if(!/http/.test(MY_URL)){try{MY_URL=base64Decode(MY_URL)}catch(e){}}MY_URL=decodeURIComponent(MY_URL);var input=MY_URL;var flag=MY_FLAG;let common_play={parse:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0:1,url:input,flag:flag,jx:tellIsJx(input)};let lazy_play;if(!rule.play_parse||!rule.lazy){lazy_play=common_play}else if(rule.play_parse&&rule.lazy&&typeof rule.lazy==="string"){try{let lazy_code=rule.lazy.trim();if(lazy_code.startsWith("js:")){lazy_code=lazy_code.replace("js:","").trim()}print("开始执行js免嗅=>"+lazy_code);eval(lazy_code);lazy_play=typeof input==="object"?input:{parse:SPECIAL_URL.test(input)||/^(push:)/.test(input)?0:1,jx:tellIsJx(input),url:input}}catch(e){print(`js免嗅错误:${e.message}`);lazy_play=common_play}}else{lazy_play=common_play}if(Array.isArray(rule.play_json)&&rule.play_json.length>0){let web_url=lazy_play.url;for(let pjson of rule.play_json){if(pjson.re&&(pjson.re==="*"||web_url.match(new RegExp(pjson.re)))){if(pjson.json&&typeof pjson.json==="object"){let base_json=pjson.json;lazy_play=Object.assign(lazy_play,base_json);break}}}}else if(rule.play_json&&!Array.isArray(rule.play_json)){let base_json={jx:1,parse:1};lazy_play=Object.assign(lazy_play,base_json)}else if(!rule.play_json){let base_json={jx:0,parse:1};lazy_play=Object.assign(lazy_play,base_json)}console.log(JSON.stringify(lazy_play));return JSON.stringify(lazy_play)}function proxyParse(proxyObj){var input=proxyObj.params;if(proxyObj.proxy_rule){log("准备执行本地代理规则:\n"+proxyObj.proxy_rule);try{eval(proxyObj.proxy_rule);if(input&&input!==proxyObj.params&&Array.isArray(input)&&input.length>=3){return input}else{return[404,"text/plain","Not Found"]}}catch(e){return[500,"text/plain","代理规则错误:"+e.message]}}else{return[404,"text/plain","Not Found"]}}function isVideoParse(isVideoObj){var input=isVideoObj.url;if(!isVideoObj.t){let re_matcher=new RegExp(isVideoObj.isVideo,"i");return re_matcher.test(input)}else{try{eval(isVideoObj.isVideo);if(typeof input==="boolean"){return input}else{return false}}catch(e){log(`执行嗅探规则发生错误:${e.message}`);return false}}}function getOriginalJs(js_code){let current_match=/var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/;if(current_match.test(js_code)){return js_code}let rsa_private_key="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs=";let decode_content="";function aes_decrypt(data){let key=CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A");let iv=CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A");let encrypted=CryptoJS.AES.decrypt({ciphertext:CryptoJS.enc.Base64.parse(data)},key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);return encrypted}let error_log=false;function logger(text){if(error_log){log(text)}}let decode_funcs=[text=>{try{return ungzip(text)}catch(e){logger("非gzip加密");return""}},text=>{try{return base64Decode(text)}catch(e){logger("非b64加密");return""}},text=>{try{return aes_decrypt(text)}catch(e){logger("非aes加密");return""}},text=>{try{return RSA.decode(text,rsa_private_key,null)}catch(e){logger("非rsa加密");return""}}];let func_index=0;while(!current_match.test(decode_content)){decode_content=decode_funcs[func_index](js_code);func_index++;if(func_index>=decode_funcs.length){break}}return decode_content}function runMain(main_func_code,arg){let mainFunc=function(){return""};try{eval(main_func_code+"\nmainFunc=main;");return mainFunc(arg)}catch(e){log(`执行main_funct发生了错误:${e.message}`);return""}}function init(ext){console.log("init");rule={};rule_fetch_params={};fetch_params=null;try{let muban=模板.getMubans();if(typeof ext=="object"){rule=ext}else if(typeof ext=="string"){let is_file=ext.startsWith("file://");if(ext.startsWith("http")||is_file){let query=getQuery(ext);if(is_file){ext=ext.split("?")[0]}let js=request(ext,{method:"GET"});if(js){js=getOriginalJs(js);eval("(function(){"+js.replace("var rule","rule")+"})()")}if(query.type==="url"&&query.params){if(is_file&&/^http/.test(query.params)){rule.params=query.params}else{rule.params=urljoin(ext,query.params)}}else if(query.params){rule.params=query.params}}else{ext=getOriginalJs(ext);eval("(function(){"+ext.replace("var rule","rule")+"})()")}}else{console.log(`规则加载失败,不支持的规则类型:${typeof ext}`);return}rule.host=(rule.host||"").rstrip("/");HOST=rule.host;if(rule.hostJs){console.log(`检测到hostJs,准备执行...`);try{eval(rule.hostJs);rule.host=HOST.rstrip("/")}catch(e){console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`)}}if(rule["模板"]==="自动"){try{let host_headers=rule["headers"]||{};let host_html=getCode(HOST,{headers:host_headers});let match_muban="";let muban_keys=Object.keys(muban).filter(it=>!/默认|短视2|采集1/.test(it));for(let muban_key of muban_keys){try{let host_data=JSON.parse(home({},host_html,muban[muban_key].class_parse));if(host_data.class&&host_data.class.length>0){match_muban=muban_key;console.log(`自动匹配模板:【${muban_key}】`);break}}catch(e){console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`)}}if(match_muban){muban["自动"]=muban[match_muban];if(rule["模板修改"]&&rule["模板修改"].startsWith("js:")){eval(rule["模板修改"].replace("js:","").trim())}}else{delete rule["模板"]}}catch(e){delete rule["模板"]}}if(rule.模板&&muban.hasOwnProperty(rule.模板)){print("继承模板:"+rule.模板);rule=Object.assign(muban[rule.模板],rule)}let rule_cate_excludes=(rule.cate_exclude||"").split("|").filter(it=>it.trim());let rule_tab_excludes=(rule.tab_exclude||"").split("|").filter(it=>it.trim());rule_cate_excludes=rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it=>it.trim()));rule_tab_excludes=rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it=>it.trim()));rule.cate_exclude=rule_cate_excludes.join("|");rule.tab_exclude=rule_tab_excludes.join("|");rule.类型=rule.类型||"影视";rule.url=rule.url||"";rule.double=rule.double||false;rule.homeUrl=rule.homeUrl||"";rule.detailUrl=rule.detailUrl||"";rule.searchUrl=rule.searchUrl||"";rule.homeUrl=rule.host&&rule.homeUrl?urljoin(rule.host,rule.homeUrl):rule.homeUrl||rule.host;rule.homeUrl=cheerio.jinja2(rule.homeUrl,{rule:rule});rule.detailUrl=rule.host&&rule.detailUrl?urljoin(rule.host,rule.detailUrl):rule.detailUrl;rule.二级访问前=rule.二级访问前||"";if(rule.url.includes("[")&&rule.url.includes("]")){let u1=rule.url.split("[")[0];let u2=rule.url.split("[")[1].split("]")[0];rule.url=rule.host&&rule.url?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.url}else{rule.url=rule.host&&rule.url?urljoin(rule.host,rule.url):rule.url}if(rule.searchUrl.includes("[")&&rule.searchUrl.includes("]")&&!rule.searchUrl.includes("#")){let u1=rule.searchUrl.split("[")[0];let u2=rule.searchUrl.split("[")[1].split("]")[0];rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,u1)+"["+urljoin(rule.host,u2)+"]":rule.searchUrl}else{rule.searchUrl=rule.host&&rule.searchUrl?urljoin(rule.host,rule.searchUrl):rule.searchUrl}rule.timeout=rule.timeout||5e3;rule.encoding=rule.编码||rule.encoding||"utf-8";rule.search_encoding=rule.搜索编码||rule.search_encoding||"";rule.图片来源=rule.图片来源||"";rule.图片替换=rule.图片替换||"";rule.play_json=rule.hasOwnProperty("play_json")?rule.play_json:[];rule.pagecount=rule.hasOwnProperty("pagecount")?rule.pagecount:{};rule.proxy_rule=rule.hasOwnProperty("proxy_rule")?rule.proxy_rule:"";if(!rule.hasOwnProperty("sniffer")){rule.sniffer=false}rule.sniffer=rule.hasOwnProperty("sniffer")?rule.sniffer:"";rule.sniffer=!!(rule.sniffer&&rule.sniffer!=="0"&&rule.sniffer!=="false");rule.isVideo=rule.hasOwnProperty("isVideo")?rule.isVideo:"";if(rule.sniffer&&!rule.isVideo){rule.isVideo="http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*"}rule.tab_remove=rule.hasOwnProperty("tab_remove")?rule.tab_remove:[];rule.tab_order=rule.hasOwnProperty("tab_order")?rule.tab_order:[];rule.tab_rename=rule.hasOwnProperty("tab_rename")?rule.tab_rename:{};if(rule.headers&&typeof rule.headers==="object"){try{let header_keys=Object.keys(rule.headers);for(let k of header_keys){if(k.toLowerCase()==="user-agent"){let v=rule.headers[k];console.log(v);if(["MOBILE_UA","PC_UA","UC_UA","IOS_UA","UA"].includes(v)){rule.headers[k]=eval(v)}}else if(k.toLowerCase()==="cookie"){let v=rule.headers[k];if(v&&v.startsWith("http")){console.log(v);try{v=fetch(v);console.log(v);rule.headers[k]=v}catch(e){console.log(`从${v}获取cookie发生错误:${e.message}`)}}}}}catch(e){console.log(`处理headers发生错误:${e.message}`)}}else{rule.headers={}}oheaders=deepCopy(rule.headers);rule_fetch_params={headers:rule.headers,timeout:rule.timeout,encoding:rule.encoding};RKEY=typeof key!=="undefined"&&key?key:"drpy_"+(rule.title||rule.host);pre();init_test()}catch(e){console.log(`init_test发生错误:${e.message}`)}}let homeHtmlCache=undefined;function home(filter,home_html,class_parse){console.log("home");home_html=home_html||"";class_parse=class_parse||"";if(typeof rule.filter==="string"&&rule.filter.trim().length>0){try{let filter_json=ungzip(rule.filter.trim());rule.filter=JSON.parse(filter_json)}catch(e){rule.filter={}}}let homeObj={filter:rule.filter||false,MY_URL:rule.homeUrl,class_name:rule.class_name||"",class_url:rule.class_url||"",class_parse:class_parse||rule.class_parse||"",cate_exclude:rule.cate_exclude,home_html:home_html};return homeParse(homeObj)}function homeVod(params){console.log("homeVod");let homeVodObj={"推荐":rule.推荐,double:rule.double,homeUrl:rule.homeUrl,detailUrl:rule.detailUrl};return homeVodParse(homeVodObj)}function category(tid,pg,filter,extend){let cateObj={url:rule.url,"一级":rule.一级,tid:tid,pg:parseInt(pg),filter:filter,extend:extend};return categoryParse(cateObj)}function detail(vod_url){let orId=vod_url;let fyclass="";log("orId:"+orId);if(vod_url.indexOf("$")>-1){let tmp=vod_url.split("$");fyclass=tmp[0];vod_url=tmp[1]}let detailUrl=vod_url.split("@@")[0];let url;if(!detailUrl.startsWith("http")&&!detailUrl.includes("/")){url=rule.detailUrl.replaceAll("fyid",detailUrl).replaceAll("fyclass",fyclass)}else if(detailUrl.includes("/")){url=urljoin(rule.homeUrl,detailUrl)}else{url=detailUrl}let detailObj={orId:orId,url:url,"二级":rule.二级,"二级访问前":rule.二级访问前,detailUrl:detailUrl,fyclass:fyclass,tab_exclude:rule.tab_exclude};return detailParse(detailObj)}function play(flag,id,flags){let playObj={url:id,flag:flag,flags:flags};return playParse(playObj)}function search(wd,quick,pg){if(rule.search_encoding){if(rule.search_encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.search_encoding)}}else if(rule.encoding&&rule.encoding.toLowerCase()!=="utf-8"){wd=encodeStr(wd,rule.encoding)}let searchObj={searchUrl:rule.searchUrl,"搜索":rule.搜索,wd:wd,pg:pg||1,quick:quick};return searchParse(searchObj)}function proxy(params){if(rule.proxy_rule&&rule.proxy_rule.trim()){rule.proxy_rule=rule.proxy_rule.trim()}if(rule.proxy_rule.startsWith("js:")){rule.proxy_rule=rule.proxy_rule.replace("js:","")}let proxyObj={params:params,proxy_rule:rule.proxy_rule};return proxyParse(proxyObj)}function sniffer(){let enable_sniffer=rule.sniffer||false;if(enable_sniffer){log("开始执行辅助嗅探代理规则...")}return enable_sniffer}function isVideo(url){let t=0;let is_video;if(rule.isVideo&&rule.isVideo.trim()){is_video=rule.isVideo.trim()}if(is_video.startsWith("js:")){is_video=is_video.replace("js:","");t=1}let isVideoObj={url:url,isVideo:is_video,t:t};let result=isVideoParse(isVideoObj);if(result){log("成功执行辅助嗅探规则并检测到视频地址:\n"+rule.isVideo)}return result}function getRule(key){return key?rule[key]||"":rule}function deepCopy(_obj){return JSON.parse(JSON.stringify(_obj))}function matchesAll(str,pattern,flatten){if(!pattern.global){pattern=new RegExp(pattern.source,"g"+(pattern.ignoreCase?"i":"")+(pattern.multiline?"m":""))}var matches=[];var match;while((match=pattern.exec(str))!==null){matches.push(match)}return flatten?matches.flat():matches}function stringUtils(){Object.defineProperties(String.prototype,{replaceX:{value:function(regex,replacement){let matches=matchesAll(this,regex,true);if(matches&&matches.length>1){const hasCaptureGroup=/\$\d/.test(replacement);if(hasCaptureGroup){return this.replace(regex,m=>m.replace(regex,replacement))}else{return this.replace(regex,(m,p1)=>m.replace(p1,replacement))}}return this.replace(regex,replacement)},configurable:true,enumerable:false,writable:true},parseX:{get:function(){try{return JSON.parse(this)}catch(e){console.log(e.message);return this.startsWith("[")?[]:{}}},configurable:true,enumerable:false}})}function cut(text,start,end,method,All){let result="";let c=(t,s,e)=>{let result="";let rs=[];let results=[];try{let lr=new RegExp(String.raw`${s}`.toString());let rr=new RegExp(String.raw`${e}`.toString());const segments=t.split(lr);if(segments.length<2)return"";let cutSegments=segments.slice(1).map(segment=>{let splitSegment=segment.split(rr);return splitSegment.length<2?undefined:splitSegment[0]+e}).filter(f=>f);if(All){return`[${cutSegments.join(",")}]`}else{return cutSegments[0]}}catch(e){console.log(`Error cutting text:${e.message}`)}return result};result=c(text,start,end);stringUtils();if(method&&typeof method==="function"){result=method(result)}return result}function DRPY(){return{runMain:runMain,getRule:getRule,init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,fixAdM3u8Ai:fixAdM3u8Ai}}export default{runMain:runMain,getRule:getRule,init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search,proxy:proxy,sniffer:sniffer,isVideo:isVideo,fixAdM3u8Ai:fixAdM3u8Ai,DRPY:DRPY};
diff --git a/南风/api/模板.js b/南风/api/模板.js
index 82b037b..f63e1b7 100644
--- a/南风/api/模板.js
+++ b/南风/api/模板.js
@@ -1,50 +1,119 @@
-if (typeof Object.assign != 'function') {
+if (typeof Object.assign !== 'function') {
Object.assign = function () {
- var target = arguments[0];
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i];
- for (var key in source) {
- if (Object.prototype.hasOwnProperty.call(source, key)) {
- target[key] = source[key];
+ let target = arguments[0];
+ for (let i = 1; i < arguments.length; i++) {
+ let source = arguments[i];
+ for (let key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
}
}
- }
- return target;
-};
+ return target;
+ };
}
+
+// 通用免嗅探播放
+let common_lazy = `js:
+ let html = request(input);
+ let hconf = html.match(/r player_.*?=(.*?))[1];
+ let json = JSON5.parse(hconf);
+ let url = json.url;
+ if (json.encrypt == '1') {
+ url = unescape(url);
+ } else if (json.encrypt == '2') {
+ url = unescape(base64Decode(url));
+ }
+ if (/\\.(m3u8|mp4|m4a|mp3)/.test(url)) {
+ input = {
+ parse: 0,
+ jx: 0,
+ url: url,
+ };
+ } else {
+ input;
+ }`;
+// 默认嗅探播放
+
+let def_lazy = `js:
+ input = { parse: 1, url: input, js: '' };`;
+// 采集站播放
+
+let cj_lazy = `js:
+ if (/\\.(m3u8|mp4)/.test(input)) {
+ input = { parse: 0, url: input };
+ } else {
+ if (rule.parse_url.startsWith('json:')) {
+ let purl = rule.parse_url.replace('json:', '') + input;
+ let html = request(purl);
+ let json = JSON.parse(html);
+ if (json.url) {
+ input = { parse: 0, url: json.url };
+ }
+ } else {
+ input = rule.parse_url + input;
+ }
+ }`;
+
function getMubans() {
- var mubanDict = { // 模板字典
- mxpro: {
+ const mubanDict = { // 模板字典
+ mx: {
title: '',
host: '',
- // homeUrl:'/',
+ url: '/vodshow/fyclass--------fypage---/',
+ searchUrl: '/vodsearch/**----------fypage---/',
+ class_parse: '.top_nav li;a&&Text;a&&href;.*/(.*?)/',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 0,
+ headers: {
+ 'User-Agent': 'MOBILE_UA',
+ },
+ play_parse: true,
+ lazy: common_lazy,
+ limit: 6,
+ double: true,
+ 推荐: '.cbox_list;*;*;*;*;*',
+ 一级: 'ul.vodlist li;a&&title;a&&data-original;.pic_text&&Text;a&&href',
+ 二级: {
+ title: 'h2&&Text;.content_detail:eq(1)&&li&&a:eq(2)&&Text',
+ img: '.vodlist_thumb&&data-original',
+ desc: '.content_detail:eq(1)&&li:eq(1)&&Text;.content_detail:eq(1)&&li&&a&&Text;.content_detail:eq(1)&&li&&a:eq(1)&&Text;.content_detail:eq(1)&&li:eq(2)&&Text;.content_detail:eq(1)&&li:eq(3)&&Text',
+ content: '.content_desc&&span&&Text',
+ tabs: '.play_source_tab&&a',
+ lists: '.content_playlist:eq(#id) li',
+ },
+ 搜索: '*',
+ },
+ mxpro: {
+ title: '',
+ host: '', // homeUrl:'/',
url: '/vodshow/fyclass--------fypage---.html',
searchUrl: '/vodsearch/**----------fypage---.html',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
- 'User-Agent': 'MOBILE_UA',
- // "Cookie": "searchneed=ok"
+ 'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
- class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;/(\\d+).html',
+ class_parse: '.navbar-items li:gt(0):lt(10);a&&Text;a&&href;/(\\d+)',
play_parse: true,
- lazy: '',
+ lazy: common_lazy,
limit: 6,
- 推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
double: true, // 推荐内容是否双层定位
+ 推荐: '.tab-list.active;a.module-poster-item.module-item;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href',
一级: 'body a.module-poster-item.module-item;a&&title;.lazyload&&data-original;.module-item-note&&Text;a&&href',
二级: {
- "title": "h1&&Text;.module-info-tag&&Text",
- "img": ".lazyload&&data-original",
- "desc": ".module-info-item:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(3)&&Text",
- "content": ".module-info-introduction&&Text",
- "tabs": ".module-tab-item",
- "lists": ".module-play-list:eq(#id) a"
+ title: 'h1&&Text;.module-info-tag-link:eq(-1)&&Text',
+ img: '.lazyload&&data-original||data-src||src',
+ desc: '.module-info-item:eq(-2)&&Text;.module-info-tag-link&&Text;.module-info-tag-link:eq(1)&&Text;.module-info-item:eq(2)&&Text;.module-info-item:eq(1)&&Text',
+ content: '.module-info-introduction&&Text',
+ tabs: '.module-tab-item',
+ lists: '.module-play-list:eq(#id) a',
+ tab_text: 'div--small&&Text',
},
搜索: 'body .module-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text',
- },
- mxone5: {
+ }, mxone5: {
title: '',
host: '',
url: '/show/fyclass--------fypage---.html',
@@ -52,24 +121,24 @@ function getMubans() {
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
- class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?).html',
+ class_parse: '.nav-menu-items&&li;a&&Text;a&&href;.*/(.*?)\.html',
play_parse: true,
- lazy: '',
+ lazy: common_lazy,
limit: 6,
- 推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
+ 推荐: '.module-list;.module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
一级: '.module-items .module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href',
二级: {
- "title": "h1&&Text;.tag-link&&Text",
- "img": ".module-item-pic&&img&&data-src",
- "desc": ".video-info-items:eq(0)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(2)&&Text;.video-info-items:eq(3)&&Text",
- "content": ".vod_content&&Text",
- "tabs": ".module-tab-item",
- "lists": ".module-player-list:eq(#id)&&.scroll-content&&a"
+ title: 'h1&&Text;.tag-link&&Text',
+ img: '.module-item-pic&&img&&data-src',
+ desc: '.video-info-items:eq(3)&&Text;.tag-link:eq(2)&&Text;.tag-link:eq(1)&&Text;.video-info-items:eq(1)&&Text;.video-info-items:eq(0)&&Text',
+ content: '.vod_content&&Text',
+ tabs: '.module-tab-item',
+ lists: '.module-player-list:eq(#id)&&.scroll-content&&a',
+ tab_text: 'div--small&&Text',
},
搜索: '.module-items .module-search-item;a&&title;img&&data-src;.video-serial&&Text;a&&href',
- },
- 首图: {
+ }, 首图: {
title: '',
host: '',
url: '/vodshow/fyclass--------fypage---/',
@@ -78,27 +147,26 @@ function getMubans() {
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
- 'User-Agent': 'MOBILE_UA',
- // "Cookie": "searchneed=ok"
+ 'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
- class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(5);a&&Text;a&&href;/(\\d+).html',
+ class_parse: '.myui-header__menu li.hidden-sm:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
play_parse: true,
- lazy: '',
+ lazy: common_lazy,
limit: 6,
- 推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
+ 推荐: 'ul.myui-vodlist.clearfix;li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
一级: '.myui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
- "title": ".myui-content__detail .title&&Text;.myui-content__detail p:eq(-2)&&Text",
- "img": ".myui-content__thumb .lazyload&&data-original",
- "desc": ".myui-content__detail p:eq(0)&&Text;.myui-content__detail p:eq(1)&&Text;.myui-content__detail p:eq(2)&&Text",
- "content": ".content&&Text",
- "tabs": ".nav-tabs:eq(0) li",
- "lists": ".myui-content__list:eq(#id) li"
+ title: '.myui-content__detail .title--span&&Text;.myui-content__detail p.data:eq(3)&&Text',
+ img: '.myui-content__thumb .lazyload&&data-original',
+ desc: '.myui-content__detail p.otherbox&&Text;.year&&Text;.myui-content__detail p.data:eq(4)&&Text;.myui-content__detail p.data:eq(2)&&Text;.myui-content__detail p.data:eq(0)&&Text',
+ content: '.content&&Text',
+ tabs: '.myui-panel__head&&li',
+ // tabs: '.nav-tabs&&li',
+ lists: '.myui-content__list:eq(#id) li',
},
- 搜索: '#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
- },
- 首图2: {
+ 搜索: '#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
+ }, 首图2: {
title: '',
host: '',
url: '/list/fyclass-fypage.html',
@@ -107,46 +175,62 @@ function getMubans() {
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {
- 'User-Agent': 'UC_UA',
- // "Cookie": ""
+ 'User-Agent': 'UC_UA', // "Cookie": ""
},
- // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html',
class_parse: '.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
- lazy: '',
+ lazy: common_lazy,
limit: 6,
- 推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
double: true, // 推荐内容是否双层定位
+ 推荐: 'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href',
一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href',
二级: {
- "title": ".stui-content__detail .title&&Text;.stui-content__detail p:eq(-2)&&Text",
- "img": ".stui-content__thumb .lazyload&&data-original",
- "desc": ".stui-content__detail p:eq(0)&&Text;.stui-content__detail p:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text",
- "content": ".detail&&Text",
- "tabs": ".stui-vodlist__head h3",
- "lists": ".stui-content__playlist:eq(#id) li"
+ title: '.stui-content__detail .title&&Text;.stui-content__detail&&p:eq(-2)&&a&&Text',
+ title1: '.stui-content__detail .title&&Text;.stui-content__detail&&p&&Text',
+ img: '.stui-content__thumb .lazyload&&data-original',
+ desc: '.stui-content__detail p&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(2)&&Text;.stui-content__detail&&p:eq(-2)&&a:eq(1)&&Text;.stui-content__detail p:eq(2)&&Text;.stui-content__detail p:eq(1)&&Text',
+ desc1: '.stui-content__detail p:eq(4)&&Text;;;.stui-content__detail p:eq(1)&&Text',
+ content: '.detail&&Text',
+ tabs: '.stui-pannel__head h3',
+ tabs1: '.stui-vodlist__head h3',
+ lists: '.stui-content__playlist:eq(#id) li',
},
- 搜索: 'ul.stui-vodlist__media:eq(0) li,ul.stui-vodlist:eq(0) li,#searchList li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
- 搜索1: 'ul.stui-vodlist&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
- 搜索2: 'ul.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.text-muted&&Text;a&&href;.text-muted:eq(-1)&&Text',
- },
- 默认: {
+ 搜索: 'ul.stui-vodlist__media,ul.stui-vodlist,#searchList li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text',
+ }, 默认: {
title: '',
host: '',
- url: '/vodshow/fyclass--------fypage---.html',
- searchUrl: '/vodsearch/-------------.html?wd=**',
- searchable: 2,//是否启用全局搜索,
- quickSearch: 0,//是否启用快速搜索,
- filterable: 0,//是否启用分类筛选,
+ url: '',
+ searchUrl: '',
+ searchable: 2,
+ quickSearch: 0,
+ filterable: 0,
+ filter: '',
+ filter_url: '',
+ filter_def: {},
headers: {
'User-Agent': 'MOBILE_UA',
},
+ timeout: 5000,
+ class_parse: '#side-menu li;a&&Text;a&&href;/(.*?)\.html',
+ cate_exclude: '',
play_parse: true,
- lazy: '',
- limit: 6,
- double: true, // 推荐内容是否双层定位
- },
- vfed: {
+ lazy: def_lazy,
+ double: true,
+ 推荐: '列表1;列表2;标题;图片;描述;链接;详情',
+ 一级: '列表;标题;图片;描述;链接;详情',
+ 二级: {
+ title: 'vod_name;vod_type',
+ img: '图片链接',
+ desc: '主要信息;年代;地区;演员;导演',
+ content: '简介',
+ tabs: '',
+ lists: 'xx:eq(#id)&&a',
+ tab_text: 'body&&Text',
+ list_text: 'body&&Text',
+ list_url: 'a&&href',
+ },
+ 搜索: '列表;标题;图片;描述;链接;详情',
+ }, vfed: {
title: '',
host: '',
url: '/index.php/vod/show/id/fyclass/page/fypage.html',
@@ -157,148 +241,172 @@ function getMubans() {
headers: {
'User-Agent': 'UC_UA',
},
- // class_parse:'.fed-pops-navbar&&ul.fed-part-rows&&a.fed-part-eone:gt(0):lt(5);a&&Text;a&&href;.*/(.*?).html',
class_parse: '.fed-pops-navbar&&ul.fed-part-rows&&a;a&&Text;a&&href;.*/(.*?).html',
play_parse: true,
- lazy: '',
+ lazy: common_lazy,
limit: 6,
- 推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
double: true, // 推荐内容是否双层定位
+ 推荐: 'ul.fed-list-info.fed-part-rows;li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
一级: '.fed-list-info&&li;a.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href',
二级: {
- "title": "h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text",
- "img": ".fed-list-info&&a&&data-original",
- "desc": ".fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text",
- "content": ".fed-part-esan&&Text",
- "tabs": ".fed-drop-boxs&&.fed-part-rows&&li",
- "lists": ".fed-play-item:eq(#id)&&ul:eq(1)&&li"
+ title: 'h1.fed-part-eone&&Text;.fed-deta-content&&.fed-part-rows&&li&&Text',
+ img: '.fed-list-info&&a&&data-original',
+ desc: '.fed-deta-content&&.fed-part-rows&&li:eq(1)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(2)&&Text;.fed-deta-content&&.fed-part-rows&&li:eq(3)&&Text',
+ content: '.fed-part-esan&&Text',
+ tabs: '.fed-drop-boxs&&.fed-part-rows&&li',
+ lists: '.fed-play-item:eq(#id)&&ul:eq(1)&&li',
},
搜索: '.fed-deta-info;h1&&Text;.lazyload&&data-original;.fed-list-remarks&&Text;a&&href;.fed-deta-content&&Text',
- },
- 海螺3: {
+ }, 海螺3: {
title: '',
host: '',
searchUrl: '/v_search/**----------fypage---.html',
url: '/vod_____show/fyclass--------fypage---.html',
headers: {
- 'User-Agent': 'MOBILE_UA'
+ 'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: 'body&&.hl-nav li:gt(0);a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '明星|专题|最新|排行',
limit: 40,
play_parse: true,
- lazy: '',
- 推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
+ lazy: common_lazy,
double: true,
+ 推荐: '.hl-vod-list;li;a&&title;a&&data-original;.remarks&&Text;a&&href',
一级: '.hl-vod-list&&.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
二级: {
- "title": ".hl-infos-title&&Text;.hl-text-conch&&Text",
- "img": ".hl-lazy&&data-original",
- "desc": ".hl-infos-content&&.hl-text-conch&&Text",
- "content": ".hl-content-text&&Text",
- "tabs": ".hl-tabs&&a",
- "lists": ".hl-plays-list:eq(#id)&&li"
+ title: '.hl-dc-title&&Text;.hl-dc-content&&li:eq(6)&&Text',
+ img: '.hl-lazy&&data-original',
+ desc: '.hl-dc-content&&li:eq(10)&&Text;.hl-dc-content&&li:eq(4)&&Text;.hl-dc-content&&li:eq(5)&&Text;.hl-dc-content&&li:eq(2)&&Text;.hl-dc-content&&li:eq(3)&&Text',
+ content: '.hl-content-text&&Text',
+ tabs: '.hl-tabs&&a',
+ tab_text: 'a--span&&Text',
+ lists: '.hl-plays-list:eq(#id)&&li',
},
搜索: '.hl-list-item;a&&title;a&&data-original;.remarks&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
- },
- 海螺2: {
+ }, 海螺2: {
title: '',
host: '',
searchUrl: '/index.php/vod/search/page/fypage/wd/**/',
url: '/index.php/vod/show/id/fyclass/page/fypage/',
headers: {
- 'User-Agent': 'MOBILE_UA'
+ 'User-Agent': 'MOBILE_UA',
},
timeout: 5000,
class_parse: '#nav-bar li;a&&Text;a&&href;id/(.*?)/',
limit: 40,
play_parse: true,
- lazy: '',
- 推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
+ lazy: common_lazy,
double: true,
+ 推荐: '.list-a.size;li;a&&title;.lazy&&data-original;.bt&&Text;a&&href',
一级: '.list-a&&li;a&&title;.lazy&&data-original;.list-remarks&&Text;a&&href',
二级: {
- "title": "h2&&Text;.deployment&&Text",
- "img": ".lazy&&data-original",
- "desc": ".deployment&&Text",
- "content": ".ec-show&&Text",
- "tabs": "#tag&&a",
- "lists": ".play_list_box:eq(#id)&&li"
+ title: 'h2&&Text;.deployment&&Text',
+ img: '.lazy&&data-original',
+ desc: '.deployment&&Text',
+ content: '.ec-show&&Text',
+ tabs: '#tag&&a',
+ lists: '.play_list_box:eq(#id)&&li',
},
搜索: '.search-list;a&&title;.lazy&&data-original;.deployment&&Text;a&&href',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
- },
- 短视: {
+ }, 短视: {
title: '',
- host: '',
- // homeUrl:'/',
+ host: '', // homeUrl:'/',
url: '/channel/fyclass-fypage.html',
searchUrl: '/search.html?wd=**',
searchable: 2,//是否启用全局搜索,
quickSearch: 0,//是否启用快速搜索,
filterable: 0,//是否启用分类筛选,
headers: {//网站的请求头,完整支持所有的,常带ua和cookies
- 'User-Agent': 'MOBILE_UA',
- // "Cookie": "searchneed=ok"
+ 'User-Agent': 'MOBILE_UA', // "Cookie": "searchneed=ok"
},
class_parse: '.menu_bottom ul li;a&&Text;a&&href;.*/(.*?).html',
cate_exclude: '解析|动态',
play_parse: true,
- lazy: '',
+ lazy: common_lazy,
limit: 6,
- 推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
double: true, // 推荐内容是否双层定位
+ 推荐: '.indexShowBox;ul&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
一级: '.pic-list&&li;a&&title;img&&data-src;.s1&&Text;a&&href',
二级: {
- "title": "h1&&Text;.content-rt&&p:eq(0)&&Text",
- "img": ".img&&img&&data-src",
- "desc": ".content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text",
- "content": ".zkjj_a&&Text",
- "tabs": ".py-tabs&&option",
- "lists": ".player:eq(#id) li"
+ title: 'h1&&Text;.content-rt&&p:eq(0)&&Text',
+ img: '.img&&img&&data-src',
+ desc: '.content-rt&&p:eq(1)&&Text;.content-rt&&p:eq(2)&&Text;.content-rt&&p:eq(3)&&Text;.content-rt&&p:eq(4)&&Text;.content-rt&&p:eq(5)&&Text',
+ content: '.zkjj_a&&Text',
+ tabs: '.py-tabs&&option',
+ lists: '.player:eq(#id) li',
},
搜索: '.sr_lists&&ul&&li;h3&&Text;img&&data-src;.int&&p:eq(0)&&Text;a&&href',
- },
- 短视2:{
+ }, 短视2: {
title: '',
host: '',
- class_name:'电影&电视剧&综艺&动漫',
- class_url:'1&2&3&4',
+ class_name: '电影&电视剧&综艺&动漫',
+ class_url: '1&2&3&4',
searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50',
searchable: 2,
quickSearch: 0,
- headers:{'User-Agent':'MOBILE_UA'},
+ headers: {'User-Agent': 'MOBILE_UA'},
url: '/index.php/api/vod#type=fyclass&page=fypage',
- filterable:0,//是否启用分类筛选,
- filter_url:'',
+ filterable: 0,//是否启用分类筛选,
+ filter_url: '',
filter: {},
- filter_def:{},
- detailUrl:'/index.php/vod/detail/id/fyid.html',
+ filter_def: {},
+ detailUrl: '/index.php/vod/detail/id/fyid.html',
play_parse: true,
- lazy: '',
+ lazy: common_lazy,
limit: 6,
- 推荐:'.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
- 一级:'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
- 二级:{
- "title":".slide-info-title&&Text;.slide-info:eq(3)--strong&&Text",
- "img":".detail-pic&&data-original",
- "desc":".fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text",
- "content":"#height_limit&&Text",
- "tabs":".anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a",
- "tab_text":".swiper-slide&&Text",
- "lists":".anthology-list-box:eq(#id) li"
+ 推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href',
+ 一级: 'js:let body=input.split("#")[1];let t=Math.round(new Date/1e3).toString();let key=md5("DS"+t+"DCC147D11943AF75");let url=input.split("#")[0];body=body+"&time="+t+"&key="+key;print(body);fetch_params.body=body;let html=post(url,fetch_params);let data=JSON.parse(html);VODS=data.list.map(function(it){it.vod_pic=urljoin2(input.split("/i")[0],it.vod_pic);return it});',
+ 二级: {
+ title: '.slide-info-title&&Text;.slide-info:eq(2)--strong&&Text',
+ img: '.detail-pic&&data-original',
+ desc: '.slide-info-remarks&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(1)--strong&&Text;.info-parameter&&ul&&li:eq(3)&&Text',
+ content: '#height_limit&&Text',
+ tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a',
+ tab_text: 'a--span&&Text',
+ lists: '.anthology-list-box:eq(#id) li',
},
- 搜索:'json:list;name;pic;;id',
- }
+ 搜索: 'json:list;name;pic;;id',
+ }, 采集1: {
+ title: '',
+ host: '',
+ homeTid: '13',
+ homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}',
+ detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid',
+ searchUrl: '/api.php/provide/vod/?wd=**&pg=fypage',
+ url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass',
+ headers: {'User-Agent': 'MOBILE_UA'},
+ timeout: 5000, // class_name: '电影&电视剧&综艺&动漫',
+ // class_url: '1&2&3&4',
+ // class_parse:'js:let html=request(input);input=JSON.parse(html).class;',
+ class_parse: 'json:class;',
+ limit: 20,
+ multi: 1,
+ searchable: 2,//是否启用全局搜索,
+ quickSearch: 1,//是否启用快速搜索,
+ filterable: 0,//是否启用分类筛选,
+ play_parse: true,
+ parse_url: '',
+ lazy: cj_lazy,
+ 推荐: '*',
+ 一级: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from',
+ 二级: `js:
+ let html=request(input);
+ html=JSON.parse(html);
+ let data=html.list;
+ VOD=data[0];`,
+ 搜索: '*',
+ },
};
return JSON.parse(JSON.stringify(mubanDict));
}
+
var mubanDict = getMubans();
var muban = getMubans();
-export default {muban,getMubans};
\ No newline at end of file
+export default {muban, getMubans};
\ No newline at end of file
diff --git a/南风/jars/弹幕.jar b/南风/jars/弹幕.jar
index 4588900dd3350fbe9efa8eaf309cb7d54cef74a9..3f76d2ca9aa4b418638cefb3631b0fef7b905cda 100644
GIT binary patch
literal 1085363
zcmZ^}V{j!*)GZuNG$&3bb|$v%Ol;e>jfpjx*tU6MoY?ln)`{)!dH>w{Zrysjs;gG7
zy{q=x)m8nY_fnFDhQWk@hlhsNI&i
zxv`j``IHq_=AQ*(nfY|Eg3KwVLNKfSKWMg#Nk7koYVO1wYh#zQla}qbucyGLkEh=A
zPDSr$Z(y)r(~<%)f8(UDq1o0%C$_)uY3S4VmQ`kPOM6=Cd-WS*Au1ZcZB<69^!Sp(
zCnZ$iJHZMDL-2+z39BgQF}eV}H`FcqXxT8Dd|PU{f1xm3J#HJ+Y!FF3^eTcL%4D8g
zGkiUShY^btLOqlg0z1T%Fx@P&-M3npE@2c@sMp{eP!33WhYFMh$_tJuMa>BIF#2)L
zd<}I?q{N$Ig}Vdk@GTd@09FucytKd%ghBxG2htHj`v<8(J^%-T2&M<_osT(ySD9lL
z84M!`*9FmqB9|%RMl%b$fy@u+LZ&ts#}bB~MIwO8g*AXn&JcGE0t(}_;d>!_VT^L3
zF+k`92kfj1KhhVvgY-d6!90iJkUN|^q&r!lD$o^#KI|Mj=vy^p3#9T6_72Mq&(4qk
zVJVd<>j`Fq^g*QmaeN>;&^jm(3brZA0%{`I!3gC){ok+2caA~$AetS99m1U_ko6Av
z4im%_DJz6Gh&%s#Jrp45+dUM^4&IKW5t9?sHS7)@s0rk}^9Gs#)dhP7e?c`K6>fp#
zK;Nq&YoXqSg`6;)P}@+RX|LsXV0R3I1EIHI6`*v8+5LeJ;!SO*Gw6W4gq)Kq?(1ai?VXD7zrDM>{L+}G}%+>H>k<4oF
zV!xST;5QXc3`ASeIzr4`(M5k^ia3eg1;c_wjnJG}lmO|FNJ`LJkoZP$1i}nEFnS;p
zbX$-Lx@!Qg6HPsV7UUx214zaQs~%4anjIoe7{duymoEqi;?0M(f@OqThPD^xtA{*+
z;DpKwngU@P(OuK*AnwTQ&>G?ALpgw;y&wT6Fdab-AUHcX9|)mYB$%Llz5Uk%-XD;K
z!rxEeJnG%ia9}*3G@(0#Y=ab`^B_H-wO&tt8WB73IYDs46F^-;AVa?d_5b@ps7(Dp
zK8sXrz+-sd@JAev$(|$Pl<}^w
z)Huw9zWLWJ#{XP<`gyo55IFkjp+cnLz(12v%>OG943~J@#Jh#}gz`3};;2Y_E}WR>
zTRHfAp5Wdte@37Cp%O?hZFw{J5Z36wnyp2<&PMp>{U%qO&N%GdNr=y5hVhG18tb
zyG^GwGx>hrwm5P3z;8(SUVq1NO>PF+$~AiT&3h}$4iEAMN=TE9xeLaQJx8e_D#5`D#l$F2`SvrA{LyA|yw3t&^#m^JHgSb3IAi
z{}rm!PcS4js*NM4C?vZiCMS_L6=NPt++#7uoKmMTzLGZZ&^=eEC?wsI(Ui&Zh>f$-
zSjt!@x}+u_s%VVf(j9tJ>f8n}0`5`MkWO6nQs;~Gj^=-~P43>P_YbTbx^M5fu*7?|
z+;jaJZU4YLpp&QDOY+Qji=|+@&>cLo=nKgYLre!Pekg$=xbroixu_A~vo=lcUm6
ztVe%{PLn3%9hE#$+@&^ts8aj45t##RUUGGQ|C2vqrY;4iV#PUwa%RX+H!M?s#GFBY
z=1?NrFf5ZTfWt>+a)oE(3a|O(>DdqK7(o5>%WrFX|5(29{bw@>jZyX_=JuV2Churo
zdL;4!<>>Z3t#1ZeFZ0weawGQ
zxZ!V}Xa29y=DXw6IM!`R+-=F&$Mj
zeoRqnpqJ_;%K90FQiujn*DE$UmgtB-9G~`{%)Y{u{JzNUS94HSvU^SusEilzA1vGD
zk`9o>+aiByWcL%kWm~uoN#rWob^QBY&HjFo$fP*1P4$B4E!g!zoZ?4Wa+ya(Da04|
zB_tJ~fcIIKn3okkBS3%9#qL*eP&I#To|u;xUYGd(o4rf^7HQ!+O(sAYuSfd!$A4v{
zdUyf7^0!Cqe(?tk$sK{Ol!i%1uUQn1@&m-lT?~M)po0tRXC|4ggz!L>TcGvxG3Axq
zKrgkoCf+C37?Z-lm&)ybonA=={MTvo0h9E=SNuU*$?n}1=IuQDyZG3DTC*s6$pF2=
zx8T+wlOh~qus7K>AH_@nmD0~_fdD+pURFS_!R>!KHxn&;1*o+x@3^D_BbGypem
zl-qv?dvgW@4Q{U;NOOiH))ZW8rVPZ|Wd#BZK|k~**JQ)g&S=Vd+y~U@&hSprJ}Mu>
zB{ZrAOn^G}8fiRYcb{d^a)*O5|`}IEhK%j;CLz~)CVLO
zqv`08Tc0t$Z28RH#-VBH%*CeV-#>*;i-j(SEd3?+ns1y<>ldt@Qd@yV4JupTTfqp#w>X@K7ylvc&?Ul
z6BbwZJ{OG43TbO4+5|)q>$c9m7Yd!5e|BuLIh%%TDnxD^Fik|*Gc}vCHZ?jIPM7&L
zmMp3sv2h5D9E^vo0=+SPpCyG%y64}
zfGD>}2c2XU?99q(Pl2sK#z<3(VcISeM9+-;U)oC
zM-&S|w^wmpc{5ndTsEHw?VkOOj9M9qsbIc|ZCAQz4Fgh0-z|hSJLA`YJ$F5+d=JWF4B35@We2jajUPunv
zf>f<&0rCjXVI@|3<@|A_DtTu4VR^%nclY`)2H^BDVQlQ>`0-QRB`w}28o`qK$8=6e
zk%dkMyiMq>h7I&Nv)&tU@q=&%OBH%u_gCHCczWkAv&b9(|s8s#DJg5@yRY{)rx=s=giG$dR*q`5KiQ
zN?rpS&Iu4VaNIm|#7b-D(u(A_2B~q3{Z}#Zy4&PKj!~bFhF#lC?U0B6=}6Qrow`2Q
z>@wDL3~itvfW9VYe={tJIP85{Vh-}WAY|?VTz4BC{6X)e&UZ^gE)jvLZa?eIdJTkiNFqE$}$rGMGEdB00fQB`Xu+DW)rj{%h
zv3IFj?3ghv5(An4Izvmd`(PIh0IcI(a&pXZ3{~Iwb)>+RNt3}8LP_XH$)6uK`Bfb~
zx`0+|e-?%v5w)SQ??{0N@NvWS9f
zC}j7r9jm7OPWaomC`>JJt?q@N8_QdS$d{;xnTeD5P-x&&vK+ywbuiL>HDW}_t~e9S
ztT++7I1CEWgJ`3~E`2RS^zk0u8t|SDC_Gu_Jh22i!)E@`OvEjTHiJQtaM*AqCP*BG^`-5*2KYUr36dJH+4M
zlrHe625*+X!RoKjd2D)tJkrzKYI;WB9e_dz2&^>zt`oZ|)kOz49Z)W&Wmy+C$>}Fh
z_}*ef4>nE`CLaiYT+-x`J|)qIBjV?~cFGJBBUgQS!B%Pc`$r(zAy}jph+JM)STk^B
zc)E-^@bul(kKUl!UCXj1v{^WYplhu%0$}zt1CkYH841_eUnDvry1vp%zwg?p+iR}`
zYG#(5EM$Z@)+%{|DB=blw}2qti{vM)L02a6lvGmaL5MARYUNTUUR)T*_>E116*srk
zeivTt%tO!OB6lXgDR>
z6XZvmn+}{cX*h6S8)eMLtT=2Byo_XPfjQ0kkKLl8)gRU|VWNFbYIo7flKXyW0S{+J
zZJKc^xx}0O_=$+`Uc<8759Ctgk1C#~
z-HHS7`gc3aO;&0u>VVXIXVPBY^055`%&=MM>q;M=e*=|pVuFJnRcas!(|n=TB4t6L
z-F2sVa`dYJNNKGp^Z#g3
z{SUDHAE0mLe%Ol;x5kALK41UDGVB(&Z|WtdsZxqmRT~vpf~l^cGBLh)Y#xJNdPnH=
z^Fye#An*B5nA?>-(meMIS~!FC$`9@>K4mcOwm)6L1t*1pcYkQei+6kO1Da~9-tTkh
z$JsMkuJuwcoxYYXg!bBG??FJ%YoX(_Us`*l6T=?{c~(amI=dD8A0G3(UnU$C-<8#NGjPpQ5Nj
z*ZYOf_9%>D)S)eu1y+)>6l)j$EUoMk2AlO+pZF?yZPthAC*blvoXEjGNxO~
zsZS-qFd25z0W_YgCFa&LJgVO(65cO&aKT^Mx^XXt73P7uj}sE_1G
zD(g=Sa`wbpZl(HE7h5qyo=jqr(9_Vv_|Ej9X4|R^#e(}XjIDT0PH{w<4ZXhWI`Z$n
z;}`YcA$sh-=ecpfRXv_M5nM}c3OGhaQ9QREeNuA~|FV&+*nV?85%o;|hH72quWvG?bu
z@c>t6mo>0$@ymNw@wepZf1gyciO+|_;+=yZU(VKzUwffnUf`*TL@!qalOKK?U$15X
z-q!tre&6j3Qhn^IJJ^Anjr>6W;poN3u8ze=Awbjd^{3K_=7V^|--2SGnMPEnTAu8o
zHh#jnMZN#KZ9rIfkg~`}Isxi@bKbu(dmKekBpgSv%l_)2Y#fxkDM%u9QYC
zx&{quu1H?I@cos
zTPoX5v=0MaX@Q(J3FDUE7%pzvg5ds0kr?j;f=N7QHnHCa&O|s=o%ich6_%;||SD
zD2{vCH5B*(n@jbZGky+1f?)EW5
z-uBtPl}3?ox$gOU147mMSjV3omXVzgRtw7rj;X!>W%H|_eI@QxPI-b2XTANYiLQqE
z9J>qMzh;3UW!srTZy!{jlhbQm%yJW-SHT=&E57~>Z%Foap)a0m4Sh;(wr?#k;Yaro
z4>#@Z1Gui2H7OOxdt>Sq7c(^q_JMZtHgCJ(i;tUe6&IhSi;wbYB`tM!3ie!e^7eT>
z4sH6M7cba1PsbA#=mc;5A1BUquS|fr0-SqDG0-Uv9O~B$BC6gjk
zNqssL4eIIBt6eebg);?GOkA4Nop!6qyo5`JAk(eaXssDcjH?`dButqsl6R&9^t%59
zZfgx8?vXNS^eLPbIy4`7ob_cc$wDHkz`LWUh8AKL1^g3%W|!hq{(-dg7pp2Hhd?bx
zeIdn)O*Z1W^WC9YrJ;-I#3{Q$*{{xrS0+bf0qyI1NqitFP-(@Ib-=J7pj0q#Jeiet
zIesCH#&s>>=qyY~AnHW}Lf$V;cc!1Cj&iU&jX&IFq*DK9aY0Tvl1n$*H(V(XUwHHs!kE=$UB?
z-+SxgKE5k?1RDF=yhZ0OK1zHpK2~&BT!ahTyag6F^rFex2ht?}`*bt3c{}c}xOgM4
zxCohB^k7K+7vLRe^G3-RE~FXh7@-D;^lv$7s*xeu-amiIZu1hpR5do|t3a
z&y(3%-*4K0p&i{cFX{y^kGimI+a!?q*g-D&N!Wycc%suh&8jTuG$5IaNb}4~
z9|erQ4P+`q&UC-17NhhTDy?o*q$XXrOSX3$ou0B89b@BP@9k}Z<<-qFWW!1J?)5yz
zQXcJ!@Hmd*J@@{u=%=%B#cArTLa>tF_iIUvu{MXKgrAu{z_Bpz7Okc0WbPv_cKgRaYeUFjz
z_|8^VM&&>cNA?{p#81mE$Mq%W<}H0GB)6G6K~v99>yA2QUzW?JQd~dcS<7+J&MCH7
z=)j=2gqIWPgc+^jTN?U27V{px=Xb#wKKU;;{t!Dc@rX5KZ*SP#I+c`qh6WS_9BFZ5
zy`f*DdU_K*5=~3+jyP(NcXF&}Dk-mx)XGnYDJRfJYwWT@qOrWNd{A6|+hLs9sqRej
zY(_sEda}*{3yqf;4|Z9SO>SiWs*@iURZCdJ_YAzL(iYtE((HKzn#=|RxP|zp>nrp`?nNXo|pc7nwB}qVJ8G!-5
zX5<5RMy)yQDK25`I6b-R<-k7>6)61nQ7ca>=%HS0S5l0eI1=%fEmv3iB3pb>Lb=*K
zgDQ_lawlCR2Jg;1$2?w6`}oHz1Rsvt^B!7MYoODc0wzZs_E)qDaxp6bXX~QCCL_n=
z$`Dw(MIG#Fr5t*#f(|WN1b3E2l&}t%vtVdFeZ+?bXxyX?D7Z*hBgFCJqYFkA8#mm#g{1wX23wmf5Im@rMrUECdBYXw~B2R;T
zxtIEMG|KU{ClK8+Y_$s8$~}b|Kkk$G9}A38~>x!tIen}jS7J&ILcI$jPC+TZ)Th#}gY^#}!4AK1LVj$2Xt_JdK0=6y6a{>(aNI7j0O9(Ri
z2T4Oc!v0yVt)4&6)7o1UA$#}OJ!c?(@0G~Wa~Dd=on&g=y@{^1(yH!Q#uLS5QOv_I
z_)Ll<;h~B@7V5y_uVpe8wF||)5;}hqtYBj<;_a0AUWv`8G>4RDmhp4eqM|*P_MH=M
z^;6q=8ucT!Zv?+y1M**LM!jQ!;<#*-Bj^*iWNpE^x+JF<5-}B-_c3y`ty6+^_xMgE
zL?aK0md83M5U__A9ma9$X`9u^I<=O3UK%qjEjYMA0B&B6B93<7pMKp_id#4lwxxAE>lwCPI`tv%iFac^RNQ`P0Rs7
zg1Dhmpw0d3i!4~xxKLru6+=9K?vU8*_X{&gyrl_G!FN+>215Tn+|!KZEiyAJ+nm!C
zgslAO`AmA%3|hU*1hQLSxMUH343L&)rh=kQahxGc!ao%K;FMI
z0>iy@Bv%L*dsy}eyUWJ`^N<7%aMpjFCsP-EiN0epy#6`|aFj3UJ-DT_WS8@AniZ!G`
zuAn0bY)OjhrVha(G5hX*S*6h-A_>AgRw#QXnOy)2pRO~mh5#@Bez5gU56L@+%;4r$
z?htgO(|!sP=T@;$j4_vBjHg?^gFrH9eoUzpKuM>+jZ?IPu&0q$PJZkTi(;MxSU
zs^DwRafM4qEo6$D-CO%Mp0*oTfIkF%?eOgwyg@iYlGP!XlCx~PAQ|#YD{kxyh41%f
z%EeLAsC@`yUi&q_==AhtE+AYfZpXIC8OZ)X(QT3RD&td!;P1Jno!x6Gi@cjx8a~#C@uETH?=CjNT4$c*m
zntjO9t3%;6;MKbnOFRQ&8g~zsx6w78{s0K_h!UiG2IHR63i8w@%lFMVQhOF9G)4x
zU=?;D9=2WMY$GJB6nkG*mkQhf$>|^8K2VkTm`t)~(Mc?BFJLU<+&mkvDOx=v5v(5%
z{QtpP>s!UQS^se;4@ShPMueq%4nBRH3cxX|1LxP+QP6DSEx9vToh
z>(Td?E_oNHoj=a_2Qimg_BHJAbh8ygtegxC#*YneNqUb
zgUpHu9nQl@W#IXh#|`0dI14!Mk-211U=y&|xa_hYi&-x^f4*;WZtfebGV(6qtQqvT
z{wd6(i{MkK!rqMXiy*<1*%!4vL1nS(f>Gf)o9>RtbD6855+(7O2_jukRWn05e9;j4
zfp&d(ENaN7`YoPUV)$7oCHJjS0$9(Axw~fhPGZY?EugK}^&^EFd^-2JI(x2XSkz(%{kA${WTCv@>Wl@b$9sLs~yZ@sHr67HSr84d%fc$T#pD&QO(ZEi|
z40sf$D)NJVtsnVii>bvf4VwFBGT(KDP$MCy49v68?_|u<`9wyYCzpSB2mC5VfEUYn
zbmG%Y>%Ndhf;!5A=X)A}K6gL!O&{=IgK?5sjJ#HOzlEoyCnf^BY4N%LHN`5$MC5Ms
zJvnRI5#$}k87KTvp~JE5btAK_PV=Z<+V|+eDf!<{F}qKx1*8k?6N|Kc
z-xB;GTYTCr4n_;NW;7#`%NRabHfb=1{na2Qwa!hV@_EbBY+X**%;^98XYkp;pzR+j
zBq80z$COTJMs82FYgIq5K3^|#(V8^RIHkNMrP65-SxJFvKyil(hH^!EmFllCH&$~r
z5LTUQcSg3en|ZwYDER1P3)Yb=ITl
z-OO4Elb>}ESuhL$2h4T+f9@>*LfCl{-jdmfZ-FkAUtNjUFXDNM{GHwM;^B>{?WToLuC)^
z07-dgS>%_G2|b5Vf%Sk^^+6B^H~yCOI>kA9BIP7usjj2>w~c1jXvTnD-pK|(HFWnB
zwHH7JBRFzrqj(4-{8Og?ZhT)Im<6$gt40UY%hF64R_T6h$hSOn1YrfS3}4*?RK?7|
z3dHw_@^92t-f!hOm6@?$A7gbbCCt%s{0>EsqhFK~?~EI|{ox95oD7Z$WIN-h$hK4k
zp-2?whhNU`(5~7+($zVGam9tqT&qgWf|TM4^%+gqwDSU6nnnn>y0Or#R@oA1T=K
z3`L8Xs_w&XP05rIJ9b^cRdd(m7X&W&1OrA~PrPAh`xe`GP$A)Vh~wsQPc+~XJsSj3
zuiC9vfAz0mTtd3^@b!FtoDz4D>sc;
zsH9>6)_VAa$XLvi1FVdgV(2D(8dO(Q<-~`v#;^w+6K3JvNc}E3xS(vr6+_&5YsdlC
z&Ijf4z;tshs_59s7xLGx6#I*%7D!EJLPtu9Llqp|V(-gOFoeJuynb^$IVI>p<0y$e
zHXDo6M$_e;mqEs5uLgTTP$ah^yicBRP^UdeK&fSVMff5IyE^0|*-cRu0k`F3hPz+M
zQ4w{nMrEgmL%OQ-PHkgx)4UVvM|V!eGRjJVpaQRU(vHhUTH-66kSuZUsE;%b{;
zN9UtWHU!d=crai@F`H1AIQ(b>JD*=ZDzPlYGnHh#pxr0yyEjhgk_<18QCG{b89z=f
zxne~Bbr$;x&}vV}-;P8blln>AeL%g#ZI7#n=rd7h9&
z>7W!HJ1aTE=`h$H&aB+Yu#N-fp%n7P{V7=DK8`R#=u=0`^sfDJGV?kGM;myWBqRH{
z!Sl}hn}kUsDaA0yDPUaiKH7=8$8r-cd=2_l`+S^v71s#zvmH9$VXilbM7tzuySzzy
z3}vPb!hPYpX_|rC#Uaw2&bikRRr@b!lNIwP1iFcRMgEVB1mkvQDt=Ta;Rq^>tBNVR
zOxxzUW-oWDSQ#njKd&pFUT6eLAzEE(REnlPkQ}KvoKj@h&Z*mpfue=SgIZ%x+x_+s
zR&iFAE+-($tVE27(~W&%q~r!01hcv+xM-Jq7yp&w=uEHd3yHPFj?2CZ^Y7~-JJ2Os
z|J}c?T~A=vn=aeGJl+8*aU`ZR3P{iH=mL+w0$T2k)31N=7#$__mOK55xSw)w4C!z;xjc&y6@>3Z#fw3fkqD+qEn4Xk0#<&Y!jI63(Zt&l$qiOHVZktXv
znM>1Q;)&27+1)BUGv$xtR5V@S<`WVO(;$1L|HibgCxKNsMr_q}`WI#jv4@OncyNUN
zYXPj04g?I4wBSJRM*~CpW)$VDom0hM+7LI%z@&}nouxD&toDKiOS-|RDM*y|7m>`*
z{S?9GPLWYh!aCfWEaj
zNKIl%a04Wv=nAosjlo{y!6>#pjyx
z0~zGM4PN}KiN;p{#jmV70a!rwo1K?EjC7~c$P~xUkL4RyL`e1B?L7Jq(eIJDbD`Zw
zf`pk^x{(LT>gy%|mKtuR4w)%C)P7ADOze*N(&CNGY5yJP5Z^}*7zb4+0zxf^Hp(|f
zeHflmV1O#NM^e+CPe#aT832@EOWTTj(${YPgP#s0ynd|Bq|TB|{DCLU6;D$gIrDFb
zl%cwM#C;etUgi*!RiIE*O@8HWNRQ*<5-a8l2|oEA?b2;Y3{Xzl@z1-aRU>cDtay-^
zx{ghZ{oPnPiD#KNCiD`c@<4h5Uu$`4z!XTkkJu(
zCA5q)^5ME&=-%5C=+2%|q2Oq1GgO3N65U0gb;t@#00(twH9EejH?UVsb
zl&@=FdjTn3IvVJ1^^KUHnE`%tZV3xbIf_=38G@D{I>-2ogjjHaO^%qw_^PU6B9siG
z@otqtd1MbfXd{MnTelgEuATtf1SZMyo1rrDdS~HUr1;zv7|$B{!RzPVKYqKckF1w0
zM@Nem@R?$X?>*JX_OFbz{H=zUGxe*@zZKo6{&cz5+%64N&gDD#l9XUkxiC)PEz2jpb1?8C4}
z7%KNUR*9P-+@}LxpOFR{!JM11rDBu5kJ&|+PfSm(mn7Tw=CBJBY)ShRS1|kS94VVJ
z+ds6t`c3g~Vlk>Q#aOJIfLxH{dvTVT&tEj)5?&VSub#_#@2Q?z)Esftt+@ScC
zl?APwsO}eBHr26g^5$wY!aE)?2{Lu8B98UfjVoRu9N)fkhdl+l@8UKMs(QaZ&|IAM
z^bSYO>;!z6-bz8p>kXwlOOC?${qXcgb=3Sy!9
zkNR3jT!vw01bW5o6M*GK$&k}UVxeF_$aRmVZ1}y;fKC=GXL3e!bHdmQ)VUrlYE4g_8-=S@=pTdq`hdg
zeQ9CLzvtAVv$Fs2%gskowbP=^D83~qh@jeiTaEQKba}j{i1QFTftVVuLuz`{V=4(N
zFaLbOcd;9DS(e6zOC!pzVSSgCDZg0#QI*=cUe9WSCs&zAU~?0ICYf}55C=dspyVg-
zXgPakrd8cNwzM1M>EBpqIM{@!^-;=lfHMo=4jNSRlonuQ^0kv8&r%DW1vmrs%7&?n7@32+2KmG^
zJ!v~XOgX1@u4_mE*nir}y_@e3A83wm>B=ZiktWgUr!KiM>NFg^{rUL9%@Q)au!6<$
zSPxuu^+oGDR1mY2@?|pKT!r(NqA%o{XYY-_pWn9*|BAnL67K*h99WFXkI(|VBF~0SB{r+S1Gdp_fi?=@bunh5e
z?oyj6yO!fOd1?=ZS6`H+A)!0(vd}xKHw{;n!)F$9ZudE_1zA7^d->^n%mjW7;ND0q
zg*L7;fO>Yjx4zk?FrApfbKO)uD@ENmrRC;NIH~_h;tC8`(YxFTVq|qMJrPc}SjB6wm__2q#FqqgG5UYrqLQ?iF5ftiYYYQ?(&rz#OWu
z>Cq$DZ3ZI%d8HR}xD2C>`NSh+FQsjt^WeMS-B7+rr4b|$Ln7ga_?bz|9cpvnN3ER0
zzJ+L#%G?!hNl(1;$uVm3hGt}PvSo|0+dk1TDQ`+BQ3SO@NwI}y!9~hV<+D{Sy_nzS
z+J3@+M8b{Fiz#HQ4~wz|SMBZ+F&L^=94wV$vh`=6N8N5<|0=7(qf)
z^60T7+d=!)loeC3DHz;d)wi72KS;ybT9Td;f&6f=VDh{Zp#pVT*qk2L!YHxS$7j$Y
z-=Wel*bw-bRvyhJc;Hq(A*{#GMEjOEJ(UYA+@(!vQQM#6$`J4qC<@5oh}8++>sHYJ
zymVe2jmZ2vdkhrwIu}5!r&tMrM%%Z@)IaG)idVh(7-RcD9%#Hxo)9R?;9K%S6;EC;
zQdyvQx~koIi8x~;qElhW$A|r~xrhEm(QcmRn6UT({7opz%{LKfUonQXK|b_qLAOuO
z|DDrxSi-;Z@ySXJh>5pjsY{mzkd{$tfK^DW+X}f+-2B<~v?wuGHW3(hetH;#oCWPY
zWqehINomfCugW1bs5pB^{0Qs+5Z|0uVUafVv?2)q-1d<#)@FU`+P1r76Qe}9$@&{=
ziWdCtYtxqZzID%#i}P==C?y0--L1O%W`RjEOyo9^I>!*NGtwmMO>S$Hm-(HHDzF;X
zpI3tTf-kw!{(<0}&XLHm)PO=--XT%Twq+IMdKvR7^OX`X4&wGSKXLahrzwm;%M`ReR8
zd56ElBDxVVHuh(BYQFXC!Y(6AsG6R06ZvDadDK4S+1N=-MwKe#{rRh>8vE3fe7xbB
z*!nkPOz+zLqb;70lqSVAcONP=M;sSS?L}JmB!`9}dAJg$+4W-nB}MT@_H<+jEPXK=
zxV(A(C>T*}!xb(67X`uuZBy(&90AX&u#Gu%Zgk{3T`E^G-=+O6I-c^q=DgB@$3J;D
zuJydGiMIC9)IZICwZ4+KdH4L13;e9uYVGNnGN$&~V@S~2>orH&X#ZdA)c-PY64
z+6cFP2Z9^t0>R7CgNyEaWp8p}Z?8jHgq;{RfJ=wMC~<5JH6mPauy1I
zNUo8^ZR;o0EEsB@iCF2X;r(a)&g!oo#D>vGQ?kGjIXK5Wu_Z0-3n1jK04Pa4dQ`6*
zoT5qk#e5ysckPR{x)(JXo5}uMR(jt>!Ps44Fqq1TIt(GXzrk@
zxHF0SYX?W0c|*lG|N4ry8GJg)5Q_S5Rfs|I(Irq}pm`p>doLTZLi^qhnmk*viihnR
zgi<^-y|S}aX{#8U&ErXqoe@hs=iKx?9zr}Zy3%}xwB*{t$}M-*+{*Q${X11}GDM-0J;#6GB6@
z%i_9+mmcv#&7M9*fqh|{99NZ?f&3T!k36xtn?!%N9x7|bt+d|}xkKAJ(KTIlM)C)n
zD>s;2&PWc=-1@a*z3QJh@891((8am1L!;2#9pJo1(Q!*wVa<#i*xo$YF5`F+>JqdB
zloa+&|3B1Cp%{!(p|u|EbScJFK4RQ!pkD;=Xia`d@e^JELy`*X|>gK99x;;$zQ<
z5#^`sZpm6MO{1{$oL-`h$+isml)!XnkkBrUp1Gr@qO)lYJmL6b&wL|BbGYU_Lo
zi&2$6=JT|X8`H^=m`}6q(zi
zJXPab-Zl()o8(f-U&~>JK1Z<;`_WZ^~A(weHST3rDiNXr*@O&GIW73DW*{;CnjJBK~
z9AtQ}B?oSizm$_b(@pwom8IC?%DKNCH-t{YBh;WNr{m|*K1%&8Q%ks_gZY#i0-!J8
zttYoZc)@cT15Y@6z}V_|;yiIt1WEBnm2c8d5s29N;IDp)wR;cLu|tnEDN%COL4%Kr
zjEOG+ZFq%nQY$KomU@`*f$C7Sg5Qz9)VdUH?I3ZM(%tB1^*S@mvQuewqfPgAl;|LS
zu8JD1%r=Ha#=VfNutGu_m@j7^RGap;GR3hZ#OY7A8Hov9N-~*t^slw_gYe(^z3SMx
z4$>AwCLyH{5)GprRaiNmTYDx-b4J;{O3OLWAbCe00vl6_ar2DEd1(Jmd-41U
zw~`AmaZG>rGaU)3cN+0x70pnRjY-Qq%oT5T-guG9gcGqyU4xt~;{4cVFA`~!YTNR=
z|JILk-9}3aqe%&H^;j(O0x{p!<@^jPVRq7A*AHg$?7>vYyv-T7X>oq$=Dueau9Or~
za0{o5K|-}^IoCjs+TQM5ONqxQgt+7G=Yy%f4mOT8FAR$>kVwt`u4=fRX5;S5;fAp0
z_Y`88_Qrp_cBGy|zp#^*L}h|b_H$730R5#-i9+w@q#1mSUNQVK@{5kPUX9my`KL4L
zjuwk2JzUFVIJgZXxgnW5jH(&|rRVkSzQ?AbPHF!&5i!k+eAn*e`HpD5Zj-dj6KZan
zm*cn-Zio!htvwVju~va`?jDK;|}ELkY6FY%BqBSVp2;9uh*4ag)pyc#iYn+
z7>M>~zoHbso3L(UWaPkjBbJW4E>2oHU!snTA`w)^Zwjc8%}T0b2-M;4XWVcvBSqqB
z`FHH#8d$sGQT`Np6E$8K9i;?9cfb0*Z^2R%iZ0G
z2NR+wi~*ik=K4n^eBZm1|K1ZD9U17L<~u8QtMAJbVWnGKr20|`Yt2b$l0I!!lm@-f
z)ac==%mLVdeUjS(ObhCBqDr%SWMU@Ty~_lC3pBptfwUT0+LkPHF5R@rv>Kc9{n}l6
z?g!c}Of9IVR_V6(4W&tiZ-tkp>?HOrGxTJYUDmXXzsBie&l%Y
z@YH6xO6q>>sXBdJGc~Yr4Ih7i4{s1(z)$cp2{hlM%q+TMgOr9{vKf|x9IxY}Rw}<|
zKz3f0Ujc4*l9K;)NMKBSEU%wc785N!PT>dE*uV
zS%xh^6TA-vr+4HMY6sy%8!s8@&AeHNFo@a2%i9GqW)0^0H-`SKBe@Z4oY)E)0;k$5WyS||axf|ud#;YD)3GgIfV1$gOE=<(%E|4v*yvr=F
z5NbD}H}uuKYhb9GiM!I7xUYR@ma?u>%+JcIG(Uyk`qe*IJ#Z?Ja6gEVGJ>Pz5|^cB
zK%K8<{=!6~9`{9(&nX2neu5ue{BVJ^)CeG3CnKse3|_D6fOhC8=`PJ;;zk4|!LX?^
zwgJs5ulx@r>*ESV+yN-NC&%KcOolIa9N}axk>3AulaVTL*&g+!%YwR8$Oq^ndYuFVX;O^
zd61*0R(zc(;^t0s7c9FCO=k8k{IAQ&Sx!F&!N5~t7ZF(^$^0HL2Y`=NaELkl90T8y
z<7*-{UGrZg;_#GO?0gUSrn55i==h~KqFGiJnktLEJ7S7RQ)8jWXT^!5rDhrrR&3FB
z{?SV^d$zgET|pt&^H{eapgPqL)VTdHMNp0O5;ip2jA_;{Y)iPqmCh;rXvc8V;Aba`mRP%^zDd(tEk&u_+ouS99t&9Ys
z4?s|25{Bb~tFsPD%mQvBHh1SD>+g1&&troyn3MM=iva1X+zyp0rGnVykjSTCVW{h;
zRucCLg3|OMq*CzWtckg*(7geQa*_G1pKNI%MkUWmE1=n8=YlFyaSYQMQ3aCnPPP$>
z=lZ_4*2<-3G#0A(#3B~Od9NGa7r;lpm`a9k)1)}G~8Do)hU
z_WUFuwB@XTll?F
zZ&ip-75w)_Py@;zW=CW7~@y3l7fyo8VScG-fFljme|ma5(20;@9<}U_@p&3p}^IpTIv!6
z`D$%Bg(kQDfAahkK%7o<+EJB-)Xe!`t2n+R8+|jxxQ8LSgkfBWq6X658EGs_W%I9N
z3kpH7f2_LNCwh_K4(xrSMnJQ61qtTIlMDb8?B6V>PQt0Xido8ZQYRSzKCQ_dP5-0%
z*xU{YLQaJN!T|q`BsH4!d~J
z4r;{wA}mj$gu6t~Q`9&_@yf43zA-hiW8YiQ+U{(Wl$C-ul)Ia>dAQy#0IJMdrs8eL
ziMaM8wOTJ8(<``}6ql3ome%UZHiDT?O@utb?uZ5GLitn+0#pzDI`I4ZtDX0RsUy@-
z`(s1-3@Dw6=i;&Cf<->`JlynQU=;A>7%&wZpP@Y9f)3SCERkwn%WD*m^5KyEy6@wr
zA5b(-Kp!nXi?>P~mY;HmB#y(h!KJk(Vh)<@?sbA!b*f7S#-~8DiwNDj^X}0GkJO^`
zc+Awb>Q6B6FhJwFN_tss%U-#IbS>p~&+57BmFXlx$bB#HuanG&^&YXxi=nC@Mpu%x
zIKqU+IIgM4Pum+#hdE=YP(Sc41{+3?9kbB>uV*Fg>%AFiV}n0*4ZWZd03
z^5lG!bI+s9`4C1!<|1=V$s!4fL9MT>S(jTzrN^8RFhNMhd`hJ027|yA)
z?XgngWWc<5K4kLpTy0UH<-ue2FtW90^Rp46D$CL^eSOcqtVn1$?rTKqUt^KQX6(0t
zF!@}n);x5I&|xg*256&_R_^FNLiRx$jpMF&u)`2uFBOvO%Qy5kUU6gjS*nCVX5s^8
zBu2iNsz&_zF@S7xlm(liaq`;K>ErB~w|CJH-wVV9K-xsoz(Ef2(n3$GPIw6J1}HXB
zkFdlXkbEsu#2RnnxTJ+z414A5nyLXiShg4kP*T;J>znsi=)%l`9n$2+@|pg?IWSn-
z#G>22F8xVts*A1N5P==bKJO=iT3am>!fAZbR2&p#-fy&QdRO;>k)BD(gTCCL)hs&zw`DpVvOA
z*L{}DJduoALwc`*DRe7vWE%$(=J6Jv3P_OTrdZ%B*_uq$M8BKTlj#lccBnRV+3!4I
zVlz4ql1i^GA$RsV@_IrHl!W&t8aaqt2n~@N7+o16r*k2XRq??a>_0
zuJQlb^gX|L@1>5c;a#7_9G8H&%X*xeEi?WpGr?4C-7)
z@_Pw#$Eo|UhK`h75Z2zZuG!6u+4uO8(5%Zdyy^-Kxga1aLy
znp&aW0ErWbnh4%oDM@lXq|~iDd{D;3CW*lgkG?z*f26Bhb4d)(Hk4xgCmWH^%VtC?0Iz*E~j&oXT42#W7
z@V^FlI@;K?Xd_hHjMKP&M=jh^{2z#F2NC`l)Xk{HHj1QS |