jack 10 bulan lalu
induk
melakukan
9e7f84785e

+ 1 - 0
manual/dawn/config.json

@@ -0,0 +1 @@
+{"version": "1.1.3", "username": "yujieccyj01@hotmail.com", "password": "aaaAAA111!!!", "appid": "67bc1b9b20f45f80e7c94634"}

+ 283 - 0
manual/dawn/main.py

@@ -0,0 +1,283 @@
+import base64
+import datetime
+import json
+import logging
+import os.path
+import time
+import requests
+
+# 配置日志
+logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
+
+# 配置文件路径
+CONFIG_FILE = "config.json"
+
+
+# 初始化配置
+def init_config():
+    if not os.path.exists(CONFIG_FILE):
+        with open(CONFIG_FILE, "w", encoding="utf-8") as f:
+            json.dump({}, f)
+
+
+# 读取配置
+def load_config():
+    with open(CONFIG_FILE, "r", encoding="utf-8") as f:
+        return json.load(f)
+
+
+# 保存配置
+def save_config(config):
+    with open(CONFIG_FILE, "w", encoding="utf-8") as f:
+        json.dump(config, f, indent=4)
+
+
+# 获取版本号
+def get_version(config):
+    if "version" not in config:
+        # 这里可以添加获取版本号的逻辑
+        config["version"] = "1.1.3"
+        save_config(config)
+    return config["version"]
+
+
+# 获取App ID
+def get_app_id(config):
+    if "appid" not in config:
+        response = requests.get(
+            f"https://www.aeropres.in/chromeapi/dawn/v1/appid/getappid?app_v={get_version(config)}",
+            proxies=config.get("proxy"),
+            headers={
+                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"},
+            verify=False,
+            timeout=15
+        )
+        if response.status_code != 200:
+            raise Exception("获取appid失败")
+        config["appid"] = response.json()["data"]["appid"]
+        save_config(config)
+    return config["appid"]
+
+
+# 获取Puzzle ID
+def get_puzzle_id(config):
+    app_id = get_app_id(config)
+    headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "priority": "u=1, i",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+        "sec-fetch-dest": "empty",
+        "sec-fetch-mode": "cors",
+        "sec-fetch-site": "cross-site",
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/puzzle/get-puzzle?appid={app_id}",
+        proxies=config.get("proxy"),
+        headers=headers,
+        verify=False,
+        timeout=15
+    )
+    if response.status_code not in [200, 201]:
+        raise Exception("获取puzzle_id失败")
+    res_json = response.json()
+    if not res_json.get('success', False):
+        raise Exception("获取puzzle_id结果失败")
+    return res_json["puzzle_id"]
+
+
+# 获取Puzzle Code
+def get_puzzle_code(config):
+    puzzle_id = get_puzzle_id(config)
+    headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br, zstd",
+        "Accept-Language": "zh-CN,zh;q=0.9",
+        "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "priority": "u=1, i",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+        "sec-fetch-dest": "empty",
+        "sec-fetch-mode": "cors",
+        "sec-fetch-site": "cross-site",
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/puzzle/get-puzzle-image?puzzle_id={puzzle_id}&appid={get_app_id(config)}",
+        proxies=config.get("proxy"),
+        headers=headers,
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception("获取puzzle_url失败")
+    res_json = response.json()
+    if not res_json.get('success', False):
+        raise Exception("获取puzzle_url结果失败")
+    imgBase64 = res_json["imgBase64"]
+    data = base64.b64decode(imgBase64)
+    return get_code_with_img(puzzle_id, img_data=data)
+
+
+# 获取验证码
+def get_code_with_img(puzzle_id, img_data):
+    print(puzzle_id)
+    print(img_data)
+    print()
+
+
+# 获取Token
+def get_token(config):
+    if "token" not in config:
+        retry_count = config.get('retry', 3)
+        code = ""
+        puzzle_id = ""
+        while retry_count > 0:
+            try:
+                puzzle_id = get_puzzle_id(config)
+                code = get_puzzle_code(config)
+                break
+            except Exception as e:
+                logging.error(f"获取token失败,{e}")
+                retry_count -= 1
+        if not code or not puzzle_id:
+            return False
+        data = {
+            "username": config.get("username", ""),
+            "password": config.get("password", ""),
+            "logindata": {"_v": {"version": get_version(config)},
+                          "datetime": datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%fZ")[:-3]},
+            "puzzle_id": puzzle_id,
+            "ans": code,
+            "appid": get_app_id(config),
+        }
+        headers = {
+            "Accept": "*/*",
+            "Accept-Encoding": "gzip, deflate, br, zstd",
+            "Accept-Language": "zh-CN,zh;q=0.9",
+            "Origin": "chrome-extension://fpdkjdnhkakefebpekbdhillbhonfjjp",
+            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+            "priority": "u=1, i",
+            "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+            "sec-ch-ua-mobile": "?0",
+            "sec-ch-ua-platform": '"Windows"',
+            "sec-fetch-dest": "empty",
+            "sec-fetch-mode": "cors",
+            "sec-fetch-site": "cross-site",
+        }
+        retry_count = config.get('retry', 3)
+        while retry_count > 0:
+            try:
+                response = requests.post(
+                    f"https://www.aeropres.in/chromeapi/dawn/v1/user/login/v2?appid={get_app_id(config)}",
+                    json=data,
+                    proxies=config.get("proxy"),
+                    verify=False,
+                    timeout=15,
+                    headers=headers
+                )
+                if response.status_code != 200:
+                    raise Exception("获取token失败")
+                res_json = response.json()
+                if not res_json.get('success', False):
+                    raise Exception("获取token结果失败")
+                config["token"] = res_json["data"]["token"]
+                save_config(config)
+                break
+            except Exception as e:
+                logging.error(f"获取token失败,{e}")
+                retry_count -= 1
+    return config.get("token", "")
+
+
+# 获取积分
+def get_point(config):
+    headers = {
+        "Authorization": f"Bearer {config.get('token', '')}",
+        "Content-Type": "application/json",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+        "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
+        "sec-ch-ua-mobile": "?0",
+        "sec-ch-ua-platform": '"Windows"',
+    }
+    response = requests.get(
+        f"https://www.aeropres.in/api/atom/v1/userreferral/getpoint?appid={get_app_id(config)}",
+        headers=headers,
+        proxies=config.get("proxy"),
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception(f"获取积分失败,{response.text}")
+    if not response.json().get('success', False):
+        raise Exception(f"获取积分失败,{response.json()}")
+
+
+# 保持活跃
+def keep_alive(config):
+    headers = {
+        "Authorization": f"Bearer {config.get('token', '')}",
+        "Content-Type": "application/json",
+        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
+    }
+    data = {
+        "username": config.get("username", ""),
+        "extensionid": "fpdkjdnhkakefebpekbdhillbhonfjjp",
+        "numberoftabs": 0,
+        "_v": get_version(config)
+    }
+    response = requests.post(
+        f"https://www.aeropres.in/chromeapi/dawn/v1/userreward/keepalive?appid={get_app_id(config)}",
+        json=data,
+        headers=headers,
+        proxies=config.get("proxy"),
+        verify=False,
+        timeout=15
+    )
+    if response.status_code != 200:
+        raise Exception(f"保持活跃失败,{response.text}")
+    if not response.json().get('success', False):
+        raise Exception(f"保持活跃失败,{response.json()}")
+
+
+# 主函数
+def main():
+    init_config()
+    config = load_config()
+    while True:
+        token = get_token(config)
+        if not token:
+            time.sleep(60)
+            del config['token']
+            save_config(config)
+            continue
+        retry_count = 5
+        while retry_count > 0:
+            err = False
+            try:
+                get_point(config)
+            except Exception as e:
+                logging.error(f"获取积分失败,{e}")
+                err = True
+            try:
+                keep_alive(config)
+            except Exception as e:
+                logging.error(f"保持活跃失败,{e}")
+                err = True
+            if not err:
+                retry_count = 5
+            else:
+                retry_count -= 1
+            if retry_count <= 0:
+                break
+            time.sleep(5 * 60)
+
+
+if __name__ == '__main__':
+    main()

+ 221 - 0
manual/read_news/huntly.opml

@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<opml version="2.0">
+  <head>
+    <dateCreated>Mon, 24 Feb 2025 09:26:52 GMT</dateCreated>
+    <title>Exported by huntly</title>
+    <docs />
+  </head>
+  <body>
+    <outline text="未分类">
+      <outline text="吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn" type="rss" title="吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn" xmlUrl="https://www.52pojie.cn/forum.php?mod=rss&amp;amp;fid=24#force_feed" />
+      <outline text="吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn" type="rss" title="吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn" xmlUrl="https://www.52pojie.cn/forum.php?mod=rss&amp;amp;fid=16#force_feed" />
+      <outline text="哎呦不错往前方资源网" type="rss" title="哎呦不错往前方资源网" xmlUrl="https://qianfangzy.com/feed#force_feed" />
+      <outline text="小众软件" type="rss" title="小众软件" xmlUrl="https://feeds.appinn.com/appinns/#force_feed" />
+      <outline text="异次元软件世界" type="rss" title="异次元软件世界" xmlUrl="https://feed.iplaysoft.com/#force_feed" />
+      <outline text="知乎每日精选" type="rss" title="知乎每日精选" xmlUrl="https://www.zhihu.com/rss#force_feed" />
+    </outline>
+    <outline text="关注">
+      <outline text="36氪 - 24小时热榜" type="rss" title="36氪 - 24小时热榜" xmlUrl="https://rsshub.erhe.top/36kr/hot-list#force_feed" />
+      <outline text="bilibili热搜" type="rss" title="bilibili热搜" xmlUrl="https://rsshub.erhe.top/bilibili/hot-search#force_feed" />
+      <outline text="一觉醒来发生了什么 - 即刻圈子" type="rss" title="一觉醒来发生了什么 - 即刻圈子" xmlUrl="https://rsshub.erhe.top/jike/topic/text/553870e8e4b0cafb0a1bef68#force_feed" />
+      <outline text="存储 - Odaily星球日报" type="rss" title="存储 - Odaily星球日报" xmlUrl="https://rsshub.erhe.top/odaily/332#force_feed" />
+      <outline text="差评 快讯" type="rss" title="差评 快讯" xmlUrl="https://rsshub.erhe.top/chaping/newsflash#force_feed" />
+      <outline text="微博热搜榜" type="rss" title="微博热搜榜" xmlUrl="https://rsshub.erhe.top/weibo/search/hot#force_feed" />
+      <outline text="新浪财经-国内滚动" type="rss" title="新浪财经-国内滚动" xmlUrl="https://rsshub.erhe.top/sina/finance/china/1686#force_feed" />
+      <outline text="知乎想法-24小时新闻汇总" type="rss" title="知乎想法-24小时新闻汇总" xmlUrl="https://rsshub.erhe.top/zhihu/pin/daily#force_feed" />
+      <outline text="财新网 - 最新文章" type="rss" title="财新网 - 最新文章" xmlUrl="https://rsshub.erhe.top/caixin/latest" />
+    </outline>
+    <outline text="图片">
+      <outline text="1x.com • In Pursuit of the Sublime" type="rss" title="1x.com • In Pursuit of the Sublime" xmlUrl="https://rsshub.erhe.top/1x/latest/awarded#force_feed" />
+      <outline text="Google Doodles" type="rss" title="Google Doodles" xmlUrl="https://rsshub.erhe.top/google/doodles/zh-CN#force_feed" />
+      <outline text="Magnum Photos" type="rss" title="Magnum Photos" xmlUrl="https://rsshub.erhe.top/magnumphotos/magazine#force_feed" />
+      <outline text="NASA Astronomy Picture of the Day" type="rss" title="NASA Astronomy Picture of the Day" xmlUrl="https://rsshub.erhe.top/nasa/apod#force_feed" />
+      <outline text="NASA中文 - 天文·每日一图" type="rss" title="NASA中文 - 天文·每日一图" xmlUrl="https://rsshub.erhe.top/nasa/apod-cn#force_feed" />
+      <outline text="Search cat - Pixabay" type="rss" title="Search cat - Pixabay" xmlUrl="https://rsshub.erhe.top/pixabay/search/cat#force_feed" />
+      <outline text="海蓝时见鲸" type="rss" title="海蓝时见鲸" xmlUrl="https://rsshub.erhe.top/500px/tribe/set/f5de0b8aa6d54ec486f5e79616418001#force_feed" />
+    </outline>
+    <outline text="新媒体">
+      <outline text="#apple - 少数派" type="rss" title="#apple - 少数派" xmlUrl="https://rsshub.erhe.top/sspai/tag/apple#force_feed" />
+      <outline text="#创业邦周报# - 标签聚合 - 创业邦" type="rss" title="#创业邦周报# - 标签聚合 - 创业邦" xmlUrl="https://rsshub.erhe.top/cyzone/label/%E5%88%9B%E4%B8%9A%E9%82%A6%E5%91%A8%E6%8A%A5#force_feed" />
+      <outline text="#华为 - 少数派" type="rss" title="#华为 - 少数派" xmlUrl="https://rsshub.erhe.top/sspai/tag/%E5%8D%8E%E4%B8%BA#force_feed" />
+      <outline text="24小时-虎嗅网" type="rss" title="24小时-虎嗅网" xmlUrl="https://rsshub.erhe.top/huxiu/moment#force_feed" />
+      <outline text="36氪 - 24小时热榜" type="rss" title="36氪 - 24小时热榜" xmlUrl="https://rsshub.erhe.top/36kr/hot-list/24#force_feed" />
+      <outline text="36氪 - 资讯人气榜" type="rss" title="36氪 - 资讯人气榜" xmlUrl="https://rsshub.erhe.top/36kr/hot-list/renqi#force_feed" />
+      <outline text="36氪 - 资讯综合榜" type="rss" title="36氪 - 资讯综合榜" xmlUrl="https://rsshub.erhe.top/36kr/hot-list/shoucang#force_feed" />
+      <outline text="36氪 - 资讯综合榜" type="rss" title="36氪 - 资讯综合榜" xmlUrl="https://rsshub.erhe.top/36kr/hot-list/zonghe#force_feed" />
+      <outline text="DeFi - Odaily星球日报" type="rss" title="DeFi - Odaily星球日报" xmlUrl="https://rsshub.erhe.top/odaily/331#force_feed" />
+      <outline text="dji - 少数派" type="rss" title="dji - 少数派" xmlUrl="https://rsshub.erhe.top/sspai/tag/dji#force_feed" />
+      <outline text="GadioNews | 机核 GCORES" type="rss" title="GadioNews | 机核 GCORES" xmlUrl="https://rsshub.erhe.top/gcores/radios/45#force_feed" />
+      <outline text="Noema精选-萃嶺网" type="rss" title="Noema精选-萃嶺网" xmlUrl="https://rsshub.erhe.top/cuilingmag/selected_noema#force_feed" />
+      <outline text="Shortcuts Gallery - 少数派" type="rss" title="Shortcuts Gallery - 少数派" xmlUrl="https://rsshub.erhe.top/sspai/shortcuts#force_feed" />
+      <outline text="东西智库 – 专注中国制造业高质量发展" type="rss" title="东西智库 – 专注中国制造业高质量发展" xmlUrl="https://rsshub.erhe.top/dx2025#force_feed" />
+      <outline text="产业研究 - 乌有之乡网刊" type="rss" title="产业研究 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/chanye#force_feed" />
+      <outline text="全部-虎嗅网" type="rss" title="全部-虎嗅网" xmlUrl="https://rsshub.erhe.top/huxiu/article#force_feed" />
+      <outline text="分類 App 應用 最新文章- 電獺少女:女孩的科技日常-App、科技酷品、生活與美食" type="rss" title="分類 App 應用 最新文章- 電獺少女:女孩的科技日常-App、科技酷品、生活與美食" xmlUrl="https://rsshub.erhe.top/agirls/app#force_feed" />
+      <outline text="分類 手機 最新文章- 電獺少女:女孩的科技日常-App、科技酷品、生活與美食" type="rss" title="分類 手機 最新文章- 電獺少女:女孩的科技日常-App、科技酷品、生活與美食" xmlUrl="https://rsshub.erhe.top/agirls/phone#force_feed" />
+      <outline text="分類 筆電平板 最新文章- 電獺少女:女孩的科技日常-App、科技酷品、生活與美食" type="rss" title="分類 筆電平板 最新文章- 電獺少女:女孩的科技日常-App、科技酷品、生活與美食" xmlUrl="https://rsshub.erhe.top/agirls/computer#force_feed" />
+      <outline text="分類 週邊 最新文章- 電獺少女:女孩的科技日常-App、科技酷品、生活與美食" type="rss" title="分類 週邊 最新文章- 電獺少女:女孩的科技日常-App、科技酷品、生活與美食" xmlUrl="https://rsshub.erhe.top/agirls/accessories#force_feed" />
+      <outline text="創新拿鐵" type="rss" title="創新拿鐵" xmlUrl="https://rsshub.erhe.top/startuplatte#force_feed" />
+      <outline text="动物植物-新浪科技科学探索" type="rss" title="动物植物-新浪科技科学探索" xmlUrl="https://rsshub.erhe.top/sina/discovery/dwzw#force_feed" />
+      <outline text="即時 | 香港01" type="rss" title="即時 | 香港01" xmlUrl="https://rsshub.erhe.top/hk01/latest#force_feed" />
+      <outline text="即時報道 Archives - 論盡媒體 AllAboutMacau Media" type="rss" title="即時報道 Archives - 論盡媒體 AllAboutMacau Media" xmlUrl="https://rsshub.erhe.top/aamacau#force_feed" />
+      <outline text="反斗限免" type="rss" title="反斗限免" xmlUrl="https://free.apprcn.com/feed/#force_feed" />
+      <outline text="品玩 - ChinaJoy" type="rss" title="品玩 - ChinaJoy" xmlUrl="https://rsshub.erhe.top/pingwest/tag/ChinaJoy/1#force_feed" />
+      <outline text="品玩 - ChinaJoy" type="rss" title="品玩 - ChinaJoy" xmlUrl="https://rsshub.erhe.top/pingwest/tag/ChinaJoy/2#force_feed" />
+      <outline text="品玩 - 实时要闻" type="rss" title="品玩 - 实时要闻" xmlUrl="https://rsshub.erhe.top/pingwest/status#force_feed" />
+      <outline text="哲学·文明-萃嶺网" type="rss" title="哲学·文明-萃嶺网" xmlUrl="https://rsshub.erhe.top/cuilingmag/philosophy_civilization#force_feed" />
+      <outline text="商业 - 财富中文网" type="rss" title="商业 - 财富中文网" xmlUrl="https://rsshub.erhe.top/fortunechina/shangye#force_feed" />
+      <outline text="国内-封面新闻" type="rss" title="国内-封面新闻" xmlUrl="https://rsshub.erhe.top/thecover/channel/1#force_feed" />
+      <outline text="国防外交 - 乌有之乡网刊" type="rss" title="国防外交 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/guofang#force_feed" />
+      <outline text="国际纵横 - 乌有之乡网刊" type="rss" title="国际纵横 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/guoji#force_feed" />
+      <outline text="大師智慧 | 創新拿鐵" type="rss" title="大師智慧 | 創新拿鐵" xmlUrl="https://rsshub.erhe.top/startuplatte/quote#force_feed" />
+      <outline text="大河财立方" type="rss" title="大河财立方" xmlUrl="https://rsshub.erhe.top/dahecube/recommend#force_feed" />
+      <outline text="大河财立方" type="rss" title="大河财立方" xmlUrl="https://rsshub.erhe.top/dahecube/education#force_feed" />
+      <outline text="大风号-在人间-文章" type="rss" title="大风号-在人间-文章" xmlUrl="https://rsshub.erhe.top/ifeng/feng/2583/doc#force_feed" />
+      <outline text="天天问 - 人人都是产品经理" type="rss" title="天天问 - 人人都是产品经理" xmlUrl="https://rsshub.erhe.top/woshipm/wen#force_feed" />
+      <outline text="天文航空-新浪科技科学探索" type="rss" title="天文航空-新浪科技科学探索" xmlUrl="https://rsshub.erhe.top/sina/discovery/twhk#force_feed" />
+      <outline text="少数派 -- Matrix" type="rss" title="少数派 -- Matrix" xmlUrl="https://rsshub.erhe.top/sspai/matrix#force_feed" />
+      <outline text="少数派 -- 首页" type="rss" title="少数派 -- 首页" xmlUrl="https://rsshub.erhe.top/sspai/index#force_feed" />
+      <outline text="差评 - 首页图片墙" type="rss" title="差评 - 首页图片墙" xmlUrl="https://rsshub.erhe.top/chaping/banner#force_feed" />
+      <outline text="差评资讯 - DEBUG TIME" type="rss" title="差评资讯 - DEBUG TIME" xmlUrl="https://rsshub.erhe.top/chaping/news/6#force_feed" />
+      <outline text="差评资讯 - 互联网槽点" type="rss" title="差评资讯 - 互联网槽点" xmlUrl="https://rsshub.erhe.top/chaping/news/7#force_feed" />
+      <outline text="差评资讯 - 游戏" type="rss" title="差评资讯 - 游戏" xmlUrl="https://rsshub.erhe.top/chaping/news/1#force_feed" />
+      <outline text="差评资讯 - 直播" type="rss" title="差评资讯 - 直播" xmlUrl="https://rsshub.erhe.top/chaping/news/15#force_feed" />
+      <outline text="差评资讯 - 科技新鲜事" type="rss" title="差评资讯 - 科技新鲜事" xmlUrl="https://rsshub.erhe.top/chaping/news/3#force_feed" />
+      <outline text="差评资讯 - 视频" type="rss" title="差评资讯 - 视频" xmlUrl="https://rsshub.erhe.top/chaping/news/8#force_frrd#force_feed" />
+      <outline text="差评资讯 - 趣味科技" type="rss" title="差评资讯 - 趣味科技" xmlUrl="https://rsshub.erhe.top/chaping/news/5#force_feed" />
+      <outline text="广州本地宝焦点资讯" type="rss" title="广州本地宝焦点资讯" xmlUrl="https://rsshub.erhe.top/bendibao/news/gz#force_feed" />
+      <outline text="得到 - 年度日更" type="rss" title="得到 - 年度日更" xmlUrl="https://rsshub.erhe.top/dedao/list/%E5%B9%B4%E5%BA%A6%E6%97%A5%E6%9B%B4#force_feed" />
+      <outline text="志祺七七 全部 - 簡訊設計" type="rss" title="志祺七七 全部 - 簡訊設計" xmlUrl="https://rsshub.erhe.top/simpleinfo#force_feed" />
+      <outline text="志祺七七 國內外新聞 - 簡訊設計" type="rss" title="志祺七七 國內外新聞 - 簡訊設計" xmlUrl="https://rsshub.erhe.top/simpleinfo/news#force_feed" />
+      <outline text="快讯 - Odaily星球日报" type="rss" title="快讯 - Odaily星球日报" xmlUrl="https://rsshub.erhe.top/odaily/newsflash#force_feed" />
+      <outline text="思潮碰撞 - 乌有之乡网刊" type="rss" title="思潮碰撞 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/sichao#force_feed" />
+      <outline text="推广策略_推广优化方案-鸟哥笔记" type="rss" title="推广策略_推广优化方案-鸟哥笔记" xmlUrl="https://rsshub.erhe.top/niaogebiji/cat/134#force_feed" />
+      <outline text="数字治理-萃嶺网" type="rss" title="数字治理-萃嶺网" xmlUrl="https://rsshub.erhe.top/cuilingmag/digital_governance#force_feed" />
+      <outline text="文艺新生  - 乌有之乡网刊" type="rss" title="文艺新生  - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/wenyi#force_feed" />
+      <outline text="新华社新闻_新华网" type="rss" title="新华社新闻_新华网" xmlUrl="https://rsshub.erhe.top/news/xhsxw#force_feed" />
+      <outline text="新品 - Odaily星球日报" type="rss" title="新品 - Odaily星球日报" xmlUrl="https://rsshub.erhe.top/odaily/333#force_feed" />
+      <outline text="新媒体运营-鸟哥笔记" type="rss" title="新媒体运营-鸟哥笔记" xmlUrl="https://rsshub.erhe.top/niaogebiji/cat/103#force_feed" />
+      <outline text="新浪军事滚动新闻" type="rss" title="新浪军事滚动新闻" xmlUrl="https://rsshub.erhe.top/sina/rollnews/2514#force_feed" />
+      <outline text="新浪国内滚动新闻" type="rss" title="新浪国内滚动新闻" xmlUrl="https://rsshub.erhe.top/sina/rollnews/2510#force_feed" />
+      <outline text="新浪国际滚动新闻" type="rss" title="新浪国际滚动新闻" xmlUrl="https://rsshub.erhe.top/sina/rollnews/2511#force_feed" />
+      <outline text="新浪社会滚动新闻" type="rss" title="新浪社会滚动新闻" xmlUrl="https://rsshub.erhe.top/sina/rollnews/2669#force_feed" />
+      <outline text="新浪科技滚动新闻" type="rss" title="新浪科技滚动新闻" xmlUrl="https://rsshub.erhe.top/sina/rollnews/2515#force_feed" />
+      <outline text="新浪股市滚动新闻" type="rss" title="新浪股市滚动新闻" xmlUrl="https://rsshub.erhe.top/sina/rollnews/2517#force_feed" />
+      <outline text="新浪财经滚动新闻" type="rss" title="新浪财经滚动新闻" xmlUrl="https://rsshub.erhe.top/sina/rollnews/2516#force_feed" />
+      <outline text="新浪财经-今日财经 TOP10" type="rss" title="新浪财经-今日财经 TOP10" xmlUrl="https://rsshub.erhe.top/sina/finance/china/3231#force_feed" />
+      <outline text="新浪财经-地方经济" type="rss" title="新浪财经-地方经济" xmlUrl="https://rsshub.erhe.top/sina/finance/china/1688#force_feed" />
+      <outline text="新浪财经-宏观经济" type="rss" title="新浪财经-宏观经济" xmlUrl="https://rsshub.erhe.top/sina/finance/china/1687#force_feed" />
+      <outline text="新浪财经-部委动态" type="rss" title="新浪财经-部委动态" xmlUrl="https://rsshub.erhe.top/sina/finance/china/1689#force_feed" />
+      <outline text="新浪财经-金融新闻" type="rss" title="新浪财经-金融新闻" xmlUrl="https://rsshub.erhe.top/sina/finance/china/1690#force_feed" />
+      <outline text="新聞總覽|風傳媒" type="rss" title="新聞總覽|風傳媒" xmlUrl="https://rsshub.erhe.top/storm#force_feed" />
+      <outline text="早报网" type="rss" title="早报网" xmlUrl="https://rsshub.erhe.top/qqorw#force_feed" />
+      <outline text="时代观察 - 乌有之乡网刊" type="rss" title="时代观察 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/shidai#force_feed" />
+      <outline text="时刻新闻" type="rss" title="时刻新闻" xmlUrl="https://rsshub.erhe.top/timednews/news#force_feed" />
+      <outline text="时刻新闻" type="rss" title="时刻新闻" xmlUrl="https://rsshub.erhe.top/timednews/news/social#force_feed" />
+      <outline text="时刻新闻" type="rss" title="时刻新闻" xmlUrl="https://rsshub.erhe.top/timednews/news/international#force_feed" />
+      <outline text="时刻新闻" type="rss" title="时刻新闻" xmlUrl="https://rsshub.erhe.top/timednews/news/technology#force_feed" />
+      <outline text="时刻新闻" type="rss" title="时刻新闻" xmlUrl="https://rsshub.erhe.top/timednews/news/finance#force_feed" />
+      <outline text="最新 - Odaily星球日报" type="rss" title="最新 - Odaily星球日报" xmlUrl="https://rsshub.erhe.top/odaily/280#force_feed" />
+      <outline text="最新 - Odaily星球日报" type="rss" title="最新 - Odaily星球日报" xmlUrl="https://rsshub.erhe.top/odaily#force_feed" />
+      <outline text="最新-新浪科技科学探索" type="rss" title="最新-新浪科技科学探索" xmlUrl="https://rsshub.erhe.top/sina/discovery/zx#force_feed" />
+      <outline text="最新新闻 - 维基新闻" type="rss" title="最新新闻 - 维基新闻" xmlUrl="https://rsshub.erhe.top/wikinews/latest#force_feed" />
+      <outline text="最新资讯 - 创业邦" type="rss" title="最新资讯 - 创业邦" xmlUrl="https://rsshub.erhe.top/cyzone/channel/news#force_feed" />
+      <outline text="未来·生命-萃嶺网" type="rss" title="未来·生命-萃嶺网" xmlUrl="https://rsshub.erhe.top/cuilingmag/future_life#force_feed" />
+      <outline text="果壳网 吃货研究所" type="rss" title="果壳网 吃货研究所" xmlUrl="https://rsshub.erhe.top/guokr/column/institute#force_feed" />
+      <outline text="果壳网 物种日历" type="rss" title="果壳网 物种日历" xmlUrl="https://rsshub.erhe.top/guokr/column/calendar#force_feed" />
+      <outline text="果壳网 科学人" type="rss" title="果壳网 科学人" xmlUrl="https://rsshub.erhe.top/guokr/scientific#force_feed" />
+      <outline text="歐洲動態(國際)| 最新" type="rss" title="歐洲動態(國際)| 最新" xmlUrl="https://rsshub.erhe.top/europechinese/latest#force_feed" />
+      <outline text="波卡 - Odaily星球日报" type="rss" title="波卡 - Odaily星球日报" xmlUrl="https://rsshub.erhe.top/odaily/330#force_feed" />
+      <outline text="深度分析 | 創新拿鐵" type="rss" title="深度分析 | 創新拿鐵" xmlUrl="https://rsshub.erhe.top/startuplatte/analysis#force_feed" />
+      <outline text="測試及調查 - 消費者委員會" type="rss" title="測試及調查 - 消費者委員會" xmlUrl="https://rsshub.erhe.top/consumer#force_feed" />
+      <outline text="熱門新聞、全城熱話及社會時事 | 香港01" type="rss" title="熱門新聞、全城熱話及社會時事 | 香港01" xmlUrl="https://rsshub.erhe.top/hk01/hot#force_feed" />
+      <outline text="爆料公社最新動態" type="rss" title="爆料公社最新動態" xmlUrl="https://rsshub.erhe.top/bc3ts/post/list#force_feed" />
+      <outline text="理想之旅 - 乌有之乡网刊" type="rss" title="理想之旅 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/lixiang#force_feed" />
+      <outline text="生活-搜索结果-虎嗅网" type="rss" title="生活-搜索结果-虎嗅网" xmlUrl="https://rsshub.erhe.top/huxiu/search/%E7%94%9F%E6%B4%BB#force_feed" />
+      <outline text="用户运营_用户运营策略-鸟哥笔记" type="rss" title="用户运营_用户运营策略-鸟哥笔记" xmlUrl="https://rsshub.erhe.top/niaogebiji/cat/135#force_feed" />
+      <outline text="电动邦 - 技术" type="rss" title="电动邦 - 技术" xmlUrl="https://rsshub.erhe.top/diandong/news/22#force_feed" />
+      <outline text="电动邦 - 推荐" type="rss" title="电动邦 - 推荐" xmlUrl="https://rsshub.erhe.top/diandong/news#force_feed" />
+      <outline text="电动邦 - 政策" type="rss" title="电动邦 - 政策" xmlUrl="https://rsshub.erhe.top/diandong/news/24#force_feed" />
+      <outline text="电动邦 - 新车" type="rss" title="电动邦 - 新车" xmlUrl="https://rsshub.erhe.top/diandong/news/29#force_feed" />
+      <outline text="白话区块链 - 科普 最新" type="rss" title="白话区块链 - 科普 最新" xmlUrl="https://rsshub.erhe.top/hellobtc/kepu/latest#force_feed" />
+      <outline text="社会民生 - 乌有之乡网刊" type="rss" title="社会民生 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/shehui#force_feed" />
+      <outline text="福利吧" type="rss" title="福利吧" xmlUrl="https://rsshub.erhe.top/fuliba/latest#force_feed" />
+      <outline text="科学网 - 精选博文" type="rss" title="科学网 - 精选博文" xmlUrl="https://rsshub.erhe.top/sciencenet/blog#force_feed" />
+      <outline text="科技 - 财富中文网" type="rss" title="科技 - 财富中文网" xmlUrl="https://rsshub.erhe.top/fortunechina/keji#force_feed" />
+      <outline text="科技前沿-新浪科技科学探索" type="rss" title="科技前沿-新浪科技科学探索" xmlUrl="https://rsshub.erhe.top/sina/discovery/kjqy#force_feed" />
+      <outline text="移动支付网-" type="rss" title="移动支付网-" xmlUrl="https://rsshub.erhe.top/mpaypass/main/policy#force_feed" />
+      <outline text="端传媒 - 2019冠状病毒疫情" type="rss" title="端传媒 - 2019冠状病毒疫情" xmlUrl="https://rsshub.erhe.top/theinitium/tags/2019_10/zh-hans#force_feed" />
+      <outline text="端传媒 - 宁卉" type="rss" title="端传媒 - 宁卉" xmlUrl="https://rsshub.erhe.top/theinitium/author/ninghuilulu/zh-hans#force_feed" />
+      <outline text="端传媒 - 最新" type="rss" title="端传媒 - 最新" xmlUrl="https://rsshub.erhe.top/theinitium/channel/latest/zh-hans#force_feed" />
+      <outline text="米课圈 - 精华" type="rss" title="米课圈 - 精华" xmlUrl="https://rsshub.erhe.top/imiker/ask/jinghua#force_feed" />
+      <outline text="经济视点 - 乌有之乡网刊" type="rss" title="经济视点 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/jingji#force_feed" />
+      <outline text="综研专访 - 国家高端智库/综合开发研究院" type="rss" title="综研专访 - 国家高端智库/综合开发研究院" xmlUrl="https://rsshub.erhe.top/cdi/153#force_feed" />
+      <outline text="综研国策 - 国家高端智库/综合开发研究院" type="rss" title="综研国策 - 国家高端智库/综合开发研究院" xmlUrl="https://rsshub.erhe.top/cdi#force_feed" />
+      <outline text="综研国策 - 国家高端智库/综合开发研究院" type="rss" title="综研国策 - 国家高端智库/综合开发研究院" xmlUrl="https://rsshub.erhe.top/cdi/152#force_feed" />
+      <outline text="综研观察 - 国家高端智库/综合开发研究院" type="rss" title="综研观察 - 国家高端智库/综合开发研究院" xmlUrl="https://rsshub.erhe.top/cdi/150#force_feed" />
+      <outline text="综研视点 - 国家高端智库/综合开发研究院" type="rss" title="综研视点 - 国家高端智库/综合开发研究院" xmlUrl="https://rsshub.erhe.top/cdi/154#force_feed" />
+      <outline text="网友时评 - 乌有之乡网刊" type="rss" title="网友时评 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/shiping#force_feed" />
+      <outline text="美麗島電子報" type="rss" title="美麗島電子報" xmlUrl="https://rsshub.erhe.top/my-formosa#force_feed" />
+      <outline text="自然地理-新浪科技科学探索" type="rss" title="自然地理-新浪科技科学探索" xmlUrl="https://rsshub.erhe.top/sina/discovery/zrdl#force_feed" />
+      <outline text="舆论战争 - 乌有之乡网刊" type="rss" title="舆论战争 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/yulun#force_feed" />
+      <outline text="艺术·科技-萃嶺网" type="rss" title="艺术·科技-萃嶺网" xmlUrl="https://rsshub.erhe.top/cuilingmag/art_science#force_feed" />
+      <outline text="草稿拾遗" type="rss" title="草稿拾遗" xmlUrl="https://rsshub.erhe.top/zhiy/letters/messy#force_feed" />
+      <outline text="萃嶺网" type="rss" title="萃嶺网" xmlUrl="https://rsshub.erhe.top/cuilingmag#force_feed" />
+      <outline text="虎嗅一周宝藏【01期】-虎嗅网" type="rss" title="虎嗅一周宝藏【01期】-虎嗅网" xmlUrl="https://rsshub.erhe.top/huxiu/collection/212#force_feed" />
+      <outline text="虎嗅早报-早报-虎嗅网" type="rss" title="虎嗅早报-早报-虎嗅网" xmlUrl="https://rsshub.erhe.top/huxiu/briefcolumn/1#force_feed" />
+      <outline text="行星智慧-萃嶺网" type="rss" title="行星智慧-萃嶺网" xmlUrl="https://rsshub.erhe.top/cuilingmag/planetary_wisdom#force_feed" />
+      <outline text="观察者网 - 全部" type="rss" title="观察者网 - 全部" xmlUrl="https://rsshub.erhe.top/guancha#force_feed" />
+      <outline text="观察者网 - 头条" type="rss" title="观察者网 - 头条" xmlUrl="https://rsshub.erhe.top/guancha/headline#force_feed" />
+      <outline text="观察者网 - 热点" type="rss" title="观察者网 - 热点" xmlUrl="https://rsshub.erhe.top/guancha/redian#force_feed" />
+      <outline text="观察者网 - 风闻" type="rss" title="观察者网 - 风闻" xmlUrl="https://rsshub.erhe.top/guancha/fengwen#force_feed" />
+      <outline text="视觉动物 | 机核 GCORES" type="rss" title="视觉动物 | 机核 GCORES" xmlUrl="https://rsshub.erhe.top/gcores/tag/42/articles#force_feed" />
+      <outline text="读书交流 - 乌有之乡网刊" type="rss" title="读书交流 - 乌有之乡网刊" xmlUrl="https://rsshub.erhe.top/wyzxwk/article/shushe#force_feed" />
+      <outline text="阿里研究院 - 新闻" type="rss" title="阿里研究院 - 新闻" xmlUrl="https://rsshub.erhe.top/aliresearch/information#force_feed" />
+      <outline text="靠谱新闻" type="rss" title="靠谱新闻" xmlUrl="https://rsshub.erhe.top/kaopu/news/zh-hans#force_feed" />
+      <outline text="鸟哥笔记-今日事" type="rss" title="鸟哥笔记-今日事" xmlUrl="https://rsshub.erhe.top/niaogebiji/today#force_feed" />
+    </outline>
+    <outline text="社交媒体">
+      <outline text="bilibili 3日排行榜-全站-近期投稿" type="rss" title="bilibili 3日排行榜-全站-近期投稿" xmlUrl="https://rsshub.erhe.top/bilibili/ranking/0/3/1" />
+      <outline text="bilibili 综合热门" type="rss" title="bilibili 综合热门" xmlUrl="https://rsshub.erhe.top/bilibili/popular/all#force_feed" />
+      <outline text="一周口碑电影榜" type="rss" title="一周口碑电影榜" xmlUrl="https://rsshub.erhe.top/douban/movie/weekly#force_feed" />
+      <outline text="今日份的摄影 - 即刻圈子" type="rss" title="今日份的摄影 - 即刻圈子" xmlUrl="https://rsshub.erhe.top/jike/topic/556688fae4b00c57d9dd46ee#force_feed" />
+      <outline text="即刻圈子 - AI探索站" type="rss" title="即刻圈子 - AI探索站" xmlUrl="https://rsshub.erhe.top/jike/topic/63579abb6724cc583b9bba9a" />
+      <outline text="即刻圈子 - NFTs博物馆" type="rss" title="即刻圈子 - NFTs博物馆" xmlUrl="https://rsshub.erhe.top/jike/topic/621f1241461e52bb4d8c911d" />
+      <outline text="即刻圈子 - Web3研究所" type="rss" title="即刻圈子 - Web3研究所" xmlUrl="https://rsshub.erhe.top/jike/topic/5738965b6628391200809ff1" />
+      <outline text="即刻圈子 - 壁纸分享站" type="rss" title="即刻圈子 - 壁纸分享站" xmlUrl="https://rsshub.erhe.top/jike/topic/59e58bea89ee3f0016b4d2c6" />
+      <outline text="即将上映的电影" type="rss" title="即将上映的电影" xmlUrl="https://rsshub.erhe.top/douban/movie/later#force_feed" />
+      <outline text="正在上映的电影" type="rss" title="正在上映的电影" xmlUrl="https://rsshub.erhe.top/douban/movie/playing#force_feed" />
+      <outline text="異類矽谷 - 文章列表|方格子 vocus" type="rss" title="異類矽谷 - 文章列表|方格子 vocus" xmlUrl="https://rsshub.erhe.top/vocus/publication/bass#force_feed" />
+      <outline text="知乎想法热榜" type="rss" title="知乎想法热榜" xmlUrl="https://rsshub.erhe.top/zhihu/pin/hotlist#force_feed" />
+      <outline text="豆瓣 - 2024年09月定档热门新剧推荐" type="rss" title="豆瓣 - 2024年09月定档热门新剧推荐" xmlUrl="https://rsshub.erhe.top/douban/recommended/tv#force_feed" />
+    </outline>
+    <outline text="编程技术">
+      <outline text="智源社区" type="rss" title="智源社区" xmlUrl="https://rsshub.erhe.top/baai/hub#force_feed" />
+    </outline>
+    <outline text="购物">
+      <outline text="furstar 所有画家" type="rss" title="furstar 所有画家" xmlUrl="https://rsshub.erhe.top/furstar/artists/cn#force_feed" />
+      <outline text="Furstar 最新角色" type="rss" title="Furstar 最新角色" xmlUrl="https://rsshub.erhe.top/furstar/characters/cn#force_feed" />
+      <outline text="IKEA 宜家 - 低价优选" type="rss" title="IKEA 宜家 - 低价优选" xmlUrl="https://rsshub.erhe.top/ikea/cn/low_price#force_feed" />
+      <outline text="pinlei榜-11-3小时" type="rss" title="pinlei榜-11-3小时" xmlUrl="https://rsshub.erhe.top/smzdm/ranking/pinlei/11/3#force_feed" />
+      <outline text="今日热门-什么值得买好文" type="rss" title="今日热门-什么值得买好文" xmlUrl="https://rsshub.erhe.top/smzdm/haowen/1#force_feed" />
+      <outline text="全部 - 全部状态 - 最新上线 - 摩点众筹" type="rss" title="全部 - 全部状态 - 最新上线 - 摩点众筹" xmlUrl="https://rsshub.erhe.top/modian/zhongchou#force_feed" />
+      <outline text="咖啡 - 什么值得买" type="rss" title="咖啡 - 什么值得买" xmlUrl="https://rsshub.erhe.top/smzdm/keyword/%E5%92%96%E5%95%A1#force_feed" />
+      <outline text="多抓鱼搜索-JavaScript" type="rss" title="多抓鱼搜索-JavaScript" xmlUrl="https://rsshub.erhe.top/duozhuayu/search/JavaScript#force_feed" />
+      <outline text="小米有品众筹" type="rss" title="小米有品众筹" xmlUrl="https://rsshub.erhe.top/xiaomiyoupin/crowdfunding#force_feed" />
+      <outline text="最新线报活动-最新线报活动/教程攻略-0818团" type="rss" title="最新线报活动-最新线报活动/教程攻略-0818团" xmlUrl="https://rsshub.erhe.top/0818tuan#force_feed" />
+      <outline text="消费者报道" type="rss" title="消费者报道" xmlUrl="https://rsshub.erhe.top/ccreports/article#force_feed" />
+      <outline text="淘宝众筹-all" type="rss" title="淘宝众筹-all" xmlUrl="https://rsshub.erhe.top/taobao/zhongchou/all#force_feed" />
+      <outline text="生活电器 - 什么值得买好文分类" type="rss" title="生活电器 - 什么值得买好文分类" xmlUrl="https://rsshub.erhe.top/smzdm/haowen/fenlei/shenghuodianqi#force_feed" />
+      <outline text="电脑 - 什么值得买" type="rss" title="电脑 - 什么值得买" xmlUrl="https://rsshub.erhe.top/smzdm/keyword/%E7%94%B5%E8%84%91#force_feed" />
+      <outline text="硬盘 - 什么值得买" type="rss" title="硬盘 - 什么值得买" xmlUrl="https://rsshub.erhe.top/smzdm/keyword/%E7%A1%AC%E7%9B%98#force_feed" />
+      <outline text="线板酷-微博" type="rss" title="线板酷-微博" xmlUrl="https://rsshub.erhe.top/xianbao/weibo#force_feed" />
+      <outline text="线板酷-微博热帖" type="rss" title="线板酷-微博热帖" xmlUrl="https://rsshub.erhe.top/xianbao/weibo-hot#force_feed" />
+      <outline text="线板酷-新赚吧" type="rss" title="线板酷-新赚吧" xmlUrl="https://rsshub.erhe.top/xianbao/xinzuanba#force_feed" />
+      <outline text="线板酷-最新" type="rss" title="线板酷-最新" xmlUrl="https://rsshub.erhe.top/xianbao#force_feed" />
+      <outline text="线板酷-豆瓣热帖" type="rss" title="线板酷-豆瓣热帖" xmlUrl="https://rsshub.erhe.top/xianbao/douban-hot#force_feed" />
+      <outline text="线板酷-豆瓣线报" type="rss" title="线板酷-豆瓣线报" xmlUrl="https://rsshub.erhe.top/xianbao/douban#force_feed" />
+      <outline text="逛丢 - 国内" type="rss" title="逛丢 - 国内" xmlUrl="https://rsshub.erhe.top/guangdiu/k=daily#force_feed" />
+    </outline>
+  </body>
+</opml>

+ 199 - 0
manual/read_news/main.py

@@ -0,0 +1,199 @@
+# -*- coding: utf-8 -*-
+
+import os
+import re
+import xml.etree.ElementTree as ET
+from xml.etree.ElementTree import fromstring, ParseError
+import asyncio
+import httpx
+
+
+class OPMLParser:
+    def __init__(self, file_path):
+        """
+        初始化OPML解析器
+        :param file_path: OPML文件路径
+        """
+        self.file_path = file_path
+        self.data = None  # 用于存储解析后的数据
+
+    def clean_string(self, input_string):
+        """
+        清除字符串中的非法字符和多余的空格。
+        合法字符包括字母、数字和下划线。
+        """
+        # 使用正则表达式替换非法字符为空字符串
+        cleaned_string = re.sub(r'[^\w]', '', input_string)
+        return cleaned_string
+
+    def parse(self):
+        """
+        解析OPML文件为字典,从body节点开始
+        """
+        tree = ET.parse(self.file_path)
+        root = tree.getroot()
+
+        # 找到body节点
+        body = root.find(".//body")
+        if body is None:
+            raise ValueError("OPML文件中未找到body节点!")
+
+        self.data = self._parse_outline(body)
+
+        result = []
+        for children in self.data['children']:
+            for k, v in children.items():
+                if k == 'children':
+                    for d in v:
+                        result.append(d)
+
+        return result
+
+    def _parse_outline(self, element):
+        """
+        递归解析OPML中的outline元素
+        """
+        item = {
+            "title": self.clean_string(element.get("text")) if element.get("text") else '',
+            "xmlUrl": element.get("xmlUrl")
+        }
+        # 去除值为None的键
+        item = {k: v for k, v in item.items() if v is not None}
+
+        # 如果有子元素,递归解析
+        children = []
+        for child in element:
+            children.append(self._parse_outline(child))
+        if children:
+            item["children"] = children
+
+        return item
+
+    def get_data(self):
+        """
+        获取解析后的数据
+        """
+        if self.data is None:
+            raise ValueError("尚未解析数据,请先调用 parse 方法!")
+        return self.data
+
+
+class GetNews:
+    def __init__(self, parsed_data):
+        """
+        初始化 GetNews 类
+        :param parsed_data: OPMLParser 解析后的数据
+        """
+        self.parsed_data = parsed_data
+
+    async def fetch_news(self, url):
+        """
+        异步请求单个 RSS 链接并解析 XML 数据
+        :param url: RSS 链接
+        :return: 解析后的新闻数据,请求失败或状态码非200时返回空列表
+        """
+        try:
+            async with httpx.AsyncClient() as client:
+                response = await client.get(url)
+                if response.status_code != 200:
+                    return []  # 如果状态码不是200,直接返回空列表
+
+            xml_content = response.text
+
+            try:
+                root = fromstring(xml_content)
+                items = root.findall(".//item")
+                news_list = []
+                for item in items:
+                    title = self.clean_text(item.find("title").text) if item.find("title") is not None else "无标题"
+                    link = self.clean_text(item.find("link").text) if item.find("link") is not None else "无链接"
+                    description = self.clean_text(item.find("description").text) if item.find(
+                        "description") is not None else "无描述"
+                    news_list.append({
+                        "title": title,
+                        "link": link,
+                        "description": description
+                    })
+                return news_list
+            except ParseError:
+                return []  # XML 解析失败时返回空列表
+        except httpx.RequestError:
+            return []  # 请求失败时返回空列表
+
+    def clean_text(self, text):
+        """
+        清洗文本,去除HTML标签和特殊字符,返回纯文本
+        """
+        if not text:
+            return ""
+        # 去除HTML标签
+        clean_text = re.sub(r'<.*?>', '', text)
+        # 去除多余的空格和换行符
+        clean_text = re.sub(r'\s+', ' ', clean_text).strip()
+        return clean_text
+
+    async def get_all_news(self):
+        """
+        异步获取所有 RSS 链接的新闻数据
+        :return: 所有新闻数据的列表
+        """
+        tasks = []
+        for data in self.parsed_data:
+            url = data.get("xmlUrl")
+            if url:
+                tasks.append(self.fetch_news(url))
+
+        results = await asyncio.gather(*tasks)
+        return results
+
+
+class SearchByKeyword:
+    def __init__(self, data):
+        self.data = data
+
+    def search(self, keyword):
+        result = {}
+        for item in self.data:
+            if keyword.lower() in item['title'].lower() or keyword.lower() in item['description'].lower():
+                if keyword.lower() not in result:
+                    result[keyword] = []
+                result[keyword].append(item)
+        return result
+
+
+# 使用示例
+if __name__ == "__main__":
+    opml_file_path = "huntly.opml"
+    opml_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), opml_file_path)
+
+    if not os.path.exists(opml_file_path):
+        print(f"文件 {opml_file_path} 不存在!")
+        exit(1)
+
+    parser = OPMLParser(opml_file_path)
+    parsed_data = parser.parse()
+
+    print(f'一共有 {len(parsed_data)} 个订阅源')
+
+    get_news = GetNews(parsed_data)
+
+    # 异步获取所有新闻数据
+    loop = asyncio.get_event_loop()
+    all_news = loop.run_until_complete(get_news.get_all_news())
+
+    valid_data = []
+
+    for news_list in all_news:
+        if news_list:
+            for news in news_list:
+                valid_data.append(news)
+
+    S = SearchByKeyword(valid_data)
+    result = S.search('deepseek')
+    for keyword, item in result.items():
+        print(f'关键词 {keyword} 的新闻有:{len(item)} 条')
+        for news in item:
+            print(f'标题:{news["title"]}')
+            print(f'链接:{news["link"]}')
+            print(f'描述:{news["description"]}')
+            print('-' * 200)

