Skip to content

Commit 3d58da8

Browse files
committed
chore: format
1 parent 4be4bdf commit 3d58da8

15 files changed

+84
-65
lines changed

.github/workflows/docker-release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
# - "apps/**"
77
# - "Dockerfile"
88
tags:
9-
- "v*.*.*"
9+
- 'v*.*.*'
1010

1111
concurrency:
1212
group: docker-release

.markdownlint.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ line-length: false
66
# MD033/no-inline-html - Inline HTML
77
MD033:
88
# Allowed elements
9-
allowed_elements: ["style"]
9+
allowed_elements: ['style']

README.md

+22-21
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,26 @@
1111

1212
## 功能
1313

14-
- [x] v2.x版本使用全新接口,更加稳定
15-
- [x] 支持微信公众号订阅(基于微信读书)
16-
- [x] 后台自动定时更新内容
17-
- [x] 微信公众号RSS生成(支持`.atom`\.`rss`\.`json`格式)
18-
- [x] 支持全文内容输出,让阅读无障碍
19-
- [x] 所有订阅源导出OPML
20-
- [x] 支持通过/feeds/all.(json|rss|atom)接口和/feeds/:feed对标题进行过滤:使用title_include和title_exclude参数,支持使用`|`实现多个关键词的 或 逻辑
21-
> {{ORIGIN_URL}}/feeds/all.atom?title_include=张三
22-
>
23-
> {{ORIGIN_URL}}/feeds/MP_WXS_123.json?limit=30&title_include=张三|李四|王五&title_exclude=张三丰|赵六
24-
- [x] 支持通过/feeds/:feed接口触发单个feedid更新:使用update=true参数(实时返回结果不包含更新后的articles,要获取更新后的articles需去掉update参数再请求一次)
25-
> {{ORIGIN_URL}}/feeds/MP_WXS_123.rss?update=true
14+
- [x] v2.x版本使用全新接口,更加稳定
15+
- [x] 支持微信公众号订阅(基于微信读书)
16+
- [x] 后台自动定时更新内容
17+
- [x] 微信公众号RSS生成(支持`.atom`\.`rss`\.`json`格式)
18+
- [x] 支持全文内容输出,让阅读无障碍
19+
- [x] 所有订阅源导出OPML
20+
- [x] 支持通过/feeds/all.(json|rss|atom)接口和/feeds/:feed对标题进行过滤:使用title_include和title_exclude参数,支持使用`|`实现多个关键词的 或 逻辑
21+
> {{ORIGIN_URL}}/feeds/all.atom?title_include=张三
22+
>
23+
> {{ORIGIN_URL}}/feeds/MP_WXS_123.json?limit=30&title_include=张三|李四|王五&title_exclude=张三丰|赵六
24+
- [x] 支持通过/feeds/:feed接口触发单个feedid更新:使用update=true参数(实时返回结果不包含更新后的articles,要获取更新后的articles需去掉update参数再请求一次)
25+
> {{ORIGIN_URL}}/feeds/MP_WXS_123.rss?update=true
2626
2727
## 部署
2828

2929
### 一键部署(待完善添加模板)
3030

3131
你可以通过以下平台一键部署,只需填写本项目的URL即可。
3232

33-
[Zeabur](https://zeabur.com/)
33+
[Zeabur](https://zeabur.com/)
3434

3535
[![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/DI9BBD)
3636

@@ -97,6 +97,7 @@ docker run -d \
9797
如果你想本地部署,请使用 `pnpm install && pnpm run -r build && pnpm run start:server` 命令(可以配合 pm2 来守护进程,防止被杀死)。
9898

9999
详细的部署步骤如下,以sqlite为例:
100+
100101
```shell
101102
# 需要提前声明环境变量,因为prisma会根据环境变量生成对应的数据库连接
102103
export DATABASE_URL="file:../data/wewe-rss.db"
@@ -105,10 +106,10 @@ export DATABASE_TYPE="sqlite"
105106
rm -rf apps/server/prisma
106107
mv apps/server/prisma-sqlite apps/server/prisma
107108
# 生成prisma client
108-
npx prisma generate --schema apps/server/prisma/schema.prisma
109+
npx prisma generate --schema apps/server/prisma/schema.prisma
109110
# 生成数据库表
110111
npx prisma migrate deploy --schema apps/server/prisma/schema.prisma
111-
# 构建并运行
112+
# 构建并运行
112113
pnpm run -r build
113114
pnpm run start:server
114115

@@ -137,20 +138,21 @@ pnpm run start:server
137138
## 使用方式
138139

139140
1. 进入账号管理,点击添加账号,微信扫码登录微信读书账号。
140-
<img width="400" src="./assets/preview2.png"/>
141+
<img width="400" src="./assets/preview2.png"/>
141142

142143
1. 进入公众号源,点击添加,通过提交微信公众号分享链接,订阅微信公众号。
143-
**(添加频率过高容易被封控,等24小时解封)**
144-
<img width="400" src="./assets/preview3.png"/>
145-
144+
**(添加频率过高容易被封控,等24小时解封)**
145+
<img width="400" src="./assets/preview3.png"/>
146146

147147
## 账号状态说明
148148

149-
- 今日小黑屋
149+
- 今日小黑屋
150+
150151
> 账号被封控,等一天恢复
151152
> 如果账号正常,可以通过重启服务/容器清除小黑屋记录
152153
153154
- 禁用
155+
154156
> 不使用该账号
155157
156158
- 失效
@@ -169,7 +171,6 @@ pnpm run start:server
169171
<img src="https://contrib.rocks/image?repo=cooderl/wewe-rss" />
170172
</a>
171173

172-
173174
## 风险声明
174175

175176
为了确保本项目的持久运行,某些接口请求将通过`weread.111965.xyz`进行转发。请放心,该转发服务不会保存任何数据。

apps/server/src/app.controller.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@ export class AppController {
2222
}
2323

2424
@Get('favicon.ico')
25-
getFavicon(
26-
@Response() res: Res,
27-
) {
28-
const imgContent = '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'
25+
getFavicon(@Response() res: Res) {
26+
const imgContent =
27+
'iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAAAXNSR0IArs4c6QAAACRQTFRFR3BMsN2eke1itNumku5htNulm+l0ke1hc91PVc09OL0rGq0Z17o6fwAAAAV0Uk5TAGyAv79qLUngAAAFdUlEQVR42u3cQWPbIAyGYQlDkOT//3/X9bBLF3/gkgQJ3uuSA4+Ftxp3tNvtdrvdbrfb7Xa76zjNGjG9Ns65zl5O6WWrr15K0ZePS0xjSxUUewq4Oixz8MuPSw7W70EgVb+lMetfWiBV36Xg68cx/arqvhx8AHBpwPqX3QQ1RHnAACw6AjVI+f4ArD0CNUz57gCsPQI1UHl1gBp8B+B4A3RXQ/Uo3GnANVallD6DFA3gO14ZABBEB3j0CuRg6/8HUI6YAHgCgEB8gE6BGhigHKsDFF4doPDqAIVXBzhWByi8OsCxOkDh1QGO1QEKb4DFAY7VAcryAPxKADE7v7KvVFVkRoDjhQB6/shUZRkAPZ9kKvMAlJcB6HmVqkwCwK8CsBOlsQHOhkyjA+BUgwLI2ZxGnwCcRr8J4jQ6AE6jAdSzNw0GIP0CGgqg6tmdugLAieh3ZtZM4BUAJ6pqDQKuAXANCOoeACMAgeAA2MCiA2ADjQCAUyAQGAATaHAATGDBATCBSXAATCDBAbCABgfABLIMQBUDAh4B/p0NqqrcHAJxDACOg9oELNgDEdXebWBuAcCTr2Y0cwAA1gIM0LfUJYCe12nH9yT66TAWCHo0pq0CFgygX0DjHo83Ckjcs0FtEwgG0C9grgD635DAfhL5cFQbBCz04ag2+OlsADi1DgHsNy0APiE2GyFgDgCGngj+UBPPANhA4W3AXANgA4WbQHwD4OMwtAks+vsBijaB+AbAQyBoBHwDYAKDI+AbAP+0ZADKnAPgIVDwXEGcA2ABuf6Qhn9Fxq5HwLwD4B+Z9VpJvAPgW6GAEXAOgGfArkfAPQAWkMtPiHOA/nMQA3vAA4B8BwRaR8AbgJhdnwobGoEfPJ4AxG49Awd7wA2AWNMTYDAC4hZA7jz9wyPgAAC8/4ih7ApAnADozad/eA/MB4DnH1xD8AmXAHoBYEAL7AEXAHpeJfA+CG4C3n93GI+AXPyp+n8/AI+AXXBagPcErQ/A3AHY+ds94BzgRAn6hlwMVAgANDN6MR8SAQDtAXMNIP0AteOvAQ0xAWgPRAeAUyPPdSzAm6J1AyAAdQ0gN96PDQVQBwOoLwC8Bxq+Ys8BTvcvS2tsADwCNTQAFpD6v/QCQBwCSMcGwM99/PxLEAtovQFgXgCwgNRnXX1OZ3wegFP0f6O0X2Vz8FAUvxhs0jwxTzDnPRrDBibSPjDy5FdwzHy+IiONWA2T4gqgP1UzlVpDA+A2wAbYABtgA2yADbABNsAG2ACfA8jB1t8PsCdg8QlINVZlA3QC8OoAFPweiAHy6gAcewdgAFoeIMfeARiA1wGIPwIFAEQfgQcACD8C5SYAxx4ADEA59gAUggUbgH4ADr3+QrgUeAMUphUEHgAAlsKuv1BbKer6meILPMoIAOKQ6y/UUQq4fqaeUoq2/kKdpVjLL0zdpRx9/biUfB2EYYD+0lc5+7v4eP39cSll2DUbVGmKaUzHKIDy3phomMCYmX1zNCwuDtd/MI2L/V3+g4bmbv1MMwE8ivf1k7PxZxpd8OXjfO3+mQBcXf3xAA9Xqx8PkI+Wfrnq7/grIpoLIDM1xceYLT8bQKLmOCBAZuqIwwEk6oxjATB1x3MD5NpRplsdUQCYbsYhADLT7TgAQKJfxbMCpDGXH8eTAvCoy4/jKQFo2OXHsVOARKPiY0KAXEFMA+P5ABiMP42NpwMgMP7D49kAMrj7DY8nA2B0+cd3TAVAGVz+Dw0BvS0Gl/9DAvS+GFz+jxAc9MYSuPyfEGD6nECi98QA4DMEOTPRBAL09tLf3uzOBxiA+DEYgFUFmGhtAqK1BZgWi8H61yI4mJaM+SjlOJhpt9vtdrvdbrfbNfcHKaL2IynIYcEAAAAASUVORK5CYII=';
2928
const imgBuffer = Buffer.from(imgContent, 'base64');
3029
res.setHeader('Content-Type', 'image/png');
3130
res.send(imgBuffer);
@@ -43,7 +42,7 @@ export class AppController {
4342
enabledAuthCode: !!code,
4443
iconUrl: weweRssServerOriginUrl
4544
? `${weweRssServerOriginUrl}/favicon.ico`
46-
: 'https://r2-assets.111965.xyz/wewe-rss.png'
45+
: 'https://r2-assets.111965.xyz/wewe-rss.png',
4746
};
4847
}
4948
}

apps/server/src/feeds/feeds.controller.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export class FeedsController {
6060
const [id, type] = feed.split('.');
6161
this.logger.log('getFeed: ', id);
6262

63-
if(update) {
63+
if (update) {
6464
this.feedsService.updateFeed(id);
6565
}
6666

apps/server/src/feeds/feeds.service.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -274,13 +274,15 @@ export class FeedsService {
274274

275275
if (title_include) {
276276
const includes = title_include.split('|');
277-
feed.items = feed.items.filter(
278-
(i: Item) => includes.some((k) => i.title.includes(k)));
277+
feed.items = feed.items.filter((i: Item) =>
278+
includes.some((k) => i.title.includes(k)),
279+
);
279280
}
280281
if (title_exclude) {
281282
const excludes = title_exclude.split('|');
282283
feed.items = feed.items.filter(
283-
(i: Item) => !excludes.some((k) => i.title.includes(k)));
284+
(i: Item) => !excludes.some((k) => i.title.includes(k)),
285+
);
284286
}
285287

286288
switch (type) {

apps/web/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default {
2222
project: ['./tsconfig.json', './tsconfig.node.json'],
2323
tsconfigRootDir: __dirname,
2424
},
25-
}
25+
};
2626
```
2727

2828
- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`

apps/web/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!DOCTYPE html>
1+
<!doctype html>
22
<html lang="en">
33
<head>
44
<meta charset="UTF-8" />

apps/web/postcss.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ export default {
33
tailwindcss: {},
44
autoprefixer: {},
55
},
6-
}
6+
};

apps/web/src/components/Nav.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,10 @@ const Nav = () => {
7474
width={28}
7575
alt="WeWe RSS"
7676
className="mr-2"
77-
src={ serverOriginUrl
78-
? `${serverOriginUrl}/favicon.ico`
79-
: 'https://r2-assets.111965.xyz/wewe-rss.png'
77+
src={
78+
serverOriginUrl
79+
? `${serverOriginUrl}/favicon.ico`
80+
: 'https://r2-assets.111965.xyz/wewe-rss.png'
8081
}
8182
></Image>
8283
</Badge>

apps/web/src/pages/feeds/index.tsx

+4-6
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ const Feeds = () => {
6060
const [currentMpId, setCurrentMpId] = useState(id || '');
6161

6262
const handleConfirm = async () => {
63-
console.log("wxsLink", wxsLink)
63+
console.log('wxsLink', wxsLink);
6464
// TODO show operation in progress
65-
const wxsLinks = wxsLink.split('\n').filter(link=>link.trim()!=='');
66-
for (const link of wxsLinks){
67-
console.log('add wxsLink',link)
65+
const wxsLinks = wxsLink.split('\n').filter((link) => link.trim() !== '');
66+
for (const link of wxsLinks) {
67+
console.log('add wxsLink', link);
6868
const res = await getMpInfo({ wxsLink: link });
6969
if (res[0]) {
7070
const item = res[0];
@@ -90,8 +90,6 @@ const Feeds = () => {
9090
onClose();
9191
};
9292

93-
94-
9593
const isActive = (key: string) => {
9694
return currentMpId === key;
9795
};

package.json

+3
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,8 @@
1818
"start:web": "pnpm --filter web start",
1919
"fmt": "prettier --write .",
2020
"fmt.check": "prettier --check ."
21+
},
22+
"devDependencies": {
23+
"prettier": "^3.2.5"
2124
}
2225
}

pnpm-lock.yaml

+14-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wewe-rss-dingtalk/README.md

+21-19
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1-
2-
### 修改main.py,输入dingtalk的access_token和secret
3-
4-
```
5-
access_token = ''
6-
secret = '' # 创建机器人时钉钉设置页面有提供
7-
```
8-
9-
### 修改根目录下的docker-compose.yaml文件,去掉以下字段的注释
10-
```
11-
# ports:
12-
# - 13306:3306
13-
```
14-
15-
### python3 main.py就可以运行
16-
### 或者部署成docker,运行
17-
```
18-
sudo docker-compose up -d
19-
```
1+
### 修改main.py,输入dingtalk的access_token和secret
2+
3+
```
4+
access_token = ''
5+
secret = '' # 创建机器人时钉钉设置页面有提供
6+
```
7+
8+
### 修改根目录下的docker-compose.yaml文件,去掉以下字段的注释
9+
10+
```
11+
# ports:
12+
# - 13306:3306
13+
```
14+
15+
### python3 main.py就可以运行
16+
17+
### 或者部署成docker,运行
18+
19+
```
20+
sudo docker-compose up -d
21+
```

wewe-rss-dingtalk/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ version: '3.9'
33
services:
44
wewe-rss-dingtalk:
55
build: .
6-
container_name: wewe-rss-dingtalk
6+
container_name: wewe-rss-dingtalk

0 commit comments

Comments
 (0)