qBittorrent RSS 自动下载规则如何配置与克隆?

发布时间:2026/9/10 18:35:27
qBittorrent RSS 自动下载规则如何配置与克隆? qBittorrent RSS 自动下载规则如何配置与克隆【免费下载链接】qBittorrentqBittorrent BitTorrent client项目地址: https://gitcode.com/GitHub_Trending/qb/qBittorrentqBittorrent 内置了 RSS 自动下载器它监听你添加的 RSS 订阅源当新文章的标题匹配某条自动下载规则auto-download rule时自动把文章里的 torrent 链接加入下载队列。这篇文章基于仓库中的 WebAPI 实现和变更说明讲一条可以照着执行的路径通过 WebUI 的api/v2接口完成「添加订阅源 → 配置规则 → 启用自动处理 → 验证匹配」并演示如何用rss/cloneRule端点克隆一条现有规则。前提是你已经能访问 qBittorrent 的 WebUI默认端口 8080见 preferences.cpp 中WebUI/Port的默认值并且已具备 WebUI 的登录凭据auth/login成功后使用会话 Cookie或使用 Basic authWebAPI_Changelog.md 2.15.0 起支持下文以curl的-c/-b保存和携带 Cookie 为例。所有端点的实现集中在 rsscontroller.cpp接口前缀固定为/api/v2/见 webapplication.cpp 中的API_PATH。下文每条命令里http://127.0.0.1:8080需要替换为你实际的 WebUI 地址。1. 先添加 RSS 订阅源规则通过affectedFeeds字段与订阅源 URL 绑定所以第一步是确保目标源已经存在于 RSS 会话中。curl -c /tmp/qb.txt -d username你的WebUI用户名 -d password你的WebUI密码 \ http://127.0.0.1:8080/api/v2/auth/login curl -b /tmp/qb.txt -X POST -d urlhttps://example.org/feed.rss \ http://127.0.0.1:8080/api/v2/rss/addFeedrss/addFeed接受url、path、refreshInterval三个参数见 rsscontroller.cpp 中addFeedAction。path为空时订阅项以 URL 本身作为显示路径refreshInterval为刷新间隔的秒数小于 0 时按 0 处理。订阅源 URL 变化后rss/setFeedURLrss_autodownloader.cpp 中handleFeedURLChanged会自动把各规则和待处理任务里记录的旧 URL 替换成新 URL不需要手动改规则。如果只需要按名称列出当前已有的订阅源也可以调rss/items端点它返回以订阅源树为结构的 JSON。2. 创建规则rss/setRule 的完整字段rss/setRule只要求两个参数ruleName与ruleDef其中ruleDef是一段 JSON 字符串由RSS::AutoDownloadRule::fromJsonObject解析rss_autodownloadrule.cpp。JSON 的键名与序列化逻辑一一对应键含义按源码行为enabled规则是否启用未启用的规则在匹配阶段被跳过priority优先级规则列表按该值排序useRegex匹配表达式使用正则为false时表达式按通配符*/?处理mustContain多个表达式用空格分隔标题命中其中任一个即算命中mustNotContain标题必须全部不命中这些表达式任一命中即拒绝episodeFilter剧集过滤格式count x episode源码中用^(\\d{1,4})x(...;$)解析如10 x *表示“已匹配 10 集之后不再匹配”affectedFeeds该规则作用的订阅源 URL 列表ignoreDays忽略最近 N 天内的文章克隆出的规则会重置该状态lastMatch上次匹配时间RFC 2822 格式一般不用手工指定smartFilter是否使用智能剧集过滤默认按s01e01、01x01、2017.01.01、01.01.2017四种剧集编号格式去重见computeSmartFilterRegexpreviouslyMatchedEpisodes已匹配过的剧集列表用于去重一般不用手工指定torrentParams命中后下载任务的参数按torrents/add的参数结构填写例如savePath、category、addStopped下面是一个可直接执行的示例规则名为ShowA只作用于https://example.org/feed.rss这一个订阅源标题含ShowA且不含Sample时命中下载进Series分类、以暂停状态添加addStopped: truecurl -b /tmp/qb.txt -X POST \ -d ruleNameShowA \ --data-urlencode ruleDef{enabled:true,priority:0,useRegex:false,mustContain:ShowA,mustNotContain:Sample,episodeFilter:10 x *,affectedFeeds:[https://example.org/feed.rss],ignoreDays:0,smartFilter:true,torrentParams:{category:Series,savePath:/downloads/series,addStopped:true}} \ http://127.0.0.1:8080/api/v2/rss/setRule注意ruleDef里必须用--data-urlencode传避免 JSON 中的空格和引号破坏表单编码。规则写入后rss_autodownloader.cpp 中setRule会立即持久化新规则同步store()并重置处理队列。3. 克隆规则rss/cloneRule当第二条规则与现有规则大部分字段相同、只是匹配词或下载目录不同时可以用rss/cloneRule复制而不是重新填一遍ruleDef。该端点自 WebAPI 2.15.4 加入见 WebAPI_Changelog.md要求sourceName和cloneName两个参数curl -b /tmp/qb.txt -X POST \ -d sourceNameShowA -d cloneNameShowB \ http://127.0.0.1:8080/api/v2/rss/cloneRule克隆的行为由 rss_autodownloader.cpp 中AutoDownloader::cloneRule定义有四个固定结果写下来方便你验证源规则的所有匹配与下载参数被完整复制新规则名为cloneName克隆出的规则默认禁用setEnabled(false)源码注释说明这是为了避免误下载清空previouslyMatchedEpisodes让新规则可以对所有集数重新匹配清空lastMatch让新规则可以匹配旧文章。两个失败条件函数直接返回falseHTTP 层仍返回空结果sourceName不是已存在的规则或cloneName与现有规则重名。克隆成功后用第 4 步的rss/rules确认新规则存在且enabled为false然后按你的需要重新setRule打开。除克隆外同一控制器还提供rss/renameRuleruleNamenewRuleName和rss/removeRuleruleName可用于克隆后清理不需要的原规则。4. 启用自动处理并验证规则匹配本身不需要额外开关但自动下载任务由AutoDownloader的“处理”开关控制源码中为EnableProcessing设置项。GUI 用户在 RSS 面板的自动下载器里勾选“启用处理”WebUI 对应入口在 RSS 自动下载器页面。处理开启后AutoDownloader会在 torrent 会话恢复完成后自动启动开始消费处理队列。验证分两层确认规则与状态。调用rss/rules无参数返回{规则名: 规则定义}的 JSON 对象curl -b /tmp/qb.txt http://127.0.0.1:8080/api/v2/rss/rules检查输出中是否包含ShowA、ShowB以及enabled、affectedFeeds、torrentParams是否与你写入的一致。确认规则能命中现有文章。rss/matchingArticles要求ruleName参数对规则绑定的每个订阅源逐篇比对标题返回{订阅源名: [命中的文章标题]}curl -b /tmp/qb.txt -d ruleNameShowA http://127.0.0.1:8080/api/v2/rss/matchingArticles如果返回对象为空说明当前文章标题不满足mustContain/mustNotContain条件或affectedFeeds里的 URL 与实际订阅源 URL 不一致此时回到第 2 步调整表达式即可。命中后实际下载发生在订阅源刷新拉取到新文章时AutoDownloader会向日志输出RSS article 标题 is accepted by rule 规则名. Trying to add torrent...任务按torrentParams加入下载列表对应文章随后被标记为已读。你可以用 RSS 面板查看“已读”状态或用torrents/info确认新任务。5. 备份与迁移rss/exportRules / rss/importRules同一套规则需要在另一台 qBittorrent 上复用时走 JSON 导出/导入自 WebAPI 2.16.2 加入见 WebAPI_Changelog.mdcurl -b /tmp/qb.txt http://127.0.0.1:8080/api/v2/rss/exportRules -o rules.json curl -b /tmp/qb.txt -X POST \ -F rulesFilerules.json \ http://127.0.0.1:8080/api/v2/rss/importRulesrss/exportRules返回application/json文件文件名rss-downloader-rules.json内容结构与rss/rules相同rss/importRules只接受POST且要求请求中恰好一个规则文件参数名rulesFile文件内容不是合法 JSON 时返回 400 级别的 BadParams 错误由RSS::ParsingError抛出。导入会把文件中的每条规则写入目标实例同名规则会被覆盖。注意affectedFeeds里记录的是订阅源 URL导入前如果目标机上的订阅源 URL 不同规则不会命中需要先rss/addFeed或调整规则的affectedFeeds。限制与边界匹配只针对文章标题AutoDownloadRule::matches比较的是文章 data 中的标题字段正文内容不参与规则匹配处理开关关闭时队列不会被消费规则仍然存在但不会触发下载rss/setRule对已有同名规则是覆盖更新而不是新增误操作前建议先rss/rules备份当前定义或用rss/exportRules整体导出rss/cloneRule不提供“覆盖已有克隆名”的选项目标名已存在即失败旧版本WebAPI 2.15.4 之前没有rss/cloneRule端点需要升级后使用或手工setRule复制定义。除 API 路径外GUI 的 RSS 面板automatedrssdownloader.cpp和 WebUI 的 RSS 自动下载器页面rssDownloader.html提供同样的规则管理操作右键菜单中的重命名/克隆入口见 contextmenu.js与本文的 API 端点一一对应克隆入口只在选中单条规则时显示。【免费下载链接】qBittorrentqBittorrent BitTorrent client项目地址: https://gitcode.com/GitHub_Trending/qb/qBittorrent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考