Skip to content

WeiWenxing/any-rss

Repository files navigation

Any RSS Bot

一个支持 Telegram 和 Discord 的通用 RSS/Feed 监控机器人。

环境要求

  • Python 3.8+
  • pip
  • virtualenv

安装步骤

  1. 克隆项目
git clone https://github.com/WeiWenxing/any-rss.git cd any-rss
  1. 创建并激活虚拟环境
# 创建虚拟环境 python -m venv venv # Windows激活虚拟环境 venv\Scripts\activate # Linux/Mac激活虚拟环境 source venv/bin/activate
  1. 安装依赖
pip install -r requirements.txt
  1. 配置环境变量
# 复制环境变量示例文件 cp env.example .env # 编辑.env文件,填入必要的配置

环境变量说明

必填配置:

  • TELEGRAM_BOT_TOKEN: Telegram机器人token (从@BotFather获取)

可选配置:

  • TELEGRAM_TARGET_CHAT: 默认消息发送目标 (可以是频道如@channelname或用户ID如123456789)
  • DISCORD_TOKEN: Discord机器人token (如需Discord功能则必填)

运行方式

  1. 直接运行
python any-rss-bot.py
  1. 使用启动脚本(推荐)
# 添加执行权限 chmod +x restart.sh # 运行脚本 ./restart.sh

日志查看

程序运行日志位于:

tail -f /tmp/any-rss-bot.log

目录结构

project/ ├── apps/ # 应用入口层 │ ├── telegram_bot.py │ └── discord_bot.py ├── core/ # 核心配置层 │ └── config.py # 配置文件处理 ├── services/ # 具体服务层 │ ├── rss/ # RSS服务实现 │ │ ├── commands.py # RSS命令处理 │ │ └── manager.py # RSS管理器 │ └── douyin/ # 抖音服务实现 │ ├── commands.py # 抖音命令处理 │ ├── manager.py # 抖音管理器 │ ├── fetcher.py # 抖音内容获取器 │ └── formatter.py # 抖音消息格式化器 ├── storage/ # 数据存储层 │ ├── rss/ │ │ ├── config/ # RSS配置文件 │ │ └── feeds_data/ # RSS Feed数据存储 │ └── douyin/ │ ├── config/ # 抖音配置文件 │ ├── data/ # 抖音内容数据存储 │ └── media/ # 抖音媒体文件存储 └── any-rss-bot.py # 主程序入口 

命令使用说明

Telegram 命令

基础命令

  • /start - 启动机器人
  • /help - 显示帮助信息

RSS订阅管理

  • /add <RSS_URL> <CHAT_ID> - 添加新的RSS/Feed监控并绑定到指定频道
  • /del <RSS_URL> - 删除指定的RSS/Feed监控
  • /list - 显示所有监控的RSS/Feed列表及其绑定的频道
  • /news - 手动检查所有订阅源并发送更新内容到对应频道

抖音订阅管理

  • /douyin_add <抖音链接> <CHAT_ID> - 添加抖音用户订阅并绑定到指定频道
  • /douyin_del <抖音链接> - 删除指定的抖音用户订阅
  • /douyin_list - 显示所有抖音订阅列表及其绑定的频道
  • /douyin_check - 手动检查所有抖音订阅并发送更新内容到对应频道

开发者调试命令

  • /show [type] <item_xml> - 测试单个RSS条目的消息格式

命令详细说明

1. 添加RSS订阅

# 基本格式 /add <RSS_URL> <CHAT_ID> # 示例 /add https://example.com/feed.xml @my_channel /add https://rsshub.app/github/issue/DIYgod/RSSHub -1001234567890 /add https://feeds.feedburner.com/example 123456789

支持的频道ID格式:

  • @channel_name - 频道用户名
  • -1001234567890 - 频道数字ID
  • 123456789 - 用户数字ID

2. 删除RSS订阅

# 删除指定订阅 /del https://example.com/feed.xml

3. 查看订阅列表

# 显示所有订阅及其绑定的频道 /list

输出示例:

当前RSS订阅列表: - https://example.com/feed.xml → @my_channel - https://another.com/rss → -1001234567890 - https://third.com/atom.xml → (未设置频道) 

4. 手动检查更新

