1. 起因
起初订阅的RSS源都是英文站点,英文站点看文章标题还是有点墨水的。所以并没有使用到翻译。
但是随着订阅源增多,慢慢地有俄罗斯、西班牙等语言。
这个就很头疼了,看都看不懂,接着就有了想将RSS源进行翻译。
2. 思路
项目基于RSSHub进行拓展:
所需的npm包:
- 安装npm包
#安装解析RSS包
npm install --save rss-parser
#安装谷歌翻译API
npm install translation-google
- 实现
因为一个RSS源有需要item,所以我是获取了所有item中的title并且存进数组。进行全部翻译。
翻译完成之后才拆分出来,防止google翻译API请求太频繁!!!
const Parser = require('rss-parser');
const translate = require('translation-google');
//在国内需要加这个前缀
translate.suffix = 'cn';
module.exports = async (ctx) => {
const parser = new Parser();
//rss订阅地址
const baseUrl = 'https://example.com/rss';
const feed = await parser.parseURL(baseUrl);
//临时的item
const tempItem = [];
feed.items.forEach((item) => {
tempItem.push(item.title);
});
await translate(tempItem.join("\n")
, { to:'zh-cn'}).then((res) => {
const itemTitles = res.text.split("\n");
feed.items.forEach((item, index) => {
feed.items[index].title = itemTitles[index];
});
}).catch((err) => {
console.log(err);
});
ctx.state.data = {
title: `title ~ 资讯`,
link: `www.example.com/`,
description: 'title ~ 资讯',
item: feed.items,
};
};
上面的是自动检测语言并且翻译成中文,如果需要翻译成其他语言。可以自行查看文档