diff --git a/docs/en/blog.md b/docs/en/blog.md index 86250227f0..f0e9d942df 100644 --- a/docs/en/blog.md +++ b/docs/en/blog.md @@ -37,3 +37,8 @@ pageClass: routes ### Article + +## WordPress + + + diff --git a/docs/en/install/README.md b/docs/en/install/README.md index bfaf2786eb..976d0fe3fa 100644 --- a/docs/en/install/README.md +++ b/docs/en/install/README.md @@ -522,3 +522,15 @@ See docs of specified route and `lib/config.js` for detail information. - Sci-hub for scientific journal routes: - `SCIHUB_HOST`: The Sci-hub mirror address that is accssible from your location, default to `https://sci-hub.se`. + +- Wordpress: + - `WORDPRESS_CDN`: Proxy http image link with https link. Consider using: + + | url | backbone | + | ---------------------------------------- | ------------ | + | https://imageproxy.pimg.tw/resize?url= | akamai | + | https://images.weserv.nl/?url= | cloudflare | + | https://pic1.xuehuaimg.com/proxy/ | cloudflare | + | https://cors.netnr.workers.dev/ | cloudflare | + | https://netnr-proxy.openode.io/ | digitalocean | + diff --git a/docs/install/README.md b/docs/install/README.md index da5ca775e4..8e40392500 100644 --- a/docs/install/README.md +++ b/docs/install/README.md @@ -654,3 +654,15 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行 - `ZHIHU_COOKIES`: 知乎登录后的 cookie 值. 1. 可以在知乎网页版的一些请求的请求头中找到,如 `GET /moments` 请求头中的 `cookie` 值. + +- Wordpress + + - `WORDPRESS_CDN`: 用于中转 http 图片链接。可供考虑的服务见下表: + + | url | backbone | + | ---------------------------------------- | ------------ | + | | akamai | + | | cloudflare | + | | cloudflare | + | | cloudflare | + | | digitalocean | diff --git a/lib/config.js b/lib/config.js index 9750f97d7c..7512fe9eb3 100644 --- a/lib/config.js +++ b/lib/config.js @@ -188,6 +188,9 @@ const calculateValue = () => { scboy: { token: envs.SCBOY_BBS_TOKEN, }, + wordpress: { + cdnUrl: envs.WORDPRESS_CDN, + }, }; }; calculateValue(); diff --git a/lib/routes/blogs/wordpress.js b/lib/routes/blogs/wordpress.js index f05fe62875..ba61a3fb4c 100644 --- a/lib/routes/blogs/wordpress.js +++ b/lib/routes/blogs/wordpress.js @@ -1,7 +1,10 @@ const parser = require('@/utils/rss-parser'); +const config = require('@/config').value; module.exports = async (ctx) => { const scheme = ctx.params.https || 'https'; + const cdn = config.wordpress.cdnUrl; + const domain = `${scheme}://${ctx.params.domain}`; const feed = await parser.parseURL(`${domain}/feed/`); const items = await Promise.all( @@ -10,9 +13,21 @@ module.exports = async (ctx) => { if (cache) { return Promise.resolve(JSON.parse(cache)); } + const description = + scheme === 'https' || !cdn + ? item['content:encoded'] + : item['content:encoded'].replace(/(?<=)/g, function (match, p) { + if (p[0] === '/') { + return cdn + feed.link + p; + } else if (p.slice(0, 5) === 'http:') { + return cdn + p; + } else { + return p; + } + }); const article = { title: item.title, - description: item['content:encoded'], + description: description, pubDate: item.pubDate, link: item.link, author: item.creator,