微信读书辅助工具,数据来自于微信读书网页版
本软件只能下载用户可访问的书籍,不支持下载需付费才能查看的书籍,请勿用于非法用途!本软件作者不对滥用行为承担任何赔偿责任。
- 不要同时下载多本书,不但容易下载失败,还可能导致被微信读书封号处理!!!
- 尽量不要下载超过 200 章的书,很容易被检测到然后封号
- 本工具可靠性已经不能保证,很容易被检测到,尽量不要再用了
- 下载书架上的书到本地,仅支持下载 html 和 epub 格式
- 自动更新阅读时长,可用于刷“读书排行榜”或者“阅读挑战赛”
- 每周日晚 23:30 自动领取“时长兑福利”中的免费体验卡(暂未对外开放)
- 支持下载用户自己上传的 pdf 格式的书
需要提前安装 deno,参考官方的安装指南
deno task dev
或者
npm run dev
或者
yarn dev
如果想要自己部署,可参考以下步骤进行部署,目前仅支持部署到 Deno Deploy。 如果不想自己部署,可以使用 https://weread.deno.dev 公共服务,但会有限制,比如下载次数限制为每月100次,不支持自动领取体验卡等。
变量名 | 功能 | 是否必填 |
---|---|---|
DEPLOY_DOMAIN | 最终部署的域名,格式为: https://xxx.deno.dev ,与发送提醒邮件有关 |
需要自动阅读暂停提醒时必填 |
RESEND_API_KEY | 用于发送邮件,格式为: re_xxx |
需要自动阅读暂停提醒时必填 |
RESEND_DOMAIN | Resend 配置的域名,不含https:// 前缀 |
需要自动阅读暂停提醒时必填 |
DATABASE_URL | 记录日志,格式为: postgresql://xxx |
选填 |
CRON_KEY | cron任务的key (自定义的随机字符串,在下面的触发器任务中使用) | 使用cron任务时必填 |
获取 RESEND_API_KEY 和 RESEND_DOMAIN
注册 https://resend.com/ 账号,然后添加一个 API key,如下图:
获取 DATABASE_URL
注册 https://supabase.com/ 账号,创建一个新的项目,如下图:
保存这个数据库密码,后面连接字符串需要使用
等待项目创建成功后,进入Project Settings里面的Database:
找到 连接字符串 面板,切换到URI
,这个就是DATABASE_URL
。注意需要用上面保存的数据库密码替换里面的[YOUR-PASSWORD]
部分。
完整的环境变量配置如下:
自动阅读和兑换体验卡都需要定时任务来触发执行,目前deno deploy自己的消息队列不太好用,所以采用 cloudflare 的 worker 或者 青龙面板 来作为定时任务的触发器。
在 CloudFlare 控制台添加一个 worker,代码如下:
export default {
async scheduled(event, env, ctx) {
// 注意:此处的域名替换成你自己部署的域名,CRON_KEY 替换成上面环境变量配置的 CRON_KEY
const resp = await fetch('https://[your.domain.com]/cron/read/v2?key=[CRON_KEY]')
console.log(await resp.text())
},
};
设置 cron 触发周期为 */30 19-21 * * *
(北京时间每天凌晨3点到凌晨6点,中间每隔30分钟更新一次),如下图所示:
worker代码如下:
export default {
async scheduled(event, env, ctx) {
// 注意:此处的域名替换成你自己部署的域名,CRON_KEY 替换成上面环境变量配置的 CRON_KEY
const resp = await fetch('https://[your.domain.com]/cron/exchange-awards?key=[CRON_KEY]')
console.log(await resp.text())
},
};
触发周期设置为 30 15 * * sun
(北京时间每周日晚11点30分),如下图所示:
4.1「订阅管理」下载脚本,配置如下:
类型:公开仓库
链接:https://gh.api.99988866.xyz/https://github.com/champkeh/wereadx.git # 此处前半部分用于代理,如果网络状况良好可以不加
唯一值:注意这里自动生成的名称,用于后续的脚本执行
定时类型:crontab
定时规则:0 1 * * * # 每天凌晨1点拉取仓库
白名单:qinglong
文件后缀:ts
4.2「脚本管理」查看文件夹 champkeh_wereadx
下是否含有以下文件:
此处的 champkeh_wereadx
就是第一步的「唯一值」
read.ts
exchange.ts
sendNotify.js
如果没有请查看第一步的日志。需注意,本文档仅涵盖脚本使用方法,不包含青龙面板的具体操作教学,请自行解决。
4.3「环境变量」设置两个变量,与上文 cloudflare 中配置的 API_URL 一致
// 注意:此处的域名替换成你自己部署的域名,CRON_KEY 替换成上面环境变量配置的 CRON_KEY
AUTO_READ_URL: https://[your.domain.com]/cron/read/v2?key=[CRON_KEY]
CREDIT_URL: https://clean-parrot-53.deno.dev/cron/exchange-awards?key=cron
4.4「定时任务」添加 cron 任务
此处的 champkeh_wereadx
就是第一步的「唯一值」
- 自动阅读
命令/脚本:task champkeh_wereadx/read.ts
定时规则:*/30 3-6 * * *
- 兑换体验卡
命令/脚本:task champkeh_wereadx/exchange.ts
定时规则:30 23 * * sun
4.5 通知
通知功能由青龙面板支持,只需要在「配置文件」中配置相应的变量即可,以下以飞书为例。
飞书通知依赖群主机器人,请参考 官方文档 创建 自定义机器人。
将形如 https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx
的 webhook 地址的最后部分复制到青龙面板的「配置文件」对应的飞书配置中:
export FSKEY='xxxxxxxxxxxxxxxxx'
如果发现 fork 的版本比源版本落后,需要更新到最新版本时,只需要在 github 更新仓库代码即可,不需要删除 deploy 上面的项目重新 fork。
上面这个图表示当前 fork 的代码是最新版本,不需要更新。
上面这个图表示当前 fork 的代码落后源版本1个版本,可以点击右边的Sync fork更新代码,如下图所示:
更新完之后,deploy 上面会自动重新部署最新版本。
本项目不支持下载 需要付费才能查看 的内容,该内容通常表现为每章只有开头的一段内容,后面跟着省略号,如下图所示:
扫码登录时会提示下面的二次确认,但实际上并不需要输入这个验证码也可以登录成功。
这个应该是属于微信读书的bug,后续如果微信读书调整的话,我再跟进处理这个问题。
- 解决 issue 中的 bug 及提出的优化点;
- 优化网站样式;
- 优化 epub 格式;
导出书籍中的的笔记/划线;