将RSS源翻译成指定语言后返回,将RSS源进行翻译成适合自己的语言!

1. 起因

起初订阅的RSS源都是英文站点,英文站点看文章标题还是有点墨水的。所以并没有使用到翻译。
但是随着订阅源增多,慢慢地有俄罗斯、西班牙等语言。
这个就很头疼了,看都看不懂,接着就有了想将RSS源进行翻译。

2. 思路

项目基于RSSHub进行拓展:
所需的npm包:

  1. 安装npm包
#安装解析RSS包
npm install --save rss-parser
#安装谷歌翻译API
npm install translation-google

如果服务器上没安装nodejs,先执行下面命令

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install nodejs

 

  1. 实现

因为一个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,
    };
};

 

上面的是自动检测语言并且翻译成中文,如果需要翻译成其他语言。可以自行查看文档