上传文件至 lib

This commit is contained in:
2025-09-06 15:28:07 +02:00
parent ab76ae15ee
commit 55c6d7dda7
5 changed files with 2062 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
{
"SiteUrl": "",
"Domains": [
"https://tv.yydsys.top",
"https://tv.yydsys.cc",
"https://tv.214521.xyz"
],
"SiteWord": "yyds",
"SiteName": "多多",
"Classes": [
{
"type_name": "电影",
"type_id": "1"
},
{
"type_name": "剧集",
"type_id": "2"
},
{
"type_name": "综艺",
"type_id": "3"
},
{
"type_name": "动漫",
"type_id": "4"
},
{
"type_name": "综艺",
"type_id": "20"
},
{
"type_name": "短剧",
"type_id": "5"
}
],
"Filters": {
"1": [
{
"name": "剧情",
"value": [
{
"v": "喜剧",
"n": "喜剧"
},
{
"v": "爱情",
"n": "爱情"
},
{
"v": "恐怖",
"n": "恐怖"
},
{
"v": "动作",
"n": "动作"
},
{
"v": "科幻",
"n": "科幻"
},
{
"v": "剧情",
"n": "剧情"
},
{
"v": "战争",
"n": "战争"
},
{
"v": "警匪",
"n": "警匪"
},
{
"v"
+81
View File
@@ -0,0 +1,81 @@
{
"规则名": "八号影视",
"规则作者": "",
"请求头参数": "User-Agent$手机#accept$text/html",
"网页编码格式": "UTF-8",
"图片是否需要代理": "0",
"是否开启获取首页数据": "0",
"首页推荐链接": "http://www.bahaotv.com",
"首页列表数组规则": "body&&.show-vod-list",
"首页片单列表数组规则": ".myui-vodbox-content",
"首页片单是否Jsoup写法": "1",
"分类起始页码": "1",
"分类链接": "http://www.bahaotv.com/vodshow/{cateId}--------{catePg}---.html",
"分类名称": "电影&电视剧&动漫",
"分类名称替换词": "movie&tvseries&anime",
"筛选数据": {},
//"筛选数据": "ext",
//{cateId}
"筛选子分类名称": "",
"筛选子分类替换词": "",
//{class}
"筛选类型名称": "",
"筛选类型替换词": "*",
//{area}
"筛选地区名称": "",
"筛选地区替换词": "*",
//{year}
"筛选年份名称": "",
"筛选年份替换词": "*",
//{lang}
"筛选语言名称": "",
"筛选语言替换词": "*",
//{by}
"筛选排序名称": "时间&人气&评分",
"筛选排序替换词": "time&hits&score",
"分类截取模式": "1",
"分类列表数组规则": ".show-vod-list&&.myui-vodbox-content",
"分类片单是否Jsoup写法": "1",
"分类片单标题": ".title&&Text",
"分类片单链接": "a&&href",
"分类片单图片": "img&&src",
"分类片单副标题": ".right&&Text",
"分类片单链接加前缀": "http://www.bahaotv.com",
"分类片单链接加后缀": "",
"搜索请求头参数": "User-Agent$手机#accept$text/html",
"搜索链接": "http://www.bahaotv.com/vodsearch/-------------.html?wd={wd}",
"POST请求数据": "",
"搜索截取模式": "1",
"搜索列表数组规则": ".show-vod-list&&.myui-vodbox-content",
"搜索片单是否Jsoup写法": "1",
"搜索片单图片": "img&&src",
"搜索片单标题": ".title&&Text",
"搜索片单链接": "a&&href",
"搜索片单副标题": ".right&&Text",
"搜索片单链接加前缀": "http://www.bahaotv.com",
"搜索片单链接加后缀": "",
"链接是否直接播放": "0",
"直接播放链接加前缀": "https://live.52sf.ga/huya/",
"直接播放链接加后缀": "#isVideo=true#",
"直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online",
"详情是否Jsoup写法": "1",
"类型详情": "",
"年代详情": "",
"地区详情": "",
"演员详情": ".detail-box&&.director,1&&Text!主演:",
"简介详情": ".intro&&Text",
"线路列表数组规则": ".nav-btn&&li",
"线路标题": "Text",
"播放列表数组规则": "body&&[id^=playlist]",
"选集列表数组规则": "a",
"选集标题链接是否Jsoup写法": "1",
"选集标题": "a&&Text",
"选集链接": "a&&href",
"是否反转选集序列": "0",
"选集链接加前缀": "http://www.bahaotv.com",
"选集链接加后缀": "",
"分析MacPlayer": "0",
"是否开启手动嗅探": "0",
"手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos",
"手动嗅探视频链接过滤词": ".html#=http"
}
File diff suppressed because one or more lines are too long
+1494
View File
@@ -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"
}
]
}
]
}
}
+378
View File
@@ -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;
}
}
}),
}