+ 9 - 3
message/message_airdrop_tasks.py

@@ -8,6 +8,7 @@ headers = {
     "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
 }
 text = ''
+n = 0
 with httpx.Client() as client:
     for page in range(1, 5):
         payload = {
@@ -44,13 +45,18 @@ with httpx.Client() as client:
                     financing = airdrop['item4']
                     logoUrl = airdrop['logoUrl']
 
-                    if task != '无任务':
-                        task = '成本: {}, 耗时: {}, 任务类型: {}'.format(task['cost'], task['time'], task['task'])
+                    if task == '无任务':
+                        continue
+                    if task == 'No active tasks':
+                        continue
+
+                    task = '成本: {}, 耗时: {}, 任务类型: {}'.format(task.get('cost'), task.get('time'), task.get('task'))
 
                     text += '任务名称: {}\n排名: {}\n任务详细: {}\n更新时间: {}\n融资: {}\nlogo: {}\n'.format(name, rank, task, update_date, financing, logoUrl)
                     text += '=' * 50 + '\n'
-
+                    n += 1
                 break
 
 if text:
+    print(f'一共 {n} 条数据')
     httpx.post('https://gotify.erhe.top/message?token=Aoe0VKt-kkZnm8d', headers={'Content-Type': 'application/json'}, json={'title': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'message': text})