Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked from 88825/wereadx

微信读书辅助工具,可用于书籍下载及自动阅读、自动兑换体验卡等

License

Notifications You must be signed in to change notification settings

weslywang/wereadx

Repository files navigation

wereadx

微信读书辅助工具,数据来自于微信读书网页版

声明

本软件只能下载用户可访问的书籍,不支持下载需付费才能查看的书籍,请勿用于非法用途!本软件作者不对滥用行为承担任何赔偿责任。

⚠️警告⚠️

  • 不要同时下载多本书,不但容易下载失败,还可能导致被微信读书封号处理!!!
  • 尽量不要下载超过 200 章的书,很容易被检测到然后封号
  • 本工具可靠性已经不能保证,很容易被检测到,尽量不要再用了

功能列表

  1. 下载书架上的书到本地,仅支持下载 htmlepub 格式
  2. 自动更新阅读时长,可用于刷"读书排行榜"或者"阅读挑战赛"
  3. 每周日晚 23:30 自动领取"时长兑福利"中的免费体验卡(暂未对外开放)
  4. 支持下载用户自己上传的 pdf 格式的书

本地运行

需要提前安装 deno,参考官方的安装指南

deno task dev

或者

npm run dev

或者

yarn dev

部署指南

如果想要自己部署,可参考以下步骤进行部署,目前仅支持部署到 Deno Deploy。 如果不想自己部署,可以使用 https://weread.deno.dev 公共服务,但会有限制,比如下载次数限制为每月100次,不支持自动领取体验卡等。

1. fork 本项目

2. 新建 Deno Deploy 项目,配置如下:

项目配置

3. 部署完成,在 Deno Deploy 的设置页面,添加环境变量

变量名 功能 是否必填
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,如下图:

resend api key resend api key

想要正常发送邮件,还需要配置域名 resend domain resend domain

按照这个配置你的域名,最终效果如下: resend domain result

获取 DATABASE_URL

注册 https://supabase.com/ 账号,创建一个新的项目,如下图:

创建一个数据库项目

保存这个数据库密码,后面连接字符串需要使用

等待项目创建成功后,进入Project Settings里面的Database:

数据库配置入口

找到 连接字符串 面板,切换到URI,这个就是DATABASE_URL。注意需要用上面保存的数据库密码替换里面的[YOUR-PASSWORD]部分。

连接字符串

完整的环境变量配置如下:

环境变量配置

4. 设置定时任务

自动阅读和兑换体验卡都需要定时任务来触发执行,目前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分),如下图所示: 兑换体验卡的触发器

5. 后续更新操作

如果发现 fork 的版本比源版本落后,需要更新到最新版本时,只需要在 github 更新仓库代码即可,不需要删除 deploy 上面的项目重新 fork。

fork版本是最新版本 上面这个图表示当前 fork 的代码是最新版本,不需要更新。

fork版本是落后版本 上面这个图表示当前 fork 的代码落后源版本1个版本,可以点击右边的Sync fork更新代码,如下图所示:

更新fork版本

更新完之后,deploy 上面会自动重新部署最新版本。

特别注意

1. 关于付费内容

本项目不支持下载 需要付费才能查看 的内容,该内容通常表现为每章只有开头的一段内容,后面跟着省略号,如下图所示:

需要付费才能查看的内容

2. 关于双重验证码

扫码登录时会提示下面的二次确认,但实际上并不需要输入这个验证码也可以登录成功。

登录时二次确认

这个应该是属于微信读书的bug,后续如果微信读书调整的话,我再跟进处理这个问题。

后续计划

  • 解决 issue 中的 bug 及提出的优化点;
  • 优化网站样式;
  • 优化 epub 格式;
  • (削除) 导出书籍中的的笔记/划线; (削除ここまで)

Stargazers over time

Stargazers over time

About

微信读书辅助工具,可用于书籍下载及自动阅读、自动兑换体验卡等

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 49.3%
  • TypeScript 35.2%
  • JavaScript 9.5%
  • HTML 6.0%

AltStyle によって変換されたページ (->オリジナル) /