diff --git a/README.md b/README.md index b0e77be..6549c6d 100644 --- a/README.md +++ b/README.md @@ -287,6 +287,29 @@ AI驱动的开源代码知识库与文档协作平台,支持多模型、多数 + + + + + + +
+ + +WeWe RSS +
WeWe RSS +
+ +更优雅的微信公众号订阅方式,支持RSS输出和全文内容 + +2.6.1 • [官网链接](https://github.com/cooderl/wewe-rss) + +
+ + + +
+ #### 🔒 安全与网络工具 @@ -416,7 +439,7 @@ AI驱动的开源代码知识库与文档协作平台,支持多模型、多数
-
+ New-API diff --git a/apps/wewe-rss/2.6.1-sqlite/.env.sample b/apps/wewe-rss/2.6.1-sqlite/.env.sample new file mode 100644 index 0000000..54b5a84 --- /dev/null +++ b/apps/wewe-rss/2.6.1-sqlite/.env.sample @@ -0,0 +1,9 @@ +AUTH_CODE="password" +CONTAINER_NAME="wewe-rss" +CRON_EXPRESSION="35 5,17 * * *" +DATABASE_TYPE="sqlite" +DATA_PATH="./data" +FEED_MODE="fulltext" +MAX_REQUEST_PER_MINUTE=60 +PANEL_APP_PORT_HTTP=40332 +SERVER_ORIGIN_URL="http://1.2.3.4:40332" diff --git a/apps/wewe-rss/2.6.1-sqlite/data.yml b/apps/wewe-rss/2.6.1-sqlite/data.yml new file mode 100644 index 0000000..7b58cc3 --- /dev/null +++ b/apps/wewe-rss/2.6.1-sqlite/data.yml @@ -0,0 +1,62 @@ +additionalProperties: + formFields: + - default: "40332" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "./data" + edit: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text + - default: "sqlite" + disabled: true + envKey: DATABASE_TYPE + labelEn: Database Type + labelZh: 数据库类型 + required: true + type: text + - default: "password" + edit: true + envKey: AUTH_CODE + labelEn: Auth Code + labelZh: 授权码 + random: true + required: true + rule: paramComplexity + type: password + - default: "http://1.2.3.4:40332" + edit: true + envKey: SERVER_ORIGIN_URL + labelEn: External URL + labelZh: 外部访问地址 + required: true + rule: paramExtUrl + type: text + - default: "fulltext" + edit: true + envKey: FEED_MODE + labelEn: Feed Mode + labelZh: 提取模式 + required: false + type: text + - default: "35 5,17 * * *" + edit: true + envKey: CRON_EXPRESSION + labelEn: Cron Expression + labelZh: 定时更新表达式 + required: false + type: text + - default: "60" + edit: true + envKey: MAX_REQUEST_PER_MINUTE + labelEn: Max Requests Per Minute + labelZh: 每分钟最大请求次数 + required: false + type: number diff --git a/apps/wewe-rss/2.6.1-sqlite/docker-compose.yml b/apps/wewe-rss/2.6.1-sqlite/docker-compose.yml new file mode 100644 index 0000000..c0490f9 --- /dev/null +++ b/apps/wewe-rss/2.6.1-sqlite/docker-compose.yml @@ -0,0 +1,24 @@ +services: + wewe-rss: + image: "cooderl/wewe-rss-sqlite:v2.6.1" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:4000" + environment: + - DATABASE_TYPE=${DATABASE_TYPE} + - AUTH_CODE=${AUTH_CODE} + - FEED_MODE=${FEED_MODE} + - CRON_EXPRESSION=${CRON_EXPRESSION} + - MAX_REQUEST_PER_MINUTE=${MAX_REQUEST_PER_MINUTE} + - SERVER_ORIGIN_URL=${SERVER_ORIGIN_URL} + volumes: + - ${DATA_PATH}:/app/data + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/wewe-rss/2.6.1/.env.sample b/apps/wewe-rss/2.6.1/.env.sample new file mode 100644 index 0000000..341e006 --- /dev/null +++ b/apps/wewe-rss/2.6.1/.env.sample @@ -0,0 +1,14 @@ +AUTH_CODE="password" +CONTAINER_NAME="wewe-rss" +CRON_EXPRESSION="35 5,17 * * *" +FEED_MODE="fulltext" +MAX_REQUEST_PER_MINUTE=60 +PANEL_APP_PORT_HTTP=40332 +PANEL_DB_HOST="mysql" +PANEL_DB_HOST_NAME="mysql" +PANEL_DB_NAME="wewe-rss" +PANEL_DB_PORT=3306 +PANEL_DB_TYPE="mysql" +PANEL_DB_USER="wewe-rss" +PANEL_DB_USER_PASSWORD="wewe-rss" +SERVER_ORIGIN_URL="http://1.2.3.4:40332" diff --git a/apps/wewe-rss/2.6.1/data.yml b/apps/wewe-rss/2.6.1/data.yml new file mode 100644 index 0000000..02e5ff9 --- /dev/null +++ b/apps/wewe-rss/2.6.1/data.yml @@ -0,0 +1,64 @@ +additionalProperties: + formFields: + - default: "wewe-rss" + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true + required: true + rule: paramCommon + type: text + - default: "wewe-rss" + envKey: PANEL_DB_ROOT_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: "4000" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "password" + edit: true + envKey: AUTH_CODE + labelEn: Auth Code + labelZh: 授权码 + random: true + required: true + rule: paramComplexity + type: password + - default: "http://1.2.3.4:4000" + edit: true + envKey: SERVER_ORIGIN_URL + labelEn: External URL + labelZh: 外部访问地址 + required: true + rule: paramExtUrl + type: text + - default: "fulltext" + edit: true + envKey: FEED_MODE + labelEn: Feed Mode + labelZh: 提取模式 + required: false + type: text + - default: "35 5,17 * * *" + edit: true + envKey: CRON_EXPRESSION + labelEn: Cron Expression + labelZh: 定时更新表达式 + required: false + type: text + - default: "60" + edit: true + envKey: MAX_REQUEST_PER_MINUTE + labelEn: Max Requests Per Minute + labelZh: 每分钟最大请求次数 + required: false + type: number diff --git a/apps/wewe-rss/2.6.1/docker-compose.yml b/apps/wewe-rss/2.6.1/docker-compose.yml new file mode 100644 index 0000000..c189e27 --- /dev/null +++ b/apps/wewe-rss/2.6.1/docker-compose.yml @@ -0,0 +1,45 @@ +services: + wewe-rss: + image: "cooderl/wewe-rss:v2.6.1" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:4000" + environment: + - DATABASE_URL=mysql://root:${PANEL_DB_ROOT_PASSWORD}@${CONTAINER_NAME}-mysql:3306/${PANEL_DB_NAME}?schema=public&connect_timeout=30&pool_timeout=30&socket_timeout=30 + - AUTH_CODE=${AUTH_CODE} + - FEED_MODE=${FEED_MODE} + - CRON_EXPRESSION=${CRON_EXPRESSION} + - MAX_REQUEST_PER_MINUTE=${MAX_REQUEST_PER_MINUTE} + - SERVER_ORIGIN_URL=${SERVER_ORIGIN_URL} + depends_on: + - mysql + labels: + createdBy: "Apps" + + mysql: + image: mysql:8.3.0 + container_name: ${CONTAINER_NAME}-mysql + command: --mysql-native-password=ON + environment: + - MYSQL_ROOT_PASSWORD=${PANEL_DB_ROOT_PASSWORD} + - TZ=Asia/Shanghai + - MYSQL_DATABASE=${PANEL_DB_NAME} + volumes: + - mysql_data:/var/lib/mysql + networks: + - 1panel-network + healthcheck: + test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost'] + timeout: 45s + interval: 10s + retries: 10 + +networks: + 1panel-network: + external: true + +volumes: + mysql_data: diff --git a/apps/wewe-rss/README.md b/apps/wewe-rss/README.md new file mode 100644 index 0000000..b7037bf --- /dev/null +++ b/apps/wewe-rss/README.md @@ -0,0 +1,73 @@ +# [WeWe RSS](https://github.com/cooderl/wewe-rss) + +更优雅的微信公众号订阅方式。 + +![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/wewe-rss.png) + +![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white) + +## ✨ 功能 + +- v2.x版本使用全新接口,更加稳定 +- 支持微信公众号订阅(基于微信读书) +- 获取公众号历史发布文章 +- 后台自动定时更新内容 +- 微信公众号RSS生成(支持`.atom`、`.rss`、`.json`格式) +- 支持全文内容输出,让阅读无障碍 +- 所有订阅源导出OPML + +### 高级功能 + +- **标题过滤**:支持通过`/feeds/all.(json|rss|atom)`接口和`/feeds/:feed`对标题进行过滤 + ``` + {{ORIGIN_URL}}/feeds/all.atom?title_include=张三 + {{ORIGIN_URL}}/feeds/MP_WXS_123.json?limit=30&title_include=张三|李四|王五&title_exclude=张三丰|赵六 + ``` + +- **手动更新**:支持通过`/feeds/:feed`接口触发单个feedid更新 + ``` + {{ORIGIN_URL}}/feeds/MP_WXS_123.rss?update=true + ``` + +## ⚙️ 环境变量 + +| 变量名 | 说明 | 默认值 | +| ------------------------ | ----------------------------------------------------------------------- | --------------------------- | +| `DATABASE_URL` | **必填** 数据库地址,例如 `mysql://root:123456@127.0.0.1:3306/wewe-rss` | - | +| `DATABASE_TYPE` | 数据库类型,使用 SQLite 时需填写 `sqlite` | - | +| `AUTH_CODE` | 服务端接口请求授权码,空字符或不设置将不启用 (`/feeds`路径不需要) | - | +| `SERVER_ORIGIN_URL` | 服务端访问地址,用于生成RSS完整路径 | - | +| `MAX_REQUEST_PER_MINUTE` | 每分钟最大请求次数 | 60 | +| `FEED_MODE` | 输出模式,可选值 `fulltext` (会使接口响应变慢,占用更多内存) | - | +| `CRON_EXPRESSION` | 定时更新订阅源Cron表达式 | `35 5,17 * * *` | +| `UPDATE_DELAY_TIME` | 连续更新延迟时间,减少被关小黑屋 | `60s` | +| `ENABLE_CLEAN_HTML` | 是否开启正文html清理 | `false` | +| `PLATFORM_URL` | 基础服务URL | `https://weread.111965.xyz` | + +> **注意**: 国内DNS解析问题可使用 `https://weread.965111.xyz` 加速访问 + +## 🔔 钉钉通知 + +进入 wewe-rss-dingtalk 目录按照 README.md 指引部署 + +## 📱 使用方式 + +1. 进入账号管理,点击添加账号,微信扫码登录微信读书账号。 + + **注意不要勾选24小时后自动退出** + + + + +2. 进入公众号源,点击添加,通过提交微信公众号分享链接,订阅微信公众号。 + **添加频率过高容易被封控,等24小时解封** + + + +## 🔑 账号状态说明 + +| 状态 | 说明 | +| ---------- | ------------------------------------------------------------------- | +| 今日小黑屋 | 账号被封控,等一天恢复。账号正常时可通过重启服务/容器清除小黑屋记录 | +| 禁用 | 不使用该账号 | +| 失效 | 账号登录状态失效,需要重新登录 | \ No newline at end of file diff --git a/apps/wewe-rss/data.yml b/apps/wewe-rss/data.yml new file mode 100644 index 0000000..db427b5 --- /dev/null +++ b/apps/wewe-rss/data.yml @@ -0,0 +1,26 @@ +name: WeWe RSS +tags: + - 实用工具 +title: 更优雅的微信公众号订阅方式 +description: WeWe RSS 是一个优雅的微信公众号订阅工具,支持RSS输出和文章存档 +additionalProperties: + key: wewe-rss + name: WeWe RSS + tags: + - Tool + shortDescZh: 更优雅的微信公众号订阅方式 + shortDescEn: A more elegant way to subscribe to WeChat Official Accounts + description: + en: WeWe RSS is an elegant tool for subscribing to WeChat Official Accounts with RSS output and article archiving + zh-Hant: WeWe RSS 是一個優雅的微信公眾號訂閱工具,支持RSS輸出和文章存檔 + zh: WeWe RSS 是一个优雅的微信公众号订阅工具,支持RSS输出和文章存档 + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/cooderl/wewe-rss + github: https://github.com/cooderl/wewe-rss + document: https://github.com/cooderl/wewe-rss + architectures: + - amd64 + - arm64 diff --git a/apps/wewe-rss/latest/.env.sample b/apps/wewe-rss/latest/.env.sample new file mode 100644 index 0000000..341e006 --- /dev/null +++ b/apps/wewe-rss/latest/.env.sample @@ -0,0 +1,14 @@ +AUTH_CODE="password" +CONTAINER_NAME="wewe-rss" +CRON_EXPRESSION="35 5,17 * * *" +FEED_MODE="fulltext" +MAX_REQUEST_PER_MINUTE=60 +PANEL_APP_PORT_HTTP=40332 +PANEL_DB_HOST="mysql" +PANEL_DB_HOST_NAME="mysql" +PANEL_DB_NAME="wewe-rss" +PANEL_DB_PORT=3306 +PANEL_DB_TYPE="mysql" +PANEL_DB_USER="wewe-rss" +PANEL_DB_USER_PASSWORD="wewe-rss" +SERVER_ORIGIN_URL="http://1.2.3.4:40332" diff --git a/apps/wewe-rss/latest/data.yml b/apps/wewe-rss/latest/data.yml new file mode 100644 index 0000000..02e5ff9 --- /dev/null +++ b/apps/wewe-rss/latest/data.yml @@ -0,0 +1,64 @@ +additionalProperties: + formFields: + - default: "wewe-rss" + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true + required: true + rule: paramCommon + type: text + - default: "wewe-rss" + envKey: PANEL_DB_ROOT_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: "4000" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "password" + edit: true + envKey: AUTH_CODE + labelEn: Auth Code + labelZh: 授权码 + random: true + required: true + rule: paramComplexity + type: password + - default: "http://1.2.3.4:4000" + edit: true + envKey: SERVER_ORIGIN_URL + labelEn: External URL + labelZh: 外部访问地址 + required: true + rule: paramExtUrl + type: text + - default: "fulltext" + edit: true + envKey: FEED_MODE + labelEn: Feed Mode + labelZh: 提取模式 + required: false + type: text + - default: "35 5,17 * * *" + edit: true + envKey: CRON_EXPRESSION + labelEn: Cron Expression + labelZh: 定时更新表达式 + required: false + type: text + - default: "60" + edit: true + envKey: MAX_REQUEST_PER_MINUTE + labelEn: Max Requests Per Minute + labelZh: 每分钟最大请求次数 + required: false + type: number diff --git a/apps/wewe-rss/latest/docker-compose.yml b/apps/wewe-rss/latest/docker-compose.yml new file mode 100644 index 0000000..0e3ae76 --- /dev/null +++ b/apps/wewe-rss/latest/docker-compose.yml @@ -0,0 +1,45 @@ +services: + wewe-rss: + image: "cooderl/wewe-rss:latest" + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:4000" + environment: + - DATABASE_URL=mysql://root:${PANEL_DB_ROOT_PASSWORD}@${CONTAINER_NAME}-mysql:3306/${PANEL_DB_NAME}?schema=public&connect_timeout=30&pool_timeout=30&socket_timeout=30 + - AUTH_CODE=${AUTH_CODE} + - FEED_MODE=${FEED_MODE} + - CRON_EXPRESSION=${CRON_EXPRESSION} + - MAX_REQUEST_PER_MINUTE=${MAX_REQUEST_PER_MINUTE} + - SERVER_ORIGIN_URL=${SERVER_ORIGIN_URL} + depends_on: + - mysql + labels: + createdBy: "Apps" + + mysql: + image: mysql:8.3.0 + container_name: ${CONTAINER_NAME}-mysql + command: --mysql-native-password=ON + environment: + - MYSQL_ROOT_PASSWORD=${PANEL_DB_ROOT_PASSWORD} + - TZ=Asia/Shanghai + - MYSQL_DATABASE=${PANEL_DB_NAME} + volumes: + - mysql_data:/var/lib/mysql + networks: + - 1panel-network + healthcheck: + test: ['CMD', 'mysqladmin', 'ping', '-h', 'localhost'] + timeout: 45s + interval: 10s + retries: 10 + +networks: + 1panel-network: + external: true + +volumes: + mysql_data: diff --git a/apps/wewe-rss/logo.png b/apps/wewe-rss/logo.png new file mode 100644 index 0000000..812ceb9 Binary files /dev/null and b/apps/wewe-rss/logo.png differ