提交新的 RSSHub Radar 规则
如果需要查看新规则的结果,建议您安装浏览器扩展程序。您可以在 参与我们 页面下载适合您浏览器的扩展程序。
编写规则
要制作新的 RSSHub Radar 规则,需要在 /lib/v2/ 目录下,相应的域名空间创建 radar.js 文件。下面以制作 GitHub 仓库 Issues 的 RSS 源为例,详见此处。编写的代码应如下所示:
module.exports = {
'github.com': {
_name: 'GitHub',
'.': [
{
title: '仓库 Issues',
docs: 'https://rsshub-docs.moeyy.cn/routes/programming#github',
source: ['/:user/:repo/issues/:id', '/:user/:repo/issues', '/:user/:repo'],
target: '/github/issue/:user/:repo',
},
],
},
};
顶层对象键
对象键是域名本身,不含任何子域名、URL 路径或协议。

在此示例中,域名为 github.com,对象键则为 github.com。
内部对象键
第一个内部对象键是 _name,是网站的名称。这应与路由文档的二级标题 (##) 相同。在此示例中是 GitHub。
其余的内部对象键是网站的子域名。如果要匹配的网站没有子域名,或者想同时匹配 www.example.com 和 example.com,则应使用 '.'。在此示例中,我们将使用 '.',因为我们希望匹配 github.com。请注意,每个子域名键应返回一个对象数组。
- github.com 和 www.github.com
- abc.github.com
- abc.def.github.com
module.exports = {
'github.com': {
_name: 'GitHub',
'.': [
{
title: '...',
docs: '...',
source: ['/...'],
target: '/...',
},
],
},
};
module.exports = {
'github.com': {
_name: 'GitHub',
abc: [
{
title: '...',
docs: '...',
source: ['/...'],
target: '/...',
},
],
},
};
module.exports = {
'github.com': {
_name: 'GitHub',
'abc.def': [
{
title: '...',
docs: '...',
source: ['/...'],
target: '/...',
},
],
},
};
title
标题是必填字段,应与路由文档的三级标题 (###) 相同。在此示例中,它是仓库 Issues。在 title 中无须重复网站名称 (_name),即 GitHub。
docs
文档链接也是必填字段。在这种情况下,GitHub 仓库 Issues 的文档链接将是 https://rsshub-docs.moeyy.cn/routes/programming#github。请注意,URL hash 应位于二级标题 (##) 处,而不是三级标题 (###) https://rsshub-docs.moeyy.cn/routes/programming#github-cang-ku-issues。
source
source 是可选字段,应指定 URL 路径。如果不想匹配任何 URL 路径,请将其留空。它只会出现在 RSSHub Radar 浏览器扩展程序 的适用于当前网站的 RSSHub选项中。
source 应为一个字符串数组。例如,如果 GitHub 仓库 Issues 的 source 是 /:user/:repo,则意味着当您访问 https://github.com/DIYgod/RSSHub 时将匹配 /:user/:repo,此时返回的结果 params 将是:{user: 'DIYgod', repo: 'RSSHub'}。浏览器扩展程序使用这些参数根据 target 字段建立 RSSHub 订阅地址。
如果要提取的值在 URL 参数或 URL hash 中,请使用 target 函数而不是 source 字段。 此外,请记住,source 字段仅匹配 URL 路径,而不匹配 URL 的任何其他部分。
您也可以使用 * 符号执行通配符匹配。请注意,此处的语法与 path-to-regexp 不同。例如,/:user/:repo/* 将匹配 https://github.com/DIYgod/RSSHub/issues 和 https://github.com/DIYgod/RSSHub/issues/1234。如果要对匹配结果进行命名,可以在 * 符号后放置变量名。例如,/user/:repo/*path,在此情况下,path 将是 issues 和 issues/1234。