# 强制检查所有订阅源并发送更新 /news

5. 抖音订阅管理

添加抖音订阅
# 基本格式 /douyin_add <抖音链接> <CHAT_ID> # 示例 /douyin_add https://v.douyin.com/iM5g7LsM/ @my_channel /douyin_add https://www.douyin.com/user/MS4wLjABAAAAxxx -1001234567890

支持的抖音链接格式:

  • https://v.douyin.com/xxx - 手机分享链接
  • https://www.douyin.com/user/xxx - 电脑端用户主页链接
删除抖音订阅
# 删除指定抖音订阅 /douyin_del https://v.douyin.com/iM5g7LsM/
查看抖音订阅列表
# 显示所有抖音订阅及其绑定的频道 /douyin_list
手动检查抖音更新
# 强制检查所有抖音订阅并发送更新 /douyin_check

6. 开发者调试命令

# 自动判断消息模式(默认) /show <item><title>标题</title><description>内容</description></item> # 强制文字为主模式 /show text <item><title>标题</title><description>内容</description></item> # 强制图片为主模式 /show media <item><title>标题</title><description>内容</description></item> # Atom格式支持 /show <entry><title>标题</title><content>内容</content></entry>

type参数说明:

  • auto - 自动判断(≥2张图片为图片为主,<2张图片为文字为主)
  • text - 强制文字为主模式
  • media - 强制图片为主模式

支持的格式:

  • RSS 2.0 - 使用<item>标签,内容字段为<description>
  • Atom 1.0 - 使用<entry>标签,内容字段为<content>

消息格式说明

图片为主模式(≥2张图片)

  • 发送图片组,每组最多10张图片
  • 简洁caption格式:#作者 标题 📊 1/2(多批次时显示批次信息)
  • 使用智能分批算法,确保图片分布均匀

文字为主模式(<2张图片)

  • 先发送完整文字消息(包含时间、标题、链接、内容)
  • 再发送图片组(如果有图片,使用简洁caption)

支持的Feed格式

  • RSS 2.0: 标准的RSS格式
  • Atom 1.0: 标准的Atom格式
  • RSSHub生成的Feed: 支持RSSHub等工具生成的标准Feed

监控功能说明

订阅管理

  1. 频道绑定: 每个RSS源可以绑定到不同的频道,支持多频道分发
  2. 首次添加: 首次添加订阅源时,会展示所有现有内容
  3. 智能去重: 基于条目ID/链接的智能去重机制

自动监控

  1. 定时检查: 每小时自动检查所有订阅源的更新
  2. 差异检测: 自动对比并发现新增的条目
  3. 分频道推送: 将更新内容发送到对应绑定的频道

删除机制

  • 删除订阅时只删除配置记录,保留所有历史数据
  • 重新添加时可避免重复推送历史内容
  • 保护用户的历史数据不丢失

数据存储

  • 每个Feed使用URL哈希值作为唯一目录名
  • 原始Feed内容以XML格式存储
  • 支持历史版本对比和新增内容检测
  • 配置文件记录URL与频道ID的映射关系

技术特性

  • 异步处理: 使用asyncio实现高效的并发处理
  • 多平台支持: 同时支持Telegram和Discord
  • 多内容源支持: 支持RSS/Feed和抖音用户内容订阅
  • 智能消息格式: 根据内容自动选择最佳显示方式
  • 频道绑定: 支持每个RSS源和抖音用户绑定到不同频道
  • 媒体文件处理: 自动下载并发送视频/图片文件
  • 智能分批: 图片发送使用均衡分批算法
  • Flood Control: 完善的发送速度控制和重试机制
  • 数据持久化: 本地文件系统存储,支持数据恢复
  • 错误处理: 完善的异常处理和日志记录
  • 标准兼容: 支持标准的RSS 2.0和Atom 1.0格式
  • 第三方API集成: 集成抖音内容解析API

注意事项

  1. 确保.env文件中配置了正确的bot token
  2. 添加订阅时必须指定目标频道ID
  3. 如果目标是Telegram频道,需要将机器人添加为频道的管理员
  4. 机器人需要有在目标频道发布消息的权限
  5. 首次运行时需要创建虚拟环境并安装依赖

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors