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,