diff --git a/521/lib/儿童口才.json b/521/lib/儿童口才.json
new file mode 100644
index 0000000..a1d199d
--- /dev/null
+++ b/521/lib/儿童口才.json
@@ -0,0 +1,15 @@
+{
+ "class":[
+ {"type_name":"幼儿识字","type_id":"幼儿识字"},
+ {"type_name":"第一课:自我介绍","type_id":"少儿口才第一课:自我介绍"},
+ {"type_name":"第二课:站姿训练","type_id":"少儿口才主持人第二课:站姿训练"},
+ {"type_name":"第三课:坐姿训练","type_id":"少儿口才第三课:坐姿训练"},
+ {"type_name":"第四课:眼神训练","type_id":"少儿口才演讲第四课:眼神训练"},
+ {"type_name":"第五课:口部操","type_id":"少儿口才第五课:咋给娃们讲口部操"},
+ {"type_name":"少儿口才_01","type_id":"01_01:少儿口才天天练_01"},
+ {"type_name":"少儿口才_02","type_id":"01_02:少儿口才"},
+ {"type_name":"少儿口才_03","type_id":"01_03:少儿口才"},
+ {"type_name":"少儿口才_04","type_id":"01_04:少儿口才"},
+ {"type_name":"【少儿口才训练系列】","type_id":"【少儿口才训练系列】"}
+ ]
+}
\ No newline at end of file
diff --git a/521/lib/儿童编程.json b/521/lib/儿童编程.json
new file mode 100644
index 0000000..f0a7e6d
Binary files /dev/null and b/521/lib/儿童编程.json differ
diff --git a/521/lib/厂长资源.json b/521/lib/厂长资源.json
new file mode 100644
index 0000000..72a34b8
--- /dev/null
+++ b/521/lib/厂长资源.json
@@ -0,0 +1,33 @@
+{
+ "作者": "🐰兔爷🐇",
+ "站名": "厂长资源",
+ "编码": "UTF-8",
+ "发布地址": "https://www.cz01.vip/",
+ "请求头": "User-Agent$MOBILE_UA",
+ "主页url": "https://www.czzymovie.com",
+ "首页": "200",
+ "起始页": "1",
+ "分类url": "/{cateId}/page/{catePg};;rcRA",
+ "分类": "豆瓣电影Top250$dbtop250#最新电影$zuixindianying#剧场版$dongmanjuchangban#电影$movie_bt/movie_bt_series/dyy#电视剧$movie_bt/movie_bt_series/dianshiju#俄罗斯电影$movie_bt/movie_bt_series/eluosidianying#加拿大电影$movie_bt/movie_bt_series/jianadadianying#动画$movie_bt/movie_bt_series/dohua#华语电影$movie_bt/movie_bt_series/huayudianying#印度电影$movie_bt/movie_bt_series/yindudianying#国产剧$movie_bt/movie_bt_series/guochanju#日剧$movie_bt/movie_bt_series/rj#日本电影$movie_bt/movie_bt_series/ribendianying#欧美电影$movie_bt/movie_bt_series/meiguodianying#海外剧(其他)$movie_bt/movie_bt_series/hwj#美剧$movie_bt/movie_bt_series/mj#韩剧$movie_bt/movie_bt_series/hj#韩国电影$movie_bt/movie_bt_series/hanguodianying#番剧$fanju",
+ "数组": "
&&<+-+furk\">&&<",
+ "链接": "href=\"&&\"",
+ "影片年代": "年份:&&&&",
+ "播放标题": ">&&<",
+ "播放链接": "href=\"&&\"",
+ "搜索url": "/daoyongjiek0shibushiyoubing?q={wd}&f=_all&p={pg}",
+ "搜索模式": "1",
+ "筛选": "1"
+}
\ No newline at end of file
diff --git a/521/lib/哔哩套餐2.json b/521/lib/哔哩套餐2.json
new file mode 100644
index 0000000..2d50b59
--- /dev/null
+++ b/521/lib/哔哩套餐2.json
@@ -0,0 +1,1494 @@
+{ "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt",
+
+ "class": [
+
+ {
+ "type_name": "小姐姐",
+ "type_id": "小姐姐"
+ },
+ {
+ "type_name": "野外求生",
+ "type_id": "野外求生"
+ },
+ {
+ "type_name": "百家讲坛",
+ "type_id": "百家讲坛"
+ },
+ {
+ "type_name": "KEEP",
+ "type_id": "keep健身"
+ },
+ {
+ "type_name": "游泳",
+ "type_id": "游泳教学"
+ },
+ {
+ "type_name": "英雄联盟",
+ "type_id": "英雄联盟"
+ },
+ {
+ "type_name": "王者荣耀",
+ "type_id": "王者荣耀"
+ },
+ {
+ "type_name": "纪录片",
+ "type_id": "纪录片"
+ },
+ {
+ "type_name": "Discovery探索频道",
+ "type_id": "Discovery探索频道"
+ },
+ {
+ "type_name": "真人秀",
+ "type_id": "真人秀"
+ },
+ {
+ "type_name": "电影解说",
+ "type_id": "电影解说"
+ },
+ {
+ "type_name": "挑战",
+ "type_id": "挑战"
+ },
+ {
+ "type_name": "露营",
+ "type_id": "露营"
+ },
+ {
+ "type_name": "蹦极",
+ "type_id": "蹦极"
+ },
+ {
+ "type_name": "白噪音",
+ "type_id": "白噪音"
+ },
+ {
+ "type_name": "美食",
+ "type_id": "美食"
+ },
+ {
+ "type_name": "体育",
+ "type_id": "体育"
+ },
+ {
+ "type_name": "相声小品",
+ "type_id": "相声小品"
+ },
+ {
+ "type_name": "足球",
+ "type_id": "足球"
+ },
+ {
+ "type_name": "篮球",
+ "type_id": "篮球"
+ },
+ {
+ "type_name": "动物世界",
+ "type_id": "动物世界"
+ },
+ {
+ "type_name": "凡人修仙传",
+ "type_id": "凡人修仙传"
+ }
+ ],
+ "filters": {
+ "搞笑": [
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "TVBox": [
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "球星": [
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [
+ {
+ "n": "全部",
+ "v": "球星"
+ },
+ {
+ "n": "梅西",
+ "v": "梅西"
+ },
+ {
+ "n": "C罗",
+ "v": "C罗"
+ },
+ {
+ "n": "天下足球",
+ "v": "天下足球"
+ },
+ {
+ "n": "罗纳尔多",
+ "v": "罗纳尔多"
+ },
+ {
+ "n": "亨利",
+ "v": "亨利"
+ },
+ {
+ "n": "小罗",
+ "v": "小罗"
+ },
+ {
+ "n": "齐达内",
+ "v": "齐达内"
+ },
+ {
+ "n": "贝克汉姆",
+ "v": "贝克汉姆"
+ },
+ {
+ "n": "内马尔",
+ "v": "内马尔"
+ },
+ {
+ "n": "德布劳内",
+ "v": "德布劳内"
+ },
+ {
+ "n": "欧冠",
+ "v": "欧冠"
+ },
+ {
+ "n": "世界杯",
+ "v": "世界杯"
+ },
+ {
+ "n": "西甲",
+ "v": "西甲"
+ },
+ {
+ "n": "英超",
+ "v": "英超"
+ },
+ {
+ "n": "意甲",
+ "v": "意甲"
+ },
+ {
+ "n": "德甲",
+ "v": "德甲"
+ },
+ {
+ "n": "国米",
+ "v": "国米"
+ },
+ {
+ "n": "皇马",
+ "v": "皇马"
+ },
+ {
+ "n": "巴萨",
+ "v": "巴萨"
+ },
+ {
+ "n": "巴黎圣日耳曼",
+ "v": "巴黎圣日耳曼"
+ },
+ {
+ "n": "曼联",
+ "v": "曼联"
+ },
+ {
+ "n": "曼城",
+ "v": "曼城"
+ },
+ {
+ "n": "NBA",
+ "v": "NBA"
+ },
+ {
+ "n": "詹姆斯",
+ "v": "詹姆斯"
+ },
+ {
+ "n": "库里",
+ "v": "库里"
+ },
+ {
+ "n": "杜兰特",
+ "v": "杜兰特"
+ },
+ {
+ "n": "UFC",
+ "v": "UFC"
+ },
+ {
+ "n": "斯诺克",
+ "v": "斯诺克"
+ },
+ {
+ "n": "网球",
+ "v": "网球"
+ },
+ {
+ "n": "F1",
+ "v": "F1"
+ },
+ {
+ "n": "高尔夫",
+ "v": "高尔夫"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "相声小品": [
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [
+ {
+ "n": "全部",
+ "v": "相声小品"
+ },
+ {
+ "n": "单口相声",
+ "v": "单口相声"
+ },
+ {
+ "n": "群口相声",
+ "v": "群口相声"
+ },
+ {
+ "n": "德云社",
+ "v": "德云社"
+ },
+ {
+ "n": "青曲社",
+ "v": "青曲社"
+ },
+ {
+ "n": "郭德纲",
+ "v": "郭德纲"
+ },
+ {
+ "n": "岳云鹏",
+ "v": "岳云鹏"
+ },
+ {
+ "n": "曹云金",
+ "v": "曹云金"
+ },
+ {
+ "n": "评书",
+ "v": "评书"
+ },
+ {
+ "n": "小曲",
+ "v": "小曲"
+ },
+ {
+ "n": "二人转",
+ "v": "二人转"
+ },
+ {
+ "n": "春晚小品",
+ "v": "春晚小品"
+ },
+ {
+ "n": "赵本山",
+ "v": "赵本山"
+ },
+ {
+ "n": "陈佩斯",
+ "v": "陈佩斯"
+ },
+ {
+ "n": "冯巩",
+ "v": "冯巩"
+ },
+ {
+ "n": "宋小宝",
+ "v": "宋小宝"
+ },
+ {
+ "n": "赵丽蓉",
+ "v": "赵丽蓉"
+ },
+ {
+ "n": "郭达",
+ "v": "郭达"
+ },
+ {
+ "n": "潘长江",
+ "v": "潘长江"
+ },
+ {
+ "n": "郭冬临",
+ "v": "郭冬临"
+ },
+ {
+ "n": "严顺开",
+ "v": "严顺开"
+ },
+ {
+ "n": "文松",
+ "v": "文松"
+ },
+ {
+ "n": "开心麻花",
+ "v": "开心麻花"
+ },
+ {
+ "n": "屌丝男士",
+ "v": "屌丝男士"
+ },
+ {
+ "n": "喜剧综艺",
+ "v": "喜剧综艺"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "儿童": [
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [
+ {
+ "n": "全部",
+ "v": "儿童"
+ },
+ {
+ "n": "教育",
+ "v": "儿童教育"
+ },
+ {
+ "n": "歌曲",
+ "v": "儿童歌曲"
+ },
+ {
+ "n": "舞蹈",
+ "v": "儿童舞蹈"
+ },
+ {
+ "n": "成语故事",
+ "v": "儿童成语故事"
+ },
+ {
+ "n": "音乐",
+ "v": "儿童音乐"
+ },
+ {
+ "n": "儿童MV",
+ "v": "儿童MV"
+ },
+ {
+ "n": "贝乐虎",
+ "v": "贝乐虎"
+ },
+ {
+ "n": "宝宝巴士",
+ "v": "宝宝巴士"
+ },
+ {
+ "n": "儿童好声音",
+ "v": "儿童好声音"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "动物世界": [
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "戏曲": [
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [
+ {
+ "n": "全部",
+ "v": "戏曲"
+ },
+ {
+ "n": "京剧",
+ "v": "京剧"
+ },
+ {
+ "n": "越剧",
+ "v": "越剧"
+ },
+ {
+ "n": "黄梅戏",
+ "v": "黄梅戏"
+ },
+ {
+ "n": "评剧",
+ "v": "评剧"
+ },
+ {
+ "n": "豫剧",
+ "v": "豫剧"
+ },
+ {
+ "n": "昆曲",
+ "v": "昆曲"
+ },
+ {
+ "n": "高腔",
+ "v": "高腔"
+ },
+ {
+ "n": "梆子腔",
+ "v": "梆子腔"
+ },
+ {
+ "n": "河北梆子",
+ "v": "河北梆子"
+ },
+ {
+ "n": "晋剧",
+ "v": "晋剧"
+ },
+ {
+ "n": "蒲剧",
+ "v": "蒲剧"
+ },
+ {
+ "n": "雁剧",
+ "v": "雁剧"
+ },
+ {
+ "n": "上党梆子",
+ "v": "上党梆子"
+ },
+ {
+ "n": "秦腔",
+ "v": "秦腔"
+ },
+ {
+ "n": "武安平调",
+ "v": "武安平调"
+ },
+ {
+ "n": "二人台",
+ "v": "二人台"
+ },
+ {
+ "n": "吉剧",
+ "v": "吉剧"
+ },
+ {
+ "n": "龙江剧",
+ "v": "龙江剧"
+ },
+ {
+ "n": "越调",
+ "v": "越调"
+ },
+ {
+ "n": "河南曲剧",
+ "v": "河南曲剧"
+ },
+ {
+ "n": "山东梆子",
+ "v": "山东梆子"
+ },
+ {
+ "n": "淮剧",
+ "v": "淮剧"
+ },
+ {
+ "n": "沪剧",
+ "v": "沪剧"
+ },
+ {
+ "n": "滑稽戏",
+ "v": "滑稽戏"
+ },
+ {
+ "n": "婺剧",
+ "v": "婺剧"
+ },
+ {
+ "n": "绍剧",
+ "v": "绍剧"
+ },
+ {
+ "n": "徽剧",
+ "v": "徽剧"
+ },
+ {
+ "n": "闽剧",
+ "v": "闽剧"
+ },
+ {
+ "n": "莆仙戏",
+ "v": "莆仙戏"
+ },
+ {
+ "n": "梨园戏",
+ "v": "梨园戏"
+ },
+ {
+ "n": "高甲戏",
+ "v": "高甲戏"
+ },
+ {
+ "n": "赣剧",
+ "v": "赣剧"
+ },
+ {
+ "n": "采茶戏",
+ "v": "采茶戏"
+ },
+ {
+ "n": "汉剧",
+ "v": "汉剧"
+ },
+ {
+ "n": "湘剧",
+ "v": "湘剧"
+ },
+ {
+ "n": "祁剧",
+ "v": "祁剧"
+ },
+ {
+ "n": "湖南花鼓戏",
+ "v": "湖南花鼓戏"
+ },
+ {
+ "n": "粤剧",
+ "v": "粤剧"
+ },
+ {
+ "n": "潮剧",
+ "v": "潮剧"
+ },
+ {
+ "n": "桂剧",
+ "v": "桂剧"
+ },
+ {
+ "n": "彩调",
+ "v": "彩调"
+ },
+ {
+ "n": "壮剧",
+ "v": "壮剧"
+ },
+ {
+ "n": "川剧",
+ "v": "川剧"
+ },
+ {
+ "n": "黔剧",
+ "v": "黔剧"
+ },
+ {
+ "n": "滇剧",
+ "v": "滇剧"
+ },
+ {
+ "n": "傣剧",
+ "v": "傣剧"
+ },
+ {
+ "n": "藏剧",
+ "v": "藏剧"
+ },
+ {
+ "n": "皮影戏",
+ "v": "皮影戏"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "窗白噪音": [
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ],
+ "演唱会": [
+ {
+ "key": "tid",
+ "name": "分类",
+ "value": [
+ {
+ "n": "全部",
+ "v": "演唱会"
+ },
+ {
+ "n": "周杰伦",
+ "v": "周杰伦"
+ },
+ {
+ "n": "陈奕迅",
+ "v": "陈奕迅"
+ },
+ {
+ "n": "Beyond",
+ "v": "Beyond"
+ },
+ {
+ "n": "刘德华",
+ "v": "刘德华"
+ },
+ {
+ "n": "郭富城",
+ "v": "郭富城"
+ },
+ {
+ "n": "张学友",
+ "v": "张学友"
+ },
+ {
+ "n": "黎明",
+ "v": "黎明"
+ },
+ {
+ "n": "李宗盛",
+ "v": "李宗盛"
+ },
+ {
+ "n": "邓丽君",
+ "v": "邓丽君"
+ },
+ {
+ "n": "朴树",
+ "v": "朴树"
+ },
+ {
+ "n": "林子祥",
+ "v": "林子祥"
+ },
+ {
+ "n": "任贤齐",
+ "v": "任贤齐"
+ },
+ {
+ "n": "张信哲",
+ "v": "张信哲"
+ },
+ {
+ "n": "孙楠",
+ "v": "孙楠"
+ },
+ {
+ "n": "张宇",
+ "v": "张宇"
+ },
+ {
+ "n": "周华健",
+ "v": "周华健"
+ },
+ {
+ "n": "蔡依林",
+ "v": "蔡依林"
+ },
+ {
+ "n": "薛之谦",
+ "v": "薛之谦"
+ },
+ {
+ "n": "洛天依",
+ "v": "洛天依"
+ },
+ {
+ "n": "初音未来",
+ "v": "初音未来"
+ },
+ {
+ "n": "许嵩",
+ "v": "许嵩"
+ },
+ {
+ "n": "戴佩妮",
+ "v": "戴佩妮"
+ },
+ {
+ "n": "邓紫棋",
+ "v": "邓紫棋"
+ },
+ {
+ "n": "张韶涵",
+ "v": "张韶涵"
+ },
+ {
+ "n": "蔡健雅",
+ "v": "蔡健雅"
+ },
+ {
+ "n": "莫文蔚",
+ "v": "莫文蔚"
+ },
+ {
+ "n": "刘若英",
+ "v": "刘若英"
+ },
+ {
+ "n": "周深",
+ "v": "周深"
+ },
+ {
+ "n": "毛不易",
+ "v": "毛不易"
+ },
+ {
+ "n": "汪苏泷",
+ "v": "汪苏泷"
+ },
+ {
+ "n": "李宇春",
+ "v": "李宇春"
+ },
+ {
+ "n": "徐佳莹",
+ "v": "徐佳莹"
+ },
+ {
+ "n": "杨宗纬",
+ "v": "杨宗纬"
+ },
+ {
+ "n": "胡彦斌",
+ "v": "胡彦斌"
+ },
+ {
+ "n": "杨千嬅",
+ "v": "杨千嬅"
+ },
+ {
+ "n": "张靓颖",
+ "v": "张靓颖"
+ },
+ {
+ "n": "李荣浩",
+ "v": "李荣浩"
+ },
+ {
+ "n": "杨丞琳",
+ "v": "杨丞琳"
+ },
+ {
+ "n": "林志炫",
+ "v": "林志炫"
+ },
+ {
+ "n": "陶喆",
+ "v": "陶喆"
+ },
+ {
+ "n": "胡夏",
+ "v": "胡夏"
+ },
+ {
+ "n": "李玉刚",
+ "v": "李玉刚"
+ },
+ {
+ "n": "弦子",
+ "v": "弦子"
+ },
+ {
+ "n": "陈小春",
+ "v": "陈小春"
+ },
+ {
+ "n": "萧亚轩",
+ "v": "萧亚轩"
+ },
+ {
+ "n": "鹿晗",
+ "v": "鹿晗"
+ },
+ {
+ "n": "纵贯线",
+ "v": "纵贯线"
+ },
+ {
+ "n": "许巍",
+ "v": "许巍"
+ },
+ {
+ "n": "林俊杰",
+ "v": "林俊杰"
+ },
+ {
+ "n": "赵雷",
+ "v": "赵雷"
+ },
+ {
+ "n": "谭咏麟",
+ "v": "谭咏麟"
+ },
+ {
+ "n": "凤凰传奇",
+ "v": "凤凰传奇"
+ },
+ {
+ "n": "容祖儿",
+ "v": "容祖儿"
+ },
+ {
+ "n": "周传雄",
+ "v": "周传雄"
+ },
+ {
+ "n": "SHE",
+ "v": "SHE"
+ },
+ {
+ "n": "苏打绿",
+ "v": "苏打绿"
+ },
+ {
+ "n": "五月天",
+ "v": "五月天"
+ },
+ {
+ "n": "张国荣",
+ "v": "张国荣"
+ },
+ {
+ "n": "梅艳芳",
+ "v": "梅艳芳"
+ },
+ {
+ "n": "孙燕姿",
+ "v": "孙燕姿"
+ },
+ {
+ "n": "李健",
+ "v": "李健"
+ },
+ {
+ "n": "华晨宇",
+ "v": "华晨宇"
+ },
+ {
+ "n": "袁娅维",
+ "v": "袁娅维"
+ },
+ {
+ "n": "大张伟",
+ "v": "大张伟"
+ },
+ {
+ "n": "TFBOYS",
+ "v": "TFBOYS"
+ },
+ {
+ "n": "王俊凯",
+ "v": "王俊凯"
+ },
+ {
+ "n": "易烊千玺",
+ "v": "易烊千玺"
+ },
+ {
+ "n": "王源",
+ "v": "王源"
+ },
+ {
+ "n": "田馥甄",
+ "v": "田馥甄"
+ },
+ {
+ "n": "小虎队",
+ "v": "小虎队"
+ },
+ {
+ "n": "张杰",
+ "v": "张杰"
+ },
+ {
+ "n": "王菲",
+ "v": "王菲"
+ },
+ {
+ "n": "伍佰",
+ "v": "伍佰"
+ },
+ {
+ "n": "刀郎",
+ "v": "刀郎"
+ },
+ {
+ "n": "草蜢",
+ "v": "草蜢"
+ },
+ {
+ "n": "潘玮柏",
+ "v": "潘玮柏"
+ },
+ {
+ "n": "梁静茹",
+ "v": "梁静茹"
+ },
+ {
+ "n": "林宥嘉",
+ "v": "林宥嘉"
+ },
+ {
+ "n": "蔡徐坤",
+ "v": "蔡徐坤"
+ },
+ {
+ "n": "周慧敏",
+ "v": "周慧敏"
+ },
+ {
+ "n": "李圣杰",
+ "v": "李圣杰"
+ },
+ {
+ "n": "张惠妹",
+ "v": "张惠妹"
+ },
+ {
+ "n": "萧敬腾",
+ "v": "萧敬腾"
+ },
+ {
+ "n": "周笔畅",
+ "v": "周笔畅"
+ },
+ {
+ "n": "焦迈奇",
+ "v": "焦迈奇"
+ },
+ {
+ "n": "尤长靖",
+ "v": "尤长靖"
+ },
+ {
+ "n": "郑中基",
+ "v": "郑中基"
+ },
+ {
+ "n": "谭维维",
+ "v": "谭维维"
+ },
+ {
+ "n": "陈慧娴",
+ "v": "陈慧娴"
+ },
+ {
+ "n": "张艺兴",
+ "v": "张艺兴"
+ },
+ {
+ "n": "王嘉尔",
+ "v": "王嘉尔"
+ },
+ {
+ "n": "刘宪华",
+ "v": "刘宪华"
+ },
+ {
+ "n": "张敬轩",
+ "v": "张敬轩"
+ },
+ {
+ "n": "李克勤",
+ "v": "李克勤"
+ },
+ {
+ "n": "阿杜",
+ "v": "阿杜"
+ },
+ {
+ "n": "郭静",
+ "v": "郭静"
+ },
+ {
+ "n": "崔健",
+ "v": "崔健"
+ },
+ {
+ "n": "庾澄庆",
+ "v": "庾澄庆"
+ },
+ {
+ "n": "汪峰",
+ "v": "汪峰"
+ },
+ {
+ "n": "那英",
+ "v": "那英"
+ },
+ {
+ "n": "杨坤",
+ "v": "杨坤"
+ },
+ {
+ "n": "叶倩文",
+ "v": "叶倩文"
+ },
+ {
+ "n": "王心凌",
+ "v": "王心凌"
+ },
+ {
+ "n": "张震岳",
+ "v": "张震岳"
+ },
+ {
+ "n": "韩红",
+ "v": "韩红"
+ },
+ {
+ "n": "齐秦",
+ "v": "齐秦"
+ },
+ {
+ "n": "张雨生",
+ "v": "张雨生"
+ },
+ {
+ "n": "黄品源",
+ "v": "黄品源"
+ },
+ {
+ "n": "林忆莲",
+ "v": "林忆莲"
+ },
+ {
+ "n": "丁当",
+ "v": "丁当"
+ },
+ {
+ "n": "郑智化",
+ "v": "郑智化"
+ },
+ {
+ "n": "李玟",
+ "v": "李玟"
+ },
+ {
+ "n": "谢霆锋",
+ "v": "谢霆锋"
+ },
+ {
+ "n": "黄小琥",
+ "v": "黄小琥"
+ },
+ {
+ "n": "徐小凤",
+ "v": "徐小凤"
+ },
+ {
+ "n": "任嘉伦",
+ "v": "任嘉伦"
+ },
+ {
+ "n": "卓依婷",
+ "v": "卓依婷"
+ },
+ {
+ "n": "逃跑计划",
+ "v": "逃跑计划"
+ },
+ {
+ "n": "青鸟飞鱼",
+ "v": "青鸟飞鱼"
+ },
+ {
+ "n": "飞儿乐队",
+ "v": "飞儿乐队"
+ },
+ {
+ "n": "花儿乐队",
+ "v": "花儿乐队"
+ },
+ {
+ "n": "南拳妈妈",
+ "v": "南拳妈妈"
+ },
+ {
+ "n": "水木年华",
+ "v": "水木年华"
+ },
+ {
+ "n": "动力火车",
+ "v": "动力火车"
+ },
+ {
+ "n": "筷子兄弟",
+ "v": "筷子兄弟"
+ },
+ {
+ "n": "鹿先森乐队",
+ "v": "鹿先森乐队"
+ },
+ {
+ "n": "信乐队",
+ "v": "信乐队"
+ },
+ {
+ "n": "旅行团乐队",
+ "v": "旅行团乐队"
+ },
+ {
+ "n": "By2",
+ "v": "By2"
+ },
+ {
+ "n": "郁可唯",
+ "v": "郁可唯"
+ },
+ {
+ "n": "宋亚森",
+ "v": "宋亚森"
+ },
+ {
+ "n": "费玉清",
+ "v": "费玉清"
+ },
+ {
+ "n": "费翔",
+ "v": "费翔"
+ },
+ {
+ "n": "金志文",
+ "v": "金志文"
+ },
+ {
+ "n": "黄家强",
+ "v": "黄家强"
+ },
+ {
+ "n": "方大同",
+ "v": "方大同"
+ },
+ {
+ "n": "吴克群",
+ "v": "吴克群"
+ },
+ {
+ "n": "罗大佑",
+ "v": "罗大佑"
+ },
+ {
+ "n": "光良",
+ "v": "光良"
+ },
+ {
+ "n": "田震",
+ "v": "田震"
+ },
+ {
+ "n": "凤飞飞",
+ "v": "凤飞飞"
+ },
+ {
+ "n": "谭晶",
+ "v": "谭晶"
+ },
+ {
+ "n": "王杰",
+ "v": "王杰"
+ },
+ {
+ "n": "羽泉",
+ "v": "羽泉"
+ },
+ {
+ "n": "金池",
+ "v": "金池"
+ },
+ {
+ "n": "屠洪刚",
+ "v": "屠洪刚"
+ },
+ {
+ "n": "戴荃",
+ "v": "戴荃"
+ },
+ {
+ "n": "郭采洁",
+ "v": "郭采洁"
+ },
+ {
+ "n": "罗志祥",
+ "v": "罗志祥"
+ },
+ {
+ "n": "王力宏",
+ "v": "王力宏"
+ },
+ {
+ "n": "林肯公园",
+ "v": "林肯公园"
+ },
+ {
+ "n": "迈克尔杰克逊",
+ "v": "迈克尔杰克逊"
+ },
+ {
+ "n": "泰勒·斯威夫特",
+ "v": "泰勒·斯威夫特"
+ },
+ {
+ "n": "阿黛尔",
+ "v": "阿黛尔"
+ },
+ {
+ "n": "BIGBANG",
+ "v": "BIGBANG"
+ },
+ {
+ "n": "LadyGaga",
+ "v": "LadyGaga"
+ },
+ {
+ "n": "贾斯丁比伯",
+ "v": "贾斯丁比伯"
+ },
+ {
+ "n": "中岛美雪",
+ "v": "中岛美雪"
+ },
+ {
+ "n": "仓木麻衣",
+ "v": "仓木麻衣"
+ },
+ {
+ "n": "后街男孩",
+ "v": "后街男孩"
+ },
+ {
+ "n": "布兰妮",
+ "v": "布兰妮"
+ },
+ {
+ "n": "夜愿乐队",
+ "v": "夜愿乐队"
+ }
+ ]
+ },
+ {
+ "key": "duration",
+ "name": "时长",
+ "value": [
+ {
+ "n": "全部",
+ "v": "0"
+ },
+ {
+ "n": "60分钟以上",
+ "v": "4"
+ },
+ {
+ "n": "30~60分钟",
+ "v": "3"
+ },
+ {
+ "n": "10~30分钟",
+ "v": "2"
+ },
+ {
+ "n": "10分钟以下",
+ "v": "1"
+ }
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/521/lib/采集静态.json$1$1 b/521/lib/采集静态.json$1$1
new file mode 100644
index 0000000..e6bb9e1
--- /dev/null
+++ b/521/lib/采集静态.json$1$1
@@ -0,0 +1,378 @@
+globalThis.getRandomItem = function(items) {
+ return items[Math.random() * items.length | 0];
+}
+var rule = {
+ title: '采集之王[合]',
+ author: '道长',
+ version: '20240706 beta17',
+ update_info: ``.trim(),
+ host: '',
+ homeTid: '',
+ 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=#TruePage##page=fypage',
+ classUrl: '/api.php/provide/vod/',
+ url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyfilter',
+ filter_url: '{{fl.类型}}',
+ headers: {
+ 'User-Agent': 'MOBILE_UA'
+ },
+ timeout: 5000,
+ limit: 20,
+ search_limit: 10,
+ searchable: 1,
+ quickSearch: 0,
+ filterable: 1,
+ play_parse: true,
+ parse_url: '',
+ search_match: false,
+ search_pic: true,
+ 预处理: $js.toString(() => {
+ function getClasses(item) {
+ let classes = [];
+ if (item.class_name && item.class_url) {
+ if (!/&|电影|电视剧|综艺|动漫[\u4E00-\u9FA5]+/.test(item.class_name)) {
+ try {
+ item.class_name = ungzip(item.class_name)
+ } catch (e) {
+ log(`不识别的class_name导致gzip解码失败:${e}`)
+ return classes
+ }
+ }
+ let names = item.class_name.split('&');
+ let urls = item.class_url.split('&');
+ let cnt = Math.min(names.length, urls.length);
+ for (let i = 0; i < cnt; i++) {
+ classes.push({
+ 'type_id': urls[i],
+ 'type_name': names[i]
+ });
+ }
+ }
+ return classes
+ }
+ if (typeof(batchFetch) === 'function') {
+ rule.search_limit = 16;
+ log('当前程序支持批量请求[batchFetch],搜索限制已设置为16');
+ }
+ let _url = rule.params;
+ log(`传入参数:${_url}`);
+ if (_url && typeof(_url) === 'string' && /^(http|file)/.test(_url)) {
+ if (_url.includes('$')) {
+ let _url_params = _url.split('$');
+ _url = _url_params[0];
+ rule.search_match = !!(_url_params[1]);
+ if (_url_params.length > 2) {
+ rule.search_pic = !!(_url_params[2]);
+ }
+ }
+ let html = request(_url);
+ let json = JSON.parse(html);
+ let _classes = [];
+ rule.filter = {};
+ rule.filter_def = {};
+ json.forEach(it => {
+ let _obj = {
+ type_name: it.name,
+ type_id: it.url,
+ parse_url: it.parse_url || '',
+ searchable: it.searchable !== 0,
+ api: it.api || '',
+ cate_exclude: it.cate_exclude || '',
+ cate_excludes: it.cate_excludes || [],
+ };
+ _classes.push(_obj);
+ try {
+ let json1 = [];
+ if (it.class_name && it.class_url) {
+ json1 = getClasses(it);
+ } else {
+ json1 = JSON.parse(request(urljoin(_obj.type_id, _obj.api || rule.classUrl))).class;
+ }
+ if (_obj.cate_excludes && Array.isArray(_obj.cate_excludes) && _obj.cate_excludes.length > 0) {
+ json1 = json1.filter(cl => !_obj.cate_excludes.includes(cl.type_name));
+ } else if (_obj.cate_exclude) {
+ json1 = json1.filter(cl => !new RegExp(_obj.cate_exclude, 'i').test(cl.type_name));
+ }
+ rule.filter[_obj.type_id] = [{
+ "key": "类型",
+ "name": "类型",
+ "value": json1.map(i => {
+ return {
+ "n": i.type_name,
+ 'v': i.type_id
+ }
+ })
+ }];
+ if (json1.length > 0) {
+ rule.filter_def[it.url] = {
+ "类型": json1[0].type_id
+ };
+ }
+ } catch (e) {
+ rule.filter[it.url] = [{
+ "key": "类型",
+ "name": "类型",
+ "value": [{
+ "n": "全部",
+ "v": ""
+ }]
+ }];
+ }
+ });
+ rule.classes = _classes;
+ }
+ }),
+ class_parse: $js.toString(() => {
+ input = rule.classes;
+ }),
+ 推荐: $js.toString(() => {
+ VODS = [];
+ if (rule.classes) {
+ let randomClass = getRandomItem(rule.classes);
+ let _url = urljoin(randomClass.type_id, input);
+ if (randomClass.api) {
+ _url = _url.replace('/api.php/provide/vod/', randomClass.api)
+ }
+ try {
+ let html = request(_url, {
+ timeout: rule.timeout
+ });
+ let json = JSON.parse(html);
+ VODS = json.list;
+ VODS.forEach(it => {
+ it.vod_id = randomClass.type_id + '$' + it.vod_id;
+ it.vod_remarks = it.vod_remarks + '|' + randomClass.type_name;
+ });
+ } catch (e) {}
+ }
+ }),
+ 一级: $js.toString(() => {
+ VODS = [];
+ if (rule.classes) {
+ let _url = urljoin(MY_CATE, input);
+ let current_vod = rule.classes.find(item => item.type_id === MY_CATE);
+ if (current_vod && current_vod.api) {
+ _url = _url.replace('/api.php/provide/vod/', current_vod.api)
+ }
+ let html = request(_url);
+ let json = JSON.parse(html);
+ VODS = json.list;
+ VODS.forEach(it => {
+ it.vod_id = MY_CATE + '$' + it.vod_id
+ });
+ }
+ }),
+ 二级: $js.toString(() => {
+ VOD = {};
+ if (orId === 'update_info') {
+ VOD = {
+ vod_content: rule.update_info.trim(),
+ vod_name: '更新日志',
+ type_name: '更新日志',
+ vod_pic: 'https://resource-cdn.tuxiaobei.com/video/FtWhs2mewX_7nEuE51_k6zvg6awl.png',
+ vod_remarks: `版本:${rule.version}`,
+ vod_play_from: '道长在线',
+ vod_play_url: '随机小视频$http://api.yujn.cn/api/zzxjj.php',
+ };
+ } else {
+ if (rule.classes) {
+ let _url = urljoin(fyclass, input);
+ let current_vod = rule.classes.find(item => item.type_id === fyclass);
+ if (current_vod && current_vod.api) {
+ _url = _url.replace('/api.php/provide/vod/', current_vod.api)
+ }
+ let html = request(_url);
+ let json = JSON.parse(html);
+ let data = json.list;
+ VOD = data[0];
+ if (current_vod && current_vod.type_name) {
+ VOD.vod_play_from = VOD.vod_play_from.split('$$$').map(it => current_vod.type_name + '|' + it).join('$$$')
+ }
+ }
+ }
+ }),
+ 搜索: $js.toString(() => {
+ VODS = [];
+ if (rule.classes) {
+ let canSearch = rule.classes.filter(it => it.searchable);
+ let page = Number(MY_PAGE);
+ page = (MY_PAGE - 1) % Math.ceil(canSearch.length / rule.search_limit) + 1;
+ let truePage = Math.ceil(MY_PAGE / Math.ceil(canSearch.length / rule.search_limit));
+ if (rule.search_limit) {
+ let start = (page - 1) * rule.search_limit;
+ let end = page * rule.search_limit;
+ let t1 = new Date().getTime();
+ let searchMode = typeof(batchFetch) === 'function' ? '批量' : '单个';
+ log('start:' + start);
+ log('end:' + end);
+ log('搜索模式:' + searchMode);
+ log('精准搜索:' + rule.search_match);
+ log('强制获取图片:' + rule.search_pic);
+ if (start < canSearch.length) {
+ let search_classes = canSearch.slice(start, end);
+ let urls = [];
+ search_classes.forEach(it => {
+ let _url = urljoin(it.type_id, input);
+ if (it.api) {
+ _url = _url.replace('/api.php/provide/vod/', it.api)
+ }
+ _url = _url.replace("#TruePage#", "" + truePage);
+ urls.push(_url);
+ });
+ let results_list = [];
+ let results = [];
+ if (typeof(batchFetch) === 'function') {
+ let reqUrls = urls.map(it => {
+ return {
+ url: it,
+ options: {
+ timeout: rule.timeout
+ }
+ }
+ });
+ let rets = batchFetch(reqUrls);
+ let detailUrls = [];
+ let detailUrlCount = 0;
+ rets.forEach((ret, idx) => {
+ let it = search_classes[idx];
+ if (ret) {
+ try {
+ let json = JSON.parse(ret);
+ let data = json.list;
+ data.forEach(i => {
+ i.site_name = it.type_name;
+ i.vod_id = it.type_id + '$' + i.vod_id;
+ i.vod_remarks = i.vod_remarks + '|' + it.type_name;
+ });
+ if (rule.search_match) {
+ data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name))
+ }
+ if (data.length > 0) {
+ if (rule.search_pic && !data[0].vod_pic) {
+ log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`);
+ let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(',');
+ detailUrls.push(detailUrl);
+ results_list.push({
+ data: data,
+ has_pic: false,
+ detailUrlCount: detailUrlCount
+ });
+ detailUrlCount++;
+ } else {
+ results_list.push({
+ data: data,
+ has_pic: true
+ });
+ }
+ }
+ } catch (e) {
+ log(`请求:${it.type_id}发生错误:${e.message}`)
+ }
+ }
+ });
+ let reqUrls2 = detailUrls.map(it => {
+ return {
+ url: it,
+ options: {
+ timeout: rule.timeout
+ }
+ }
+ });
+ let rets2 = reqUrls2.length > 0 ? batchFetch(reqUrls2) : [];
+ for (let k = 0; k < results_list.length; k++) {
+ let result_data = results_list[k].data;
+ if (!results_list[k].has_pic) {
+ try {
+ let detailJson = JSON.parse(rets2[results_list[k].detailUrlCount]);
+ log('二级数据列表元素数:' + detailJson.list.length);
+ result_data.forEach((d, _seq) => {
+ let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]);
+ if (detailVodPic) {
+ Object.assign(d, {
+ vod_pic: detailVodPic.vod_pic
+ });
+ }
+ });
+ } catch (e) {
+ log(`强制获取网站${result_data[0].site_name}的搜索图片失败:${e.message}`);
+ }
+ }
+ results = results.concat(result_data);
+ }
+ } else {
+ urls.forEach((_url, idx) => {
+ let it = search_classes[idx];
+ try {
+ let html = request(_url);
+ let json = JSON.parse(html);
+ let data = json.list;
+ data.forEach(i => {
+ i.vod_id = it.type_id + '$' + i.vod_id;
+ i.vod_remarks = i.vod_remarks + '|' + it.type_name;
+ });
+ if (rule.search_match) {
+ data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name))
+ }
+ if (data.length > 0) {
+ if (rule.search_pic && !data[0].vod_pic) {
+ log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`);
+ let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(',');
+ try {
+ let detailJson = JSON.parse(request(detailUrl));
+ log('二级数据列表元素数:' + detailJson.list.length);
+ data.forEach((d, _seq) => {
+ let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]);
+ if (detailVodPic) {
+ Object.assign(d, {
+ vod_pic: detailVodPic.vod_pic
+ });
+ }
+ });
+ } catch (e) {
+ log(`强制获取网站${it.type_id}的搜索图片失败:${e.message}`);
+ }
+ }
+ results = results.concat(data);
+ }
+ results = results.concat(data);
+ } catch (e) {
+ log(`请求:${it.type_id}发生错误:${e.message}`)
+ }
+ });
+ }
+ VODS = results;
+ let t2 = new Date().getTime();
+ log(`${searchMode}搜索:${urls.length}个站耗时:${(Number(t2) - Number(t1))}ms`)
+ }
+ }
+ }
+ }),
+ lazy: $js.toString(() => {
+ let parse_url = '';
+ if (flag && flag.includes('|')) {
+ let type_name = flag.split('|')[0];
+ let current_vod = rule.classes.find(item => item.type_name === type_name);
+ if (current_vod && current_vod.parse_url) {
+ parse_url = current_vod.parse_url
+ }
+ }
+ if (/\.(m3u8|mp4)/.test(input)) {
+ input = {
+ parse: 0,
+ url: input
+ }
+ } else {
+ if (parse_url.startsWith('json:')) {
+ let purl = parse_url.replace('json:', '') + input;
+ let html = request(purl);
+ input = {
+ parse: 0,
+ url: JSON.parse(html).url
+ }
+ } else {
+ input = parse_url + input;
+ }
+ }
+ }),
+}
\ No newline at end of file