使用 GitHub Action + Google Translate 实现翻译 RSS 订阅源全文

作者: 去年夏天 分类: 佳软推荐,技术文章 发布时间: 2023-03-27 00:43

随着 RSS 订阅源越来越多,从非中文 RSS 订阅源获取消息就出了点问题,
英文站点不多的时候,看原始文章标题还是没感到什么阻碍的。所以并没有使用到翻译。
随着订阅源增多,再怎么说英语也不是日常语言,获取信息的速度明显不如中文,
况且慢慢地有俄语,韩语等语言的订阅源,就完全看不懂了,产生了翻译 RSS 的需求。
在一番寻找下,最终找了一个基于 GitHub Action + Google Translate 实现翻译 RSS 订阅源全文的项目。



需要准备的东西

这次你只需要准备一个github账号。
注册地址(https://github.com/signup
输入邮箱地址和密码,选择免费计划,验证邮箱地址,按照提示操作,创建您的个人帐户。
PS:如果你感觉部分内容是英文的识别困难,用浏览器的翻译功能吧。

GitHub部署

记录三个需要的参数

U_NAME

就是你github的用户名,你可以点右上角的头像看到一行字:
Signed in as xxxxxx,这个xxxx就是你的用户名

U_EMAIL

就是你github的注册邮箱,如果你实在是记不清了,可以点右上角的头像
Settings→Access→Emails,然后右侧就会看到你的邮箱了

WORK_TOKEN

因为项目涉及使用脚本操作仓库内容,所以需要给脚本修改仓库内文件的权限,需要申请一个Repository Secret令牌。
1. 点击网页右上角自己的头像,点 【Settings】
img

  1. 点击左侧最下方的【Developer settings】

  2. 点击左侧下方的【Personal access tokens】-【Tokens(classic)】 ,点击左上角的 【Generate new token (classic)】新建一个token

  3. 新建token

  • Note: rss translate
  • Select scopes:勾选【repo】和【workflow】(你直接勾workflow,repo就全勾上了)
  • Expiration:选【No expiration】(无期限)
  • 点击页面最下方的 【Generate token】
  1. 复制token
    注意一定要在这里复制好,错过这个页面你就再也看不到token了。
    注意一定要在这里复制好,错过这个页面你就再也看不到token了。
    注意一定要在这里复制好,错过这个页面你就再也看不到token了。

  2. 返回你repo的Upptime项目。点击 【Settings】,展开左侧的【Secrets】,点击【Actions 】 点击【 New repository secret】

Fork项目

  1. 登录你的Github,并且进入项目(https://github.com/tjsky/RSS-Translation
  2. 点击右上角的【Fork】将项目复刻到你自己的仓库
  3. 如果你有git使用基础,请将fork到的代码重新add到一个新的仓库使用,而不是直接修改fork后的这个仓库使用。
    • 因为 GitHub 会根据此上游的存储库计算 fork GitHub Actions 使用情况,这可能会导致此上游的存储库被判定为滥用action而被 GitHub 工作人员封禁。最知名的因此遭殃的项目就是LSPosed的项目。(意思就是如果万一说不准这个项目未来火了,fork的人太多,作者就有可能会被封号)
    • 如果你想支持原作者 talengu 可以 fork+star 他的仓库一下,但就别启用 action 了,而是建立自己的仓库使用。

设置需要的令牌

点击 【Settings】,展开左侧的【Secrets and varlables】,点击【Actions 】 点击【 New repository secret】

  • 给翻译仓库设定 U_NAME 参数
    • Name: U_NAME
    • Value: 上边U_NAME所说的你的用户名
    • 点击 【Add secret】
  • 给翻译仓库设定 U_EMAIL 参数
    • Name: U_EMAIL
    • Value: 上边 U_EMAIL 所说的你的邮箱
    • 点击 【Add secret】
  • 给翻译仓库设定 WORK_TOKEN 参数
    • Name: WORK_TOKEN
    • Value: 上边 WORK_TOKEN 所说的你的令牌
    • 点击 【Add secret】

给需要的权限

  1. 给与actions读写权限
    • 点击 【Settings】,展开左侧的【Actions】
    • 点击【General 】 找到【 Workflow permissions】
    • 将选项改为【Read and write permissions】
    • 点击 Save 按钮。
  2. 开启 GitHub Pages
    • 点击【Settings】
    • 在左侧 【Code and automation】 下找到 【Pages】 点击进入
    • 将 【Branch】 设置为 【main】
    • 点击 【Save】

设置需要的 RSS 翻译订阅源

  1. 点击【Code】,点击进入【 test.ini 】文件

  2. 点击笔形图标,编辑代码

  3. 设置你需要的订阅源
    前两行的内容不要动。

[cfg]
base = "rss/"

需要改 RSS 订阅源请改后面的代码,格式如下

  • [source001]:订阅序号,从001开始增长,注意请确保编号不要重复,不然代码会报错
  • name = "mckinsey_rss.xml":生成订阅的名称,只允许包含英文字母(a-zA-Z)、数字(0-9)、(-,_,.,~)4个特殊字符,并且结尾一定是.xml或.rss
  • url = "http://www.mckinsey.com/insights/rss":RSS订阅链接
    max = "10":每次RSS订阅源获取的更新条数,如果你的订阅源为全文订阅(就是会显示一大堆文字的话),请适当减少这个数字的大小,因为脚本使用的翻译接口,有最大字符数限制,一次更新太多(翻译太多)会导致后面的文字没有被翻译。
  • md5 = "":留空即可,将来脚本会自己计算这个数字写入
  • action = "auto":翻译方向,设置为auto会将任意文字翻译为中文,如果想指定可以看这个
    源语言->目标语言。比如:en->zh-CN意思就是从英语翻译为中文简体。
  1. 点击最下边的【Commit changes】提交修改。

测试翻译


– 点击 【Actions】
– 点击【circle_translate】
– 选择 【Run worldiow】
– 你会看到1~2个黄圈圈在转。运行成功会显示绿色的勾,运行失败会显示红色的叉。如果出现红叉,一般都是你修改ini文件时,什么地方写错了,权限、令牌设置错误,比如少打了一个 字母啊,空格漏了啊,代码对齐有问题,少写了什么必须设置的参数,什么参数设置错误了。请仔细检查。

修改运行参数

  1. 点击【Code】,点击进入【 README.md 】文件

  2. 点击笔形图标,编辑代码

  3. 将5/6/8/10这4行中,一切你看到的tjsky改成你自己github用户名(就上边所说的U_NAME)

  4. 注意要保持## 已转换翻译源这行字在第12行,[source001]在第14行,代码更新订阅网页时是完全按行号更新的,如果行号不对可能会导致奇怪的问题。

  5. 点击最下边的【Commit changes】提交修改。

使用 RSS 翻译订阅源全文

如果前边没出现错误(主要是actions上没出现红叉),那么你可以在你自己项目的介绍页,看到这样的内容

点击那个【查看 XXXXXXX】链接,就可以跳转到订阅列表页,其他就可以一帮的RSS订阅一样了。

注意

  • 这个项目纯属娱乐,因为很多网站的RSS订阅格式并不是很规范(当然这个也不赖网站,因为RSS本身就是一个非常混乱的标准)不排除会出现,翻译后的 RSS 翻译订阅源,阅读器报错无法使用的情况。
  • 尽量不要翻译那种全文显示的订阅源(比如RSSHUB生成的那种)字数太长翻译很容易出错,如果因为过长出错,请对应减少max = " "参数的数字。
  • 默认设置是每2小时所有拉取一次订阅源并翻译,如果需要改的更短请修改.github/workflows/circle_translate.yml文件第7行,比如
内容 时间
– cron: ‘0 */2 * * *’ 每2小时运行一次
– cron: ‘0 * * * *’ 每1小时运行一次
– cron: ‘*/30 * * * *’ 每30分钟运行一次

因为github actions的设计,运行时间会根据github本身负载调整,实际更新间隔会略有加长,比如你设定1小时运行一次,实际可能是1小时7分钟间隔,1小时3分钟间隔。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据