Skip to content

zhifengle/rss2pan

Repository files navigation

Rss2pan

将 RSS 订阅离线下载到 115 网盘。

Note

Web API 会触发验证码 推荐使用 zhifengle/rss2cloud 具体见 #2

关于

之前使用 Nodejs 写的工具blog/rss2pan.ts

正在尝试用 Rust 实现一遍。

支持 RSS 源: nyaa, dmhy, mikanni

「 点击查看 实现功能 」
  • 115 离线功能
  • sqlite 存储数据
  • 实现 cli
  • proxy 配置
    • 目前写死在 build_proxy_client 里面
    • 读取 ALL_PROXY 或者 HTTPS_PROXY 环境变量
  • 正则过滤 filter
  • Windows 定时任务
    • 懒得写了,我是手动配置的
  • 不同网站的并发任务
  • 指定 magnet 链接或者文件,离线到 115

用法

在同一目录下面,配置好 rss.jsonnode-site-config.json.cookies

在命令行运行 rss2pan

.cookies 文件内容是115的cookie字符串。手动从浏览器复制或者使用 gcookie

REM 使用 gcookie 读取浏览器的 cookie
gcookie.exe 115.com > .cookies
# 查看帮助
rss2pan -h
# 直接运行。读取 rss.json,依次添加离线任务
rss2pan
# 并发请求 rss 网站。然后再添加 115 离线任务
rss2pan -m

# 指定 rss URL 离线下载
# 如果 rss.json 存在这条url 的配置,会读取配置。没有配置,默认离线到 115 的默认目录
rss2pan -u "https://mikanani.me/RSS/Bangumi?bangumiId=2739&subgroupid=12"

# 查看 magnet 子命令帮助
rss2pan magnet -h
rss2pan magnet --link "magnet:?xt=urn:btih:12345" --cid "12345"
# 离线包含 magnet 的 txt 文件; 按行分割
rss2pan magnet --txt magnet.txt --cid "12345"

注意

日志报 115 abnormal operation 时,说明账号触发了异常验证,需要在浏览器端手动离线,输入验证码后解除。

推荐使用 zhifengle/rss2cloud 具体见 #2

配置

「 点击查看 配置文件 rss.json 」
{
  "mikanani.me": [
    {
      "name": "test",
      "filter": "/简体|1080p/",
      "url": "https://mikanani.me/RSS/Bangumi?bangumiId=2739&subgroupid=12"
    }
  ],
  "nyaa.si": [
    {
      "name": "VCB-Studio",
      "cid": "2479224057885794455",
      "url": "https://nyaa.si/?page=rss&u=VCB-Studio"
    }
  ],
  "sukebei.nyaa.si": [
    {
      "name": "hikiko123",
      "cid": "2479224057885794455",
      "url": "https://sukebei.nyaa.si/?page=rss&u=hikiko123"
    }
  ],
  "share.dmhy.org": [
    {
      "name": "水星的魔女",
      "filter": "简日双语",
      "cid": "2479224057885794455",
      "url": "https://share.dmhy.org/topics/rss/rss.xml?keyword=%E6%B0%B4%E6%98%9F%E7%9A%84%E9%AD%94%E5%A5%B3&sort_id=2&team_id=0&order=date-desc"
    }
  ]
}

配置了 filter 后,标题包含该文字的会被离线。不设置 filter 默认离线全部

/简体|\\d{3-4}[pP]/ 使用斜线包裹的正则规则。注意转义规则

cid 是离线到指定的文件夹的 id 。

获取方法: 浏览器打开 115 的文件,地址栏像 https://115.com/?cid=2479224057885794455&offset=0&tab=&mode=wangpan

其中 2479224057885794455 就是 cid

「 点击查看 node-site-config.json 配置 」

配置示例。 设置 【httpsAgent】 表示使用代理连接对应网站。不想使用代理删除对应的配置。

{
  "share.dmhy.org": {
    "httpsAgent": "httpsAgent"
  },
  "nyaa.si": {
    "httpsAgent": "httpsAgent"
  },
  "sukebei.nyaa.si": {
    "httpsAgent": "httpsAgent"
  },
  "mikanime.tv": {
    "headers": {
      "Referer": "https://mikanime.tv/"
    }
  },
  "mikanani.me": {
    "httpsAgent": "httpsAgent",
    "headers": {
      "Referer": "https://mikanani.me/"
    }
  }
}

cookie 配置

node-site-config.json 文件里面配置 115.com cookie

{
  "115.com": {
    "headers": {
      "cookie": "yourcookie"
    }
  }
}

proxy 配置

设置【httpsAgent】会使用代理。默认使用的地址 http://127.0.0.1:10809

【httpsAgent】沿用的 node 版的配置。

需要自定义代理时,在命令行设置 Windows: set ALL_PROXY=http://youraddr:port

Linux: export ALL_PROXY=http://youraddr:port

@ECHO off
SETLOCAL
CALL :find_dp0
REM set ALL_PROXY=http://youraddr:port
rss2pan.exe  %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b

把上面的 batch 例子改成自己的代理地址。另存为 rss2pan.cmd 和 rss2pan.exe 放在一个目录下面。

在命令行运行 rss2pan.cmd 就能够使用自己的代理的了。

日志的环境变量

不想看日志时,Windows: set RUST_LOG=error