ソースを参照

采集之王数据优化

晚风拂柳颜 2 ヶ月 前
コミット
f8f1ca8d09

+ 7 - 1
app/t4/files/drpy_js/采集之王[合].js

@@ -20,6 +20,9 @@ var rule = {
     author: '道长',
     version: '20240705 beta16',
     update_info: `
+20240706:
+1.静态json数据支持cate_excludes分类名称列表过滤无数据分类
+2.更新采集分类生成器增加过滤筛选模式
 20240705:
 1.支持传参json后面增加$1 这样的额外标识,用于搜索结果精准匹配
 2.支持传参json后面增加$1$1 这样的额外标识,用于强制获取搜索图片。$1$不显示图片。默认是搜索强制有图片的[已实现详情页请求使用批量]
@@ -114,6 +117,7 @@ var rule = {
                     searchable: it.searchable !== 0,
                     api: it.api || '',
                     cate_exclude: it.cate_exclude || '',
+                    cate_excludes: it.cate_excludes || [],
                     // class_name: it.class_name || '',
                     // class_url: it.class_url || '',
                 };
@@ -125,7 +129,9 @@ var rule = {
                     } else {
                         json1 = JSON.parse(request(urljoin(_obj.type_id, _obj.api || rule.classUrl))).class;
                     }
-                    if (_obj.cate_exclude) {
+                    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] = [{

ファイルの差分が大きいため隠しています
+ 610 - 50
app/t4/files/json/采集[zy]静态.json


+ 86 - 7
app/t4/files/json/采集[密]静态.json

@@ -4,28 +4,71 @@
     "url": "https://jkunzy.com",
     "parse_url": "",
     "class_name": "H4sIAFQldWYC/zVOzU7CQBh8m+89OHnXBM/Gq4kmnryJDVQgUtoE9wCaFbQl1bU2oq67LH2Z/b7dvoVt1MtkfpKZsVLQbYiC4fcMiD3R4oUWQ8d7/4LxVnS6Plv5YgPHp+dnJ0cXUAcG5RVVlxT0gfgDzkXDrBqDVQpT7dRHm9Sria2Y3aZuOgCMUldqfIvaIhKp3XGMHrEvoZ5Vrgh9de+NgVrHVt75oqQghoPDzh74MKfxDfa+GoTfTRytafsMzsROLa3UlAigydKPSveu8ZqBlUOnsr/l7r7PBj5LAOfGti7HPAG34c1Zmgr/mkPN1s17qz9/AO52o6oSAQAA",
-    "class_url": "1&2&3&4&5&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37"
+    "class_url": "1&2&3&4&5&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37",
+    "cate_excludes": [
+      "都市激情",
+      "校园情事",
+      "人妻纵情",
+      "风俗伦理",
+      "另类小说",
+      "武侠古典",
+      "长篇连载"
+    ]
   },
   {
     "name": "鲨鱼",
     "url": "http://shayuzy5.com",
     "parse_url": "",
     "class_name": "H4sIAFMldWYC/z2PTU7CUBhFd/PNXQJDJ46M+ymmajF9Fgm2QElLg21RiopRyuvfZr6fdheWhDi8ybk359KiQp3wrdlae2D3lf0tu6GEBgxu2FPsBYB5xi/3lLl0nIJUY9ER5gU/Z8APDmpNo5TLd+BtIrU6L9Gi4nQlicGPNnTTpjUbzJdt5EM3LGj3e6rFBXTBpiexjMW5gy6ecf5xDrKvaWKwSlvbAVKB6C9a71plAQdz9tPry6sB0DrhVa/8hkfz3/cCsDAkGcusJlv1zIZ/DtKUQJ9PdFh2XoOV05v2vyzMRzwMUc9PjvxdcTT5AwonCZQRAQAA",
-    "class_url": "1&2&3&20&21&22&23&24&25&26&27&28&31&32&33&34&35&36&37&38&39&40"
+    "class_url": "1&2&3&20&21&22&23&24&25&26&27&28&31&32&33&34&35&36&37&38&39&40",
+    "cate_excludes": [
+      "原纱央莉",
+      "柚木TINA",
+      "大桥未久",
+      "仁科百华",
+      "天海翼",
+      "小川阿佐美",
+      "三上悠亚",
+      "长泽梓"
+    ]
   },
   {
     "name": "奥斯卡",
     "url": "https://aosikazy.com",
     "parse_url": "",
     "class_name": "H4sIAFUldWYC/z2PbU6DQBCGb7P38AD+0aTngaC1VEoAU0CBFlG6WkvapsTQhepldmaXW8inP5953zwzA8GFMyrptE5swosM3QfIPDgvCXQJr2LYOgS9FMMdhrqI1RG8uIMdFT/mAFAxSAt+PvJqQ2D2jeFC7o+o2aOtKNHJCP4qqN3D/AOrL4K+if4aF4m8KwjO3drPh3MgPfHK73PSz3ihgMFGYEYL4mJjENWlje7zf01vk+YKYU0bEIySq4mkb3Kfk9tredBw2XStSJo6HOxmEcGVCk8qbF8aUbsZLAMViupj6xcsgfcco9fBD0HQ+RmDjStOJcw8Uq8/2yf7Dyc3TVFS5w/sThNDXwEAAA==",
-    "class_url": "20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47"
+    "class_url": "20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47",
+    "cate_excludes": [
+      "视频一区",
+      "视频二区",
+      "视频三区",
+      "视频四区"
+    ]
   },
   {
     "name": "乐播",
     "url": "https://lbapi9.com",
     "parse_url": "",
     "class_name": "H4sIAFMldWYC/y2QbW6CQBCGbzNX6U2a9BZSiqjIV6v1AwxoqxgtsX5EYRF6mZ3Z5RZdIn822eSdZ955OJvT5US6IfsnwKDkLOFZQe9p+5HmjiwbaBKLWOPZBw4Z0E8iKoc6iegdQXQjXJ85Y7gpAO8M1xnPj/y+AbxteX5WSfUCz1L6NDGdYD4G7F0ptOXhSLoPahq9oaKRZgHay7ozx8FWjAqQSbde+QolvC7gr6+S0ltIpw+1aaP7pSqr4tDsNkoF4OwbaH7BQSBnHlYGYLoRo4jiJQYpCOcN84IXM17FQFOHphFqV9RdaDKXotZLzF5VUVttVF0atCjcejekscGZBSLxFVAxSD8Djg6Ng8wQ7ACi9NG1WlX8YfRhp1X112lodXhCk6F2E7s11PupvEU8W8hV2J5N931z9tPLsxKAQfUP2nDGlJwBAAA=",
-    "class_url": "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&26&27&28&29&30&31&32"
+    "class_url": "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&26&27&28&29&30&31&32",
+    "cate_excludes": [
+      "暴力虐待",
+      "学生校园",
+      "玄幻仙侠",
+      "明星偶像",
+      "生活都市",
+      "不伦恋情",
+      "经验故事",
+      "科学幻想",
+      "唯美清纯",
+      "网友自拍",
+      "亚洲性爱",
+      "欧美激情",
+      "露出偷窥",
+      "高跟丝袜",
+      "卡通漫画",
+      "Gif动图"
+    ]
   },
   {
     "name": "老鸭",
@@ -39,7 +82,23 @@
     "url": "http://senlinzy2.com",
     "parse_url": "",
     "class_name": "H4sIAFQldWYC/0VSzZLSQBB+m7579Gj5Ap68e7dKqzx5g10hQJbAruxGIUggIUF2I79KSEjyMtM9M29hB7K1h3RVV3f6+xu5zfF7nayF6vYBR5lIQtXe0nUDRJzSXSRHe64gkiHtt2S70q0/N0773MQRPRgY2Xi8BzwsxHEnc4srryUYpLI5wfkO8JTgPBbHjTgFQE8h78gzNKj+WFltXN+WazyV/aaI2zIJgVr98kZnQadHUMaSzC7WD1wBW//I6Yp4rGYOYM8Tia9nDq6/Adlzcp6q028/ffn88cNXkHuXD10u8PqajrnKPQyOoCe/WTTmUwxZ/mDFtChelY2IHezaLPXNe+abqHyDxg1XwHbI9ojUlCkf84clRX/4Dl6/ImumOhuQ2a1MZvS3jkYC2rDQf9DOtmyw5yuvQe0/dBoAyxWnH3KXYsvmyUq2NhgFcjAB7VmMQLatZozQyFRtV63JW0ecMuX5oO2DXg6p46PH3hSGap69YGwajbW9YCddXN4xamkEY2H/hmoh1U2Qg8NLw59qFNK80tEA9HWG8RUVtTJ/cqc4ikqpifmcZbwpJ3q2EIWNtUeOipkHcpPiuqdWe6AoELnLMrERg74v5MpQxS+VZZW32PwpnUnJEntmlcfFmwpUTe2XlC/58m/MELA71bUhvwQ5SKsHdPHpP+FuGXjCAgAA",
-    "class_url": "20&22&23&24&25&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&52&53&54&55&56&57&58&59&60&61&63&64&65&66&67&68&69&70&71&72&73&74&75&76&77"
+    "class_url": "20&22&23&24&25&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&52&53&54&55&56&57&58&59&60&61&63&64&65&66&67&68&69&70&71&72&73&74&75&76&77",
+    "cate_excludes": [
+      "都市激情",
+      "校园情事",
+      "人妻縱情",
+      "風俗倫理",
+      "另类小说",
+      "武侠古典",
+      "长篇连载",
+      "唯美写真",
+      "网友自拍",
+      "露出激情",
+      "街拍偷拍",
+      "丝袜美腿",
+      "卡通漫画",
+      "欧美风情"
+    ]
   },
   {
     "name": "阿里BB",
@@ -53,7 +112,13 @@
     "url": "https://didizy.com",
     "parse_url": "",
     "class_name": "H4sIAFUldWYC/zWPzVLCQBCE32buHn0R7564WOXBg1c05YaA8mclIbAloRQCQoRIKhWSEF9mZ3bzFi4abvNNd3VX4+QoskCkr/icAf4Bdh/RZiDSnIahCpj62gK5c+Ibcn3pP5yBWycQaUiOiaGLB/sE+qptNfzbaBfTG6e4VMG72sZQZbmKmCh8/BzC5QW2EmmZuhkU5zQz8Bih0atl/FjJsluD/C5FyrUu0jHQaCpXme6rvP7Z3NvRoby7v24APiUid+q/SC2phxYL2Weg43C+R+ZJPgV8mVXNMbaXVKyhMs1qwsj25LIDarBW7UXdJfcO/hhXN7cNoE2gE6gZyFYEVT4gxxNZR+TJL1aKp0hOAQAA",
-    "class_url": "20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44"
+    "class_url": "20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44",
+    "cate_excludes": [
+      "国产厂商",
+      "水果派解说",
+      "卡通动漫",
+      "采集教程"
+    ]
   },
   {
     "name": "奶香",
@@ -61,6 +126,20 @@
     "parse_url": "",
     "cate_exclude": "精品国产|精品日韩|精品综合|精品小说|精品美图",
     "class_name": "H4sIAFUldWYC/zWOW3KCQBBFd9P7yALyk1S5niBGBKPim4QkWFo4vvAVkyACbma6Z9hFBiE/U3Wq5957xDHFvoZuwiMG4gY09jNvWYK4xGg3SsB9R+5O/5e0jW4KRVQaK2q2gIcX6gVydyC9C9SeSusgormobgG1X/VBvWLlg0i65H6grYv+O5A1ypyT8AJhGsDjCa56aDLSn6EQKTpLoPFETDS1E9DIwGCM5yHcVSSb5V7UmspaSE6bHA8wjtAP+fnA4zmg/8Vjp7zQhil3uj7lG5nRws6sBB6aImIqIOw6FBJoLShew+O93Os0fM2b0H6hJ0ZaEyoPktUl60GmJxhW5eLWQm8ntFyefgtrB7j9wShQlblGHqt5MlrzpA8qJ80jmVuKByDmHWwskW1ArYnBRV4/ZZL8AQZHJrmdAQAA",
-    "class_url": "1&2&3&4&5&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47"
+    "class_url": "1&2&3&4&5&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47",
+    "cate_excludes": [
+      "精品国产",
+      "精品日韩",
+      "精品综合",
+      "精品小说",
+      "精品美图",
+      "都市言情",
+      "暴力侵犯",
+      "家庭伦伦",
+      "性感身体",
+      "角色扮演",
+      "福利姬",
+      "漫画连载"
+    ]
   }
 ]

+ 97 - 4
app/t4/files/json/采集分类生成器.py

@@ -12,6 +12,7 @@ import base64
 from urllib.parse import urljoin
 from concurrent.futures import ThreadPoolExecutor
 from pprint import pprint
+import time
 
 import requests
 
@@ -41,6 +42,14 @@ def compress_and_encode(data: str):
     return encoded_data
 
 
+def decode_and_decompress(encoded_data: str):
+    # 解码Base64数据
+    decoded_data = base64.b64decode(encoded_data.encode('utf-8'))
+    # 解压缩数据
+    decompressed_data = gzip.decompress(decoded_data).decode('utf-8')
+    return decompressed_data
+
+
 def get_classes(rec):
     classes = None
     if rec.get('url') and str(rec['url']).startswith('http'):
@@ -96,6 +105,31 @@ def get_convert_classes(rec):
     return classes
 
 
+def check_class(api, type_name, type_id, limit_count=6):
+    _url = f'{api}?ac=detail&pg=1&t={type_id}'
+    try:
+        r = requests.get(_url, headers=headers, timeout=timeout, verify=False)
+        ret = r.json()
+        if not ret.get("list") or len(ret["list"]) < limit_count:
+            print(f'获取资源 {api} 分类【{type_name}】数量为:{len(ret["list"])} 小于{limit_count}视为排除')
+            return False
+    except Exception as e:
+        print(f'获取资源 {_url} 分类【{type_name}】发生错误:{e}')
+    return True
+
+
+def check_active(api):
+    try:
+        r = requests.get(api, headers=headers, timeout=timeout, verify=False)
+        ret = r.json()
+        if not ret.get("class"):
+            return False
+    except Exception as e:
+        print(f'检查api: {api} 存活发生错误:{e}')
+        return False
+    return True
+
+
 def main(fname='采集'):
     file_path = f'./{fname}.json'
     out_file_path = file_path.replace('.json', '静态.json')
@@ -111,7 +145,7 @@ def main(fname='采集'):
     tasks = [pool.submit(get_convert_classes, rec) for rec in records]  # 构造一个列表,循环向线程池内submit提交执行的方法
     pool.shutdown(wait=True)  # 线程数等待所有线程结束,这里 卡住主线程
     results = [task.result() for task in tasks]
-    pprint(results)
+    print(results)
     new_records = []
     for record in records:
         rec_name = record["name"]
@@ -126,8 +160,67 @@ def main(fname='采集'):
         f.write(json.dumps(new_records, ensure_ascii=False, indent=2))
 
 
+def main_exclude(fname='采集静态', max_workers=0):
+    file_path = f'./{fname}.json'
+    if not os.path.exists(file_path):
+        exit(f'不存在采集文件路径:{file_path}')
+    with open(file_path, encoding='utf-8') as f:
+        data = f.read()
+    records = json.loads(data)
+    if len(records) < 1 or not records[0].get('class_name'):
+        exit('输入数据有误,疑似不是静态数据')
+    print(records)
+    new_records = []
+    for rec in records:
+        new_rec = rec.copy()
+        if rec.get('api'):
+            api_url = urljoin(rec['url'], rec['api'])
+        else:
+            api_url = urljoin(rec['url'], '/api.php/provide/vod/')
+        print(api_url)
+        cate_excludes = []
+        if not check_active(api_url):
+            print(f'{rec["name"]} ({rec["url"]})视为不存活,跳过分类检测')
+        else:
+            class_names = decode_and_decompress(rec['class_name']).split('&')
+            class_urls = rec['class_url'].split('&')
+            rec_pool = ThreadPoolExecutor(max_workers=max_workers or len(class_names))  # 初始化线程池内线程数量为分类数量
+            tasks = []
+            for i in range(len(class_names)):
+                type_name = class_names[i]
+                type_id = class_urls[i]
+                tasks.append(rec_pool.submit(check_class, api_url, type_name, type_id))
+            rec_pool.shutdown(wait=True)  # 线程数等待所有线程结束,这里 卡住主线程
+            results = [task.result() for task in tasks]
+            print(results)
+            for i in range(len(class_names)):
+                type_name = class_names[i]
+                # type_id = class_urls[i]
+                if not results[i]:
+                    cate_excludes.append(type_name)
+        if len(cate_excludes) > 0:
+            new_rec['cate_excludes'] = cate_excludes
+        new_records.append(new_rec)
+
+    with open(file_path, mode='w+', encoding='utf-8') as f:
+        f.write(json.dumps(new_records, ensure_ascii=False, indent=2))
+
+
 if __name__ == '__main__':
     use_gzip = True
-    fname = str(input('请输入文件名,留空默认为采集:\n'))
-    fname = fname or '采集'
-    main(fname)
+    fmode = str(input('请输入处理文件方式(0:生成分类 1:添加分类过滤),留空默认为生成静态分类:\n'))
+    ftips = '采集静态' if fmode == '1' else '采集'
+    fname = str(input(f'请输入文件名(q结束程序),留空默认为{ftips}:\n'))
+    t1 = time.time()
+    if fname == 'q':
+        exit('已主动结束脚本')
+    if not fmode or fmode == '0':
+        fname = fname or '采集'
+        main(fname)
+    elif fmode == '1':
+        fname = fname or '采集静态'
+        main_exclude(fname, 10)
+    else:
+        exit(f'未知的处理类型:{fmode}')
+    t2 = time.time()
+    print(f'本次程序运行耗时:{round(t2 - t1, 2)}秒')

+ 99 - 10
app/t4/files/json/采集静态.json

@@ -13,7 +13,25 @@
     "parse_url": "",
     "cate_exclude": "电影片|连续剧|综艺片|动漫片|电影解说|体育|演员|新闻资讯",
     "class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N9tAvomhRaFHoqcKpYrUd7VEQtCD6rYGAzee6iYYi/8s0kmZl7h/fPFO+RqKa8SKgdIV7chZ0j6qzZ/ReR+4p7Frc7dYLgCVAwUQ9r4t09M9+AIp/eippY22OtAN7Zkb5l3S+S25D7xiSP6j5yNWLXFGi2UemaWBzxslcTwZ/COKCX5yfETIcZY/i8u9A84akidykWUJr2LOoeoIkR88CHYZyU4y1Qu5TjEijfUjwAmiVaD+/DxNTN2K2E/sOQTWKg8x9dBkDHTE9Hl5EcWdqfenY3ewTDUIl4BCDiYWOjtzFTy9MB/NGBuBy5ZyKe7uqDTba0a/F9gURYSXPdWI1Z0FGzw456GSkW0sT0aiDx6rPTtFGP6O2kbvimEhdHu0SKESl/VPAhcKzKgJTwKOc+a7+rDarteHJQyZYl5sk/IOiszA8CAAA=",
-    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&45&46&47&48&49&50&51&52&53"
+    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&45&46&47&48&49&50&51&52&53",
+    "cate_excludes": [
+      "电影",
+      "连续剧",
+      "综艺",
+      "动漫",
+      "体育",
+      "海外剧",
+      "泰国剧",
+      "港台综艺",
+      "日韩综艺",
+      "欧美综艺",
+      "欧美动漫",
+      "足球",
+      "篮球",
+      "未分类",
+      "脑洞悬疑",
+      "反转爽剧"
+    ]
   },
   {
     "name": "豪华资源",
@@ -21,7 +39,13 @@
     "parse_url": "",
     "cate_exclude": "电影片|连续剧|综艺片|动漫片|电影解说|体育|演员|新闻资讯",
     "class_name": "H4sIALGjdWYC/zVPWw6CMBC8Tc/pI6D1w0eCKErCj1ofKBBjokg5DbsLt7Bdy1dnZrezMxS8WuWDVIKCF+hCYKqonluhO0X4zhglF/vg5sjskuIzt6ipTrT0SU4EzM6Nji2iaYFjj7UwNkusqRV8vhbhcImDkKdSuT2cbptSWtQ+ctBr54fVTYDvQcynjEABWzTvO+y1WzCRME578o/+J/StWlkKWOT4qdnhoLrId7L5Z0r1xLRc5D1hE0doWHe7mkOOUgpXXGaWkb5yyOPE1aLkbk78ALNMUSlMAQAA",
-    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&30&31&32&33&34&35&36&37&38"
+    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&30&31&32&33&34&35&36&37&38",
+    "cate_excludes": [
+      "电视剧",
+      "电影",
+      "动漫",
+      "综艺"
+    ]
   },
   {
     "name": "速播资源",
@@ -29,7 +53,11 @@
     "parse_url": "",
     "cate_exclude": "电影片|连续剧|综艺片|动漫片|电影解说|体育|演员|新闻资讯",
     "class_name": "H4sIALGjdWYC/zWPWw6CMBBFd9N1+ohKNVGMiBpI+FHrAyJISHiV1bQzsAuZgl/39LY9k0En0zJh6GStWGoumF4/oH4zrOqWlwzLl5ZH5CvqlfSJ0EpgvjAk9rqoiMA6q5Kbd1yMtzC1YeKazvX7erT0dhyG6qvoLsPQXQxFQ9QFTwpsthSQf6BJDZ1uJtKYQtV3tJckVPLQzr5t5qlyw1QeaU+OG/Q/wA//h1CQctwtiHrJD0Ycn8r6AAAA",
-    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27"
+    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27",
+    "cate_excludes": [
+      "电影",
+      "电视剧"
+    ]
   },
   {
     "name": "红牛资源",
@@ -37,7 +65,11 @@
     "parse_url": "",
     "cate_exclude": "电影片|连续剧|综艺片|动漫片|电影解说|体育|演员|新闻资讯",
     "class_name": "H4sIALGjdWYC/y2PXQ6CMBCEb9Nz+hOVaqIYFU0g8qRV1AgSEikUL9Pu1lvorj7Nl5nNZBbXlTOF8K89NjcnlcCm9VILNz1BeyGxJkE5ES5KvjERBgUMR0xq6eqGCPoh9CK+k+qfQrCzWrIXG6sVtcPzDl3JtD2wXBV2cyK3yKHu2Ctzknd65kE6c2bDNbwJf4tte8RwTLY1Kz94+Cq2eiYwpS8+mOVyptYAAAA=",
-    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&29&30"
+    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&29&30",
+    "cate_excludes": [
+      "电影",
+      "连续剧"
+    ]
   },
   {
     "name": "新浪资源",
@@ -46,7 +78,11 @@
     "api": "/xinlangapi.php/provide/vod/from/xlm3u8/",
     "cate_exclude": "电影片|连续剧|综艺片|动漫片|电影解说|体育|演员|新闻资讯",
     "class_name": "H4sIALGjdWYC/0WOXQ6CMBCEb9Nz+hOR+qAYETUh4UWtikaQkEihPU27W24hXU18msk3m53BuLaqZBjXTgSWC2YXF+hyhm3nuGQob1Ztkc89Nyr1DsMSpjNyYm2b1jsI90ZyuuPil8I4glFCLEkHTO4o+gP1wPsJuqLGVQGNJnYXqJf/Ffgd12dXSncnkqrwYrozRoH/adTGTV4Ms8fAP2ziC/TQAAAA",
-    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24"
+    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24",
+    "cate_excludes": [
+      "电影",
+      "电视剧"
+    ]
   },
   {
     "name": "飞刀资源",
@@ -54,7 +90,23 @@
     "parse_url": "",
     "cate_exclude": "^电影$|^电视剧$|^综艺$|^动漫$",
     "class_name": "H4sIALCjdWYC/zWR3W7CMAyF3ybPyY8KbYVWOnXZBtV2hUJZJ0ATE2tIn6ax27dYYidX+Y5jHZ84WN2suQqsbqNa2UwJ1I8x64TNj/D4Enb1PL03mK2Fu4NlQpQfB1MHwkojW9jtBmaKyrJ23USHtf3TnqBV2D/5AfB68Mf02fjD7s3QKarPtzCT1LtoUZZEyxwWO6L0begyou/NmH54wnk/7Xqi9BrCYX5GcyJSZZiNurDJnciUqOsQGH4uNPd+piAFK3mZmpYKye+gJdUoe1iMiw91G4R/xN7EldFTYhv5uBFRuylFFGwdb3gzvG92D4Ld40/wokJbdI+a3GMnB2eB3cmaF/f2f00wLfvpAQAA",
-    "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&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"
+    "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&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",
+    "cate_excludes": [
+      "电影",
+      "电视剧",
+      "综艺",
+      "动漫",
+      "欧美综艺",
+      "日本综艺",
+      "韩国综艺",
+      "国产综艺",
+      "新马泰综艺",
+      "港台综艺",
+      "其他综艺",
+      "韩国动漫",
+      "新马泰动漫",
+      "其他动漫"
+    ]
   },
   {
     "name": "黑木耳资源",
@@ -62,7 +114,25 @@
     "parse_url": "",
     "cate_exclude": "^电影$|^电视剧$|^综艺$|^动漫$",
     "class_name": "H4sIALGjdWYC/0WSbXKCQAyGb8M5UQcRqgU7DFal2mllKBa/pqNjQexl2M1yi7LZpP2175PNJnkDEJ1FfbIgOqtsKLzMEv6HvH1aUN2UV1pdRA4c8Fwdb+oE1fCpneeowrG0M1Rx0qWiSl3xXWkle6G0Y4wt66bMdHV5PeijXedIsxSPfgHxFJ8MfNlfaAW9e7u4oxqdaATwD1BvUWVTatKNBVEF5GK9w3pfR3QS4CGLDO6PqOJjmxd45VyaKsbYbqxGK+w9em5KD6tXgXCuqOopVAlV7x6J/eDfD61IWwqOBNrYsuabWSqTggHHYMBJujl5zTgPQ7BR7w55UfNQ9h4IWnuo3nbs0mzNAKQrddpymjuBaE0gNpOmcjkt/1EXnyFKxP6V026lsv+ahmOxf+EbY5uammWaf8T4IzDOCeiDUxouiIGdcyZWN/ALQpTFCIwCAAA=",
-    "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&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&52&53&54&55&56&57&58&59&60&61&62&63"
+    "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&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&52&53&54&55&56&57&58&59&60&61&62&63",
+    "cate_excludes": [
+      "电影",
+      "电视剧",
+      "动漫",
+      "综艺",
+      "短剧",
+      "其它片",
+      "新马泰综艺",
+      "古装短剧",
+      "悬疑短剧",
+      "神豪短剧",
+      "复仇短剧",
+      "强者短剧",
+      "萌宝短剧",
+      "韩国动漫",
+      "新马泰动漫",
+      "其它动漫"
+    ]
   },
   {
     "name": "iku喵",
@@ -70,7 +140,10 @@
     "parse_url": "",
     "cate_exclude": "",
     "class_name": "H4sIALGjdWYC/yXIOw5AQBRG4d3clVKMgmKEQlBNhiAoiBiPzfjdsQsxmpMvh+MJ+0j2LNh0EJrYbFashKC6t4aQ7deqv38vPaLBKVVPWTu1mo/wE/z5MomTd3KjyMocviDIGLL++wIj0AZ/awAAAA==",
-    "class_url": "1&2&3&4&20&21&22&23&24&25&26&27"
+    "class_url": "1&2&3&4&20&21&22&23&24&25&26&27",
+    "cate_excludes": [
+      "蓝光"
+    ]
   },
   {
     "name": "暴风资源",
@@ -88,7 +161,18 @@
     "searchable": 0,
     "cate_exclude": "电影片|连续剧|综艺片|动漫片|电影解说|体育|演员|新闻资讯",
     "class_name": "H4sIALGjdWYC/zWR607DMAyF3ybPCbuxDom1Yms3UTEJtmWI0bSMAr1kvEzspG9B46S/8h3b8XEcvSpBFjq4Y+bvWTcfEHCmm9YEtY3B4oTtuyclU6I47Yss6XmB4ykRj6BqLOFtiDcx1QXcZ3G+UXVAsSepam49uuMWfwXR7q0PW8Iz19cHSybLQa7pxjLH6krZ5IDpmaj8gX1MdMn9XdjzbjtzkzPbeZkPIjn0FoMgCy/8NPRGXzYIN4kX1G0QztsJ1R51OKMF0BoNfzXiiyn5aEafzHxfdDhmWmR0yMgeGAsjapjeM2xXEG36QN4ljSknJhNDGyfgVKgqdHnWvUwgWpDVzn7SP/ilxw64AQAA",
-    "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46"
+    "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46",
+    "cate_excludes": [
+      "电影片",
+      "连续剧",
+      "综艺片",
+      "动漫片",
+      "体育",
+      "演员",
+      "新闻资讯",
+      "电影资讯",
+      "娱乐新闻"
+    ]
   },
   {
     "name": "乐视资源",
@@ -97,6 +181,11 @@
     "cate_exclude": "",
     "api": "/api.php/provide/vod/at/json/",
     "class_name": "H4sIALWjdWYC/zVRWXbCMAy8jc/JUiAJjyWvNC3Lg1KWAE1fQlkKCQ6XsS3nFrVl+yszkmc0UmB04fRIID9w+gZ+h8jnHIof7sdEJDGUfY2q7VjcUo14sGN0pt+BdxTNFqI45PdCI1EfilqkkXpru8L7YLmPtWimyoiCHYxQAUEK9IC1KWV5jNMWe0XsNPH4JlA8pJ8Tvo6rcdsSnWeQOfK+USJHMLbTDDJxL9HL+BtHJRCzxBGzpyWXP76OHDllNokS6A/gtWS8kumZ8E3H7g31spqUuG0jgSjEfVpXVuAtGH2VjV95mbK86/y11wKvzB5bGLZRiyuxmw+5O4Jp2riW8N6yqk1sQjPFdQY9SRPwzO02p+orFPWu+lGqs5arFivGrPwk/H5mxQr2T3kNiHwJxXluYhPoZ6pTNSm/Nf4BxMaYBRkCAAA=",
-    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&44&46&48&49&50&51&52&53&54&55&56&57&58&59"
+    "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&44&46&48&49&50&51&52&53&54&55&56&57&58&59",
+    "cate_excludes": [
+      "电影",
+      "连续剧",
+      "体育赛事"
+    ]
   }
 ]

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません