diff --git a/README.md b/README.md
deleted file mode 100644
index 14c986b..0000000
--- a/README.md
+++ /dev/null
@@ -1,603 +0,0 @@
-# 克隆自原作者johlanse的项目
-
-### 学习强国自动化学习
-
-
-该项目基于[playwright-go](https://github.com/mxschmitt/playwright-go) 开发,支持*windows*,*linux*,*mac*
-
-
-### 文档地址: https://johlanse.shhy.xyz
-> 请先看文档再提出问题
-
-
-## 申明,该项目仅用于学习。
-
-## 鸣谢
-
-+ ### [imkenf/XueQG](https://github.com/imkenf/XueQG)
-
-## windows使用教程
-
-- 浏览器访问[Release](https://github.com/sjkhsl/study_xxqg/releases)
-- 选择最新版本下载 `study_xxqg_amd64.zip`
-- 将其解压到合适的位置
-- 进入解压后的文件夹,双击运行`study_xxqg.exe`,第一次打开可能会出现闪退,发现文件夹下生成了config文件夹
-- 打开config目录下的`confif.yml`文件,进行编辑,详情内容见配置文件
-- 再次进行运行`study_xxqg.exe`
-- 使用浏览器打开`http://127.0.0.1:8080`
-- 推送配置请参考推送
-
-### 自定义浏览器位置
-
-> windows默认调用系统的edge浏览器,调用目录**C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe**
->
-> 若不存在该浏览器会自动尝试下载浏览器到目录下的tools文件夹下,当然也可以自定义配置浏览器位置
->
-> 修改配置文件的**edge_path**选项即可配置,配置为配置可执行文件的路径
->
-> 自定义浏览器支持chromium内核的系列浏览器,但是版本不能太高
->
-> 例如,我的chrome.exe文件在D盘的browser文件夹下,配置为**D:/browser/chrome.exe**或者**D:\\browser\\chrome.exe**
-
-## 可执行文件运行
-
-- 本地访问[Releases](https://johlanse.shhy.xyz/[Release](https://github.com/johlanse/study_xxqg/releases)) ,查找对应版本并复制链接
-
-- 使用wget下载对应版本压缩包
-
-- > tar -xzvf study_xxqg_linux_amd64.tar.gz
-
-- 运行 `./study_xxqg --init`,首次运行会生成默认配置文件
-
-- 使用vim修改对应配置文件,linux建议使用tg模式运行,详情配置参考[配置](https://johlanse.shhy.xyz/#/../config),推送方式查看[push](https://johlanse.shhy.xyz/#/../push)
-
-- 再次运行即可
-
-
-### 一键安装脚本 废弃
-
-```
-wget https://raw.githubusercontent.com/johlanse/study_xxqg/main/docs/study_xxqg_install.py && python3 study_xxqg_install.py 废弃
-```
-
-## docker运行
-
-```
-docker run --name study_xxqg -d -p 8080:8080 -v /etc/study_xxqg/:/opt/config/ sjkhsl/study_xxqg:latest
-```
-
-各个参数的含义:
-
-- **--name study_xxqg** 运行的容器的名称,可以根据自己实际情况进行修改
-- **-p 8080:8080** 将容器内部的8080端口映射到容器外面,前面是宿主机的端口,就是网页上访问的端口,后面是容器内部需要运行的端口,对应配置文件内web配置的端口就好
-- **-v /etc/study_xxqg/:/opt/config/** 将容器内的/opt/config/目录映射到宿主机的/etc/study_xxqg/目录,可根据实际情况修改前面宿主机路径,映射后对应的config.yml配置文件位置就在该目录下
-- **jolanse/study_xxqg:latest**镜像名称和镜像的版本,latest代表开发中的最新版本
-
-## docker-compose运行
-
-```
-wget https://raw.githubusercontent.com/sjkhsl/study_xxqg/main/docker-compose.yml
-docker-compose up -d
-```
-
-## 二种运行方式的区别
-
-- #### 可执行文件运行
-
- 可执行文件运行节省存储空间,拥有更低的占用,但是可能会存在浏览器依赖安装的问题,适合拥有一定linux基础的用户使用 ,如果系统为debian11用户,可以参考DockerFile文件中的依赖安装语句执行即可,centos用户推荐使用docker.
-
-- #### docker运行
-
- docker运行不需要解决依赖问题,但是可能面临更高的运行占用,建议使用docker控制内存占用
-
-
-## 源码运行
-
-### 安装golang环境
-
-- 去golang[官网](https://studygolang.com/dl) 下载对应系统的安装包,建议安装golang 1.7+
-- 配置环境变量
-- 具体可百度搜索golang环境安装
-- 验证,任意终端中输入`go version`,显示版本信息即安装完成
-
-### 运行项目
-
-- 再任意终端输入一下命令
-
- ```
- cd study_xxqg
- go mod tidy
- go build ./
- ./study_xxqg
- ```
-
-
-## 推送配置
-
-*一共有以下五种推送方式*
-
-- 微信公众号测试号推送
-- 网页推送
-- telegram推送
-- 微信pushPlus推送
-- 钉钉推送
-
-> 其中pushPlus和钉钉推送相互冲突,因为两种推送模式都只能单方面配合定时运行功能使用,只能接收消息,不能发送消息;
-
-> 在公众号测试号和tg推送以及定时三种只要配置了任意一种,程序将自动卡住等待用户指令。
-
-> 若您想打开程序就运行,请关闭这三项配置;当前程序默认开启cron定时,所以新版若不想程序一直等待则关闭cron即可。
-
-> 微信公众号和网页需要公网ip,若没有建议更换其他推送方式,或者自行配置内网穿透,tg推送需要配置代理或者自己反代tg的api,钉钉和pushPlus仅支持单向推送,一般配合定时使用
-
-### 定时配置
-
-定时任务和一下所有推送均可配合一起使用,cron的语法遵循linux标准cron语法,详情可百度自行查询
-
-因为一些不知名的bug,观看视频时可能卡住不加分,所以建议一天运行三次左右定时,同时多次定时之间间隔不要太短
-
-为防止定时任务每天在同一时间触发,可以配置**cron_random_wait**,等待随机时间再运行任务
-
-除此之外,还支持以下语法
-
-- @yearly:也可以写作@annually,表示每年第一天的 0 点。等价于0 0 1 1 *;
-- @monthly:表示每月第一天的 0 点。等价于0 0 1 * *;
-- @weekly:表示每周第一天的 0 点,注意第一天为周日,即周六结束,周日开始的那个 0 点。等价于0 0 * * 0;
-- @daily:也可以写作@midnight,表示每天 0 点。等价于0 0 * * *;
-- @hourly:表示每小时的开始。等价于0 * * * *。
-- @every duration: duration为任意时间端,例如 1h,1s,1s,1h30m2s,代表间隔时间段就指向一次
-
-### 微信公众号推送
-
-配置config.yml的如下部分
-
-```
-# 微信公众号测试号配置
-wechat:
- # 是否启用
- enable: false
- # 开发者平台设置的token
- token: ""
- # 开发者平台的secret
- secret: ""
- # 开发者平台的appId
- app_id: ""
- # 发送登录消息需要使用的消息模板
- # 模板标题,随意 模板内容: 点我登录,然后在浏览器中打开!!
- login_temp_id: ""
- # 发送普通消息需要使用的消息模板
- # 模板标题:随意 模板内容: {{data.DATA}}
- normal_temp_id: ""
- # xxqg会每隔两小时左右检查所有用户的ck有效性,若开启该选项,会在检查失败时推送提醒消息
- push_login_warn: false
- # 微信管理员的openid,可点击关于按钮获得,配置后请重启程序
- super_open_id: ""
-```
-
-- 前往微信[公众号开发者平台](http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login),手机微信扫码登录
-- 配置url为**[http://ip:port/wx](http://ip:port/wx)**,ip为你运行机器的公网ip,若使用docker运行,端口则为宿主机中映射出来的端口,ip和端口的配置和web使用同一个配置
-- 设置token,需和配置项中一样
-- 分别添加登录模板消息和普通模板消息,添加要求:
-
-- 在配置文件中配置所有内容,启动程序
-- 运行程序后,在浏览器中访问配置的url,页面会返回`No Signature!`,然后提交配置,若成功则关注公众号尝试运行
-- docker运行方式参考linux运行
-- 配置成功后可点击关于按钮获取open_id,然后填写到配置项的super_open_id中,然后重启容器生效
-
-### web推送
-
-> 适用于部署在服务器上或者家里有公网IP的设备上
-
-配置config.yml的如下部分
-
-```
-web:
- # 启用web
- enable: true
- # 监听的ip,若只需要本机访问则设置为127.0.0.1,监听本机所有ip为0.0.0.0
- host: 0.0.0.0
- # 监听的端口号 0-65535可选
- port: 8081
- # web端登录管理员的账号
- account:admin
- # web端登录管理员的密码
- password: admin
- # web端登录普通用户的账号密码,支持多个用户,普通用户只能看到自己的信息
- common_user:
- # 代表账号为user,密码为123的普通用户,可添加多个,继续在下面写就好了
- user: 123
-
- # user1: 123
- # user2: 123
-```
-
-- 开启后通过浏览器访问 *[http://ip:port](http://ip:port/)*或者*[http://ip:port/new](http://ip:port/new)*即可打开网址 ,若为docker运行,则ip为宿主机公网ip,端口为docker映射到宿主机的端口
-- 若无法访问,首先检查程序运行日志,查看有无报错,其次查看docker的运行情况,端口是否映射正常,然后可以通过curl命令检测在宿主机中能否访问,然后检查防火墙之类的
-- 若点击登录之后出现一个小框然后无反应,则说明账户密码错误,请重新配置程序账户密码并重启程序
-
-> 登录的账号密码是在配置文件中配置,不是学习强国的登录账号,管理员登录支持删除用户,同时能看到所有人的用户信息,普通用户就是`common_user`下面配置的用户,支持多个用户,键是账号,值是密码
-
-### 钉钉推送
-
-配置config.yml的如下部分,具体使用教程详情参考[钉钉](https://developers.dingtalk.com/document/robots/custom-robot-access?spm=ding_open_doc.document.0.0.7f875e5903iVpC#topic-2026027)
-
-```
-ding:
- enable: true
- access_token: ""
- secret: ""
-```
-
-- 在电脑端钉钉中创建群聊,在聊天设置中选择只能群助手,选择添加机器人,机器人类别选择webhook自定义机器人
-- 机器人名字任意,机器人安全设置勾选加签,复制加签的密钥,作为secret配置项填入配置文件中
-- 勾选协议,确认添加,会出现一个webhook地址,形如这样:`https://oapi.dingtalk.com/robot/send?access_token=aaabbbbcccc`
-- 将上述地址中的后半段,就是access_token=之后的内容作为access_token配置项填入配置文件中,例如上述网址,则填入aaabbbccc到access_token中
-- 设置定时cron,启动程序,程序会在定时时间运行脚本
-
-### pushplus推送
-
-配置config.yml的如下部分,具体使用教程参考[pushplus](https://www.pushplus.plus/)
-
-```
- push_plus:
- enable: true
- token: ""
-```
-
-### telegram推送
-
-## Telegram Bot
-
-配置 config.yml的如下部分
-
-```
-tg:
- enable: false
- chat_id: 0
- token: ""
- # telegram的代理,不配置默认走系统代理
- proxy: ""
- # 自定义tg的api,可通过cloudflare搭建,需自备域名
- custom_api: "https://api.telegram.org"
- # 白名单id,包括群id或者用户id,若为空,则允许所有群所有用户使用,若仅用于单人,直接配置上面的chat_id就可以
- white_list:
- - 123
-```
-
-### 配置
-
-1. 在 Tg 中搜索[`@BotFather`](https://t.me/BotFather) ,发送指令`/newbot`创建一个 bot
-2. 获取你创建好的 API Token 格式为`123456789:AAaaaa-Uuuuuuuuuuu` ,要完整复制**全部内容**
-3. 在 Tg 中搜索[`@userinfobot`](https://t.me/userinfobot) ,点击`START`,它就会给你发送你的信息,记住 Id 即可,是一串数字。
-4. 跟你创建的 bot 会话,点击`START`,或者发送`/start`
-5. 将第 2 步获取的 token 放在`tokenn`中,第 3 步获取的 Id 放到`chat_id`中,`enable`设置为 true。
-6. 因为众所周知的原因,telegram推送需要进行配置代理,例如clash的代理配置为`http://127.0.0.1:7890`即可,若通过cf反代的api,,则填写到**custom_api**配置项
-7. 若不配置代理的情况下会默认走系统代理,white_list建议填写自己的chat_id,为可以使用机器人的白名单,若需要在群组中使用,请相应进行配置
-
-增加 telegram bot 指令支持
-
-`/login` 添加一个用户
-
-`/get_users` 获取所有cookie有效的用户
-
-`/study 张三` 指定账号学习,若只存在一个用户则自动选择学习
-
-`/get_scores` 获取账户积分
-
-`/quit` 退出正在学习的实例,当长时间无响应时建议退出并查看日志然后提交issue
-
-`/study_all` 按顺序对cookie有效的所有用户进行学习
-
-### PushDeer推送配置
-
-pishDeer也仅支持单向推送
-
-配置:
-
-```
-push_deer:
- enable: true
- api: "https://api2.pushdeer.com"
- token: ""
-```
-
-自行注册pushDeer后获取token,配置token到配置文件即可,api默认为官方api,若为自建,则配置对应接口即可
-
-## 配置文件
-
-> 配置文件修改后需要重启程序才能生效
-
-```
-# 刷课模式,默认为3,
-# 1:只刷文章何视频
-# 2:只刷文章和视频和每日答题
-# 3:刷文章和视频和每日答题每周答题和专项答题
-model: 3
-
-# 日志等级
-# panic
-# fatal
-# error
-# warn, warning
-# info
-# debug
-# trace
-log_level: "info"
-
-# 是否显示浏览器
-show_browser: false
-
-# 跳转学习强国的scheme,默认使用本仓库的action自建scheme,若需自行修改,可直接复制仓库下/docs/scheme.html到任意静态文件服务器
-scheme: "https://johlanse.github.io/study_xxqg/scheme.html?"
-
-
-push:
- ding:
- enable: false
- access_token: ""
- secret: ""
- # 目前仅支持push-plus推送二维码,默认建议使用push-plus推送
- # push-plus使用方法见:http://www.pushplus.plus/
- push_plus:
- enable: false
- token: ""
-
-# telegram交互模式配置
-tg:
- enable: false
- chat_id: 0
- token: ""
- # telegram的代理,不配置默认走系统代理
- proxy: ""
- # 自定义tg的api,可通过cloudflare搭建,需自备域名
- custom_api: "https://api.telegram.org"
- # 白名单id,包括群id或者用户id,若为空,则允许所有群所有用户使用,若仅用于单人,直接配置上面的chat_id就可以
- white_list:
- - 123
-# 网页端配置
-web:
- # 是否启用网页
- enable: true
- #
- host: 0.0.0.0
- port: 8080
- # 网页端登录账号
- account: admin
- # 网页端登录密码
- password: admin
-
-# 微信公众号测试号配置
-wechat:
- # 是否启用
- enable: false
- # 开发者平台设置的token
- token: ""
- # 开发者平台的secret
- secret: ""
- # 开发者平台的appId
- app_id: ""
- # 发送登录消息需要使用的消息模板
- # 模板标题,随意 模板内容: 点我登录,然后在浏览器中打开!!
- login_temp_id: ""
- # 发送普通消息需要使用的消息模板
- # 模板标题:随意 模板内容: {{data.DATA}}
- normal_temp_id: ""
- # xxqg会每隔两小时左右检查所有用户的ck有效性,若开启该选项,会在检查失败时推送提醒消息
- push_login_warn: false
- # 微信管理员的openid,可点击关于按钮获得,配置后请重启程序
- super_open_id: ""
-
-
-# pushDeer推送配置,详情参考psuhDeer官网:http://www.pushdeer.com/official.html
-push_deer:
- enable: false
- api: "https://api2.pushdeer.com"
- token: ""
-
-# 登录重试配置
-retry:
- # 重试次数
- times: 0
-
- # 重试之间的时间间隔,单位为分钟
- intervals: 5
-
-
-# 设置是否定时执行学习程序,格式为cron格式
-# "9 19 * * *" 每天19点9分执行一次
-# "* 10 * * *” 每天早上十点执行一次
-cron: "0 0 * * *"
-
-# 定时任务随机等待时间,单位:分钟
-cron_random_wait: 0
-
-#windows环境自定义浏览器路径,仅支持chromium系列
-edge_path: ""
-
-# 是否推送二维码
-qr_code: false
-
-# 启动时等待时间,为了防止代理启动比软件慢而报错,默认不等待,单位秒
-start_wait: 0
-
-# 专项答题可接受的最小分值,因一天重复运行的时候,若专项答题未能答满会继续答新的一套题,会浪费题
-special_min_score: 10
-
-# 题目搜索的顺序,为true则从2018年最开始搜题,否则从现在最新开始搜题
-reverse_order: false
-```
-
-## 跳板搭建
-
-因为学习强国官方app的scheme是dtxuexi://,但是大部分浏览器并不能识别该scheme,所以可以通过自行搭建跳板进行跳转。
-
-study_xxqg官方搭建的跳板是使用github page进行搭建的,可能访问情况会比较慢,所以可以进自行搭建跳板。
-
-## 搭建方法
-
-- 在config目录下的创建dist目录
-- 将仓库下docs目录里面的**scheme.html**和**qrcode.js**放入该目录
-- 配置scheme为**[http://ip:port/dist/scheme.html](http://ip:port/dist/scheme.html)?**
-- 重启程序
-
-> 也可以通过其他静态文件服务器搭建,如 nginx等
-
-## 常见问题
-
-- ### 遇到问题的常用解决办法
-
-
-```
-首先将日志项中的日志等级调整为debug
-
-复现出现的错误,在issue中查找错误日志的关键字
-
-通过搜索引擎查找问题
-
-在群聊中查找聊天记录,查找置顶信息
-
-若无解决方案,可附上关键日志和相关配置文件,在群聊中提出问题或者在github提出issue
-```
-
-- ### windows打开**study_xxqg.exe**出现直接闪退
-
- ```
- 在文件路径栏输入**cmd**,然后再黑色命令窗口中输入```./study_xxqg.exe```,
- 然后查看报错内容截图并在[github](https://github.com/johlanse/study_xxqg/issues) 提交issue
- ```
-
-- ### web端账号密码
-
- ```
- web端账号密码默认都是admin,不是你学习强国的手机号,需要修改可自行修改配置文件
- ```
-
-- ### 关于cookie的时间问题
-
- ```
- 原理是是通过带上当前cookie访问一个api即可,在1.0.35版本之后我通过cron定时执行保活,默认的cron是 0 */1 * * *
- ```
-
-
-目前暂不知道能够续期的次数
-
-如果你想让访问间隔时间更短或者更长,可以通过添加环境变量 CHECK_ENV 为cron值
-
-````
-+ ### windows下出现找不到浏览器的问题
-
-```yaml
-
-自行安装chromium内核的浏览器,包括chrome,edge浏览器之类,然后在配置文件中配置 edge_path 配置项,配置时将路径中的 \ 换成 / 或者 \\
-````
-
-- ### arm设备报错`could not download driver: could not check if driver is up2date: could not run driver: exit status 127`
-
- ```
- 因为playwright官方对arm设备支持会出现一些问题,所以需要手动安装node.js和chromium,并创建软连接
-
- apt-get install nodejs
-
- apt-get install chromium
-
- ln -s /usr/bin/chromium ./tools/browser/chromium-978106/chrome-linux/chrome
-
- ln -s /usr/bin/node ./tools/driver/ms-playwright-go/1.20.0-beta-1647057403000/node
- ```
-
-
-- ### linux退出终端后脚本停止运行
-
- ```
- 可以使用screen或者nohup等命令后台运行,具体命令自行百度
-
- nohup参考命令
-
- nohup ./study_xxqg > xxqg.log 2>&1
-
- 退出程序可以通过**cat pid.pid**查看程序pid,然后kill对应pid进行退出
- ```
-
-
-````
-+ ### linux上退出后台正在执行的进程
-
-```yaml
-study_xxqg进程会在运行的时候将pid输出到目录下的pid.pid文件,使用kil -9 命令即可退出后台进程
-````
-
-- ### 刷文章或者视频无法加分
-
- ```
- 偶尔出现视频和文章无法加分的bug,可以进行等待一段时间后重启程序再次测试,目前尚不清楚造成原因
- ```
-
-- ### Host system is missing
-
- 报错大概为这样:
-
- ```
- [ERROR]: [core] 初始化chrome失败
- [2022-05-13 13:43:47] [ERROR]: [core] could not send message: could not send message to server: Host system is missing dependencies!
-
- Missing libraries are:
- libgtk-3.so.0
- libgdk-3.so.0
- ```
-
-
-````
-```shell
-sudo ./tools/driver/ms-playwright-go/1.20.0-beta-1647057403000/playwright.sh install-deps
-````
-
-> 若运行后显示未找到apt-get,可百度对应系统安装apt-get的方法
-
-- ### 为什么运行了就卡住了
-
-
-当开启了cron定时配置,微信公众号测试号配置,telegram配置这三项的任意一项后,
-
-程序就会等待用户的指令从而卡住,所以只需要修改配置文件就可以解决
-
-study_xxqg作为一个开源程序,欢迎大家尽自己的一份力做出贡献
-
-## 贡献要求
-
-- ###### 热爱祖国
-
-- 愿意参与开源贡献
-
-
-## 贡献文档
-
-> 文档采用docsify框架加上github page进行自动部署,
->
-> 你只需要在docs目录进行marikdown编写,提交pr后会
->
-> 自动生成,本地可通过docsify进行查看运行结果
-
-## 贡献代码
-
-### 技术需求
-
-项目采用go语言编写
-web框架采用gin框架
-爬虫框架采用req库
-浏览器自动化框架采用playwright-go库
-
-### 目录结构
-
-- **\.github\** github的相关配置目录,主要存储了action自动化脚本
-- **\conf\** 程序的配置文件解析,默认配置文件存放目录
-- **\lib\** 程序的主要代码目录,包含了核心的各项功能,包括答题,看文章,看视频,telegram
-- **\model\** 程序的用户数据存储,封装了对sqlite的操作
-- **\push\** 程序的推送配置,主要包括钉钉推送和pushplus推送
-- **\web\** 程序的web端操作和微信公众的操作
-- **\utils\** 程序的一些工具类封装
-
-运行时生成的目录
-
-- **\config\** 程序的配置文件config.yml的存放目录
-- **\config\logs\** 程序的日志文件存放目录
-- **\dist\** 留给用户存放自定义静态文件的目录,映射路径为 \dist,需手动添加并重启程序
diff --git a/config/tg.jpg b/config/tg.jpg
deleted file mode 100644
index 5627449..0000000
Binary files a/config/tg.jpg and /dev/null differ
diff --git a/docs/.nojekyll b/docs/.nojekyll
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/CNAME b/docs/CNAME
deleted file mode 100644
index 6103742..0000000
--- a/docs/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-johlanse.shhy.xyz
\ No newline at end of file
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
deleted file mode 100644
index ca92a23..0000000
--- a/docs/_coverpage.md
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-# study_xxqg
-
-> 一个解放双手的强国自动化助手
-
-- 每日40-45分
-- cookie保存时间长
-- 支持多种推送方式
-
-[GitHub](https://github.com/sjkhsl/study_xxqg)
-[Get Started](./start.md)
\ No newline at end of file
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
deleted file mode 100644
index 8698b5c..0000000
--- a/docs/_sidebar.md
+++ /dev/null
@@ -1,12 +0,0 @@
-* [Study_xxqg](./start.md)
-* [开始使用](./start.md)
- * [Windows运行](./windows/index)
- * [linux运行](./linux/index)
- * [源码运行](./custom/index)
- * [手机运行](./lazy/index)
-* [推送配置](./push.md)
-* [配置文件](./config.md)
-* [跳板搭建](./scheme.md)
-* [常见问题](./problem.md)
-* [做出贡献](./contribute.md)
-* [加群交流](./joinGroup.md)
\ No newline at end of file
diff --git a/docs/config.md b/docs/config.md
deleted file mode 100644
index 830bb91..0000000
--- a/docs/config.md
+++ /dev/null
@@ -1,125 +0,0 @@
-## 配置文件
-
-> 配置文件修改后需要重启程序才能生效
-
-```yaml
-# 刷课模式,默认为3,
-# 1:只刷文章何视频
-# 2:只刷文章和视频和每日答题
-# 3:刷文章和视频和每日答题每周答题和专项答题
-model: 3
-
-# 日志等级
-# panic
-# fatal
-# error
-# warn, warning
-# info
-# debug
-# trace
-log_level: "info"
-
-# 是否显示浏览器
-show_browser: false
-
-# 跳转学习强国的scheme,默认使用本仓库的action自建scheme,若需自行修改,可直接复制仓库下/docs/scheme.html到任意静态文件服务器
-scheme: "https://johlanse.github.io/study_xxqg/scheme.html?"
-
-
-push:
- ding:
- enable: false
- access_token: ""
- secret: ""
- # 目前仅支持push-plus推送二维码,默认建议使用push-plus推送
- # push-plus使用方法见:http://www.pushplus.plus/
- push_plus:
- enable: false
- token: ""
-
-# telegram交互模式配置
-tg:
- enable: false
- chat_id: 0
- token: ""
- # telegram的代理,不配置默认走系统代理
- proxy: ""
- # 自定义tg的api,可通过cloudflare搭建,需自备域名
- custom_api: "https://api.telegram.org"
- # 白名单id,包括群id或者用户id,若为空,则允许所有群所有用户使用,若仅用于单人,直接配置上面的chat_id就可以
- white_list:
- - 123
-# 网页端配置
-web:
- # 是否启用网页
- enable: true
- #
- host: 0.0.0.0
- port: 8080
- # 网页端登录账号
- account: admin
- # 网页端登录密码
- password: admin
-
-# 微信公众号测试号配置
-wechat:
- # 是否启用
- enable: false
- # 开发者平台设置的token
- token: ""
- # 开发者平台的secret
- secret: ""
- # 开发者平台的appId
- app_id: ""
- # 发送登录消息需要使用的消息模板
- # 模板标题,随意 模板内容: 点我登录,然后在浏览器中打开!!
- login_temp_id: ""
- # 发送普通消息需要使用的消息模板
- # 模板标题:随意 模板内容: {{data.DATA}}
- normal_temp_id: ""
- # xxqg会每隔两小时左右检查所有用户的ck有效性,若开启该选项,会在检查失败时推送提醒消息
- push_login_warn: false
- # 微信管理员的openid,可点击关于按钮获得,配置后请重启程序
- super_open_id: ""
-
-
-# pushDeer推送配置,详情参考psuhDeer官网:http://www.pushdeer.com/official.html
-push_deer:
- enable: false
- api: "https://api2.pushdeer.com"
- token: ""
-
-# 登录重试配置
-retry:
- # 重试次数
- times: 0
-
- # 重试之间的时间间隔,单位为分钟
- intervals: 5
-
-
-# 设置是否定时执行学习程序,格式为cron格式
-# "9 19 * * *" 每天19点9分执行一次
-# "* 10 * * *” 每天早上十点执行一次
-cron: "0 0 * * *"
-
-# 定时任务随机等待时间,单位:分钟
-cron_random_wait: 0
-
-#windows环境自定义浏览器路径,仅支持chromium系列,需要将\替换为/或者\\
-edge_path: ""
-
-# 启动时等待时间,为了防止代理启动比软件慢而报错,默认不等待,单位秒
-start_wait: 0
-
-# 专项答题可接受的最小分值,因一天重复运行的时候,若专项答题未能答满会继续答新的一套题,会浪费题
-special_min_score: 10
-
-# 题目搜索的顺序,为true则从2018年最开始搜题,否则从现在最新开始搜题
-reverse_order: false
-
-# 定时任务运行时协程池的大小
-pool_size: 1
-
-
-```
diff --git a/docs/contribute.md b/docs/contribute.md
deleted file mode 100644
index 815f5fc..0000000
--- a/docs/contribute.md
+++ /dev/null
@@ -1,39 +0,0 @@
-study_xxqg作为一个开源程序,欢迎大家尽自己的一份力做出贡献
-
-## 贡献要求
-* ###### 热爱祖国
-* 愿意参与开源贡献
-
-
-
-## 贡献文档
-
-> 文档采用docsify框架加上github page进行自动部署,
->
-> 你只需要在docs目录进行marikdown编写,提交pr后会
->
-> 自动生成,本地可通过docsify进行查看运行结果
-
-## 贡献代码
-
-### 技术需求
-
-项目采用go语言编写\
-web框架采用gin框架\
-爬虫框架采用req库\
-浏览器自动化框架采用playwright-go库
-
-### 目录结构
-+ **\\.github\\** github的相关配置目录,主要存储了action自动化脚本
-+ **\\conf\\** 程序的配置文件解析,默认配置文件存放目录
-+ **\\lib\\** 程序的主要代码目录,包含了核心的各项功能,包括答题,看文章,看视频,telegram
-+ **\\model\\** 程序的用户数据存储,封装了对sqlite的操作
-+ **\\push\\** 程序的推送配置,主要包括钉钉推送和pushplus推送
-+ **\\web\\** 程序的web端操作和微信公众的操作
-+ **\\utils\\** 程序的一些工具类封装
-
-运行时生成的目录
-
-+ **\\config\\** 程序的配置文件config.yml的存放目录
-+ **\\config\\logs\\** 程序的日志文件存放目录
-+ **\\dist\\** 留给用户存放自定义静态文件的目录,映射路径为 \dist,需手动添加并重启程序
\ No newline at end of file
diff --git a/docs/custom/index.md b/docs/custom/index.md
deleted file mode 100644
index cad3555..0000000
--- a/docs/custom/index.md
+++ /dev/null
@@ -1,16 +0,0 @@
-## 源码运行
-
-### 安装golang环境
-+ 去golang[官网](https://studygolang.com/dl) 下载对应系统的安装包,建议安装golang 1.7+
-+ 配置环境变量
-+ 具体可百度搜索golang环境安装
-+ 验证,任意终端中输入```go version```,显示版本信息即安装完成
-
-### 运行项目
-+ 再任意终端输入一下命令
-```yaml
-cd study_xxqg
-go mod tidy
-go build ./
-./study_xxqg
-```
\ No newline at end of file
diff --git a/docs/delete_old_file.md b/docs/delete_old_file.md
deleted file mode 100644
index 41a6998..0000000
--- a/docs/delete_old_file.md
+++ /dev/null
@@ -1,17 +0,0 @@
-目前最新版本更新了浏览器的执行文件路径和playwright驱动文件的路径,所以可以删除之前下载的文件。对应文件位置分别为
-## windows
-```text
-C:\Users\用户\AppData\Local\ms-playwright\
-C:\Users\用户\AppData\Local\ms-playwright-go\
-```
-
-## linux
-```text
-~/.cache/ms-playwright/
-~/.cache/ms-playwright-go/
-```
-## mac
-```text
-/User/Library/Caches/ms-playwright/
-/User/Library/Caches/ms-playwright-go/
-```
\ No newline at end of file
diff --git a/docs/img/wx_temp.jpg b/docs/img/wx_temp.jpg
deleted file mode 100644
index 43f9686..0000000
Binary files a/docs/img/wx_temp.jpg and /dev/null differ
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index ac33721..0000000
--- a/docs/index.html
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
- Study_xxqg
-
-
-
-
-
-
-
-
-
-
-
-
-加载中...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/joinGroup.md b/docs/joinGroup.md
deleted file mode 100644
index ae8259e..0000000
--- a/docs/joinGroup.md
+++ /dev/null
@@ -1,3 +0,0 @@
-加群链接: https://t.me/+w07gJlNH8ewzYzg1
-
-> 加群之前请完整阅读文档,提出问题之前请先在github的issue查找,并仔细阅读文档后再提出,同时建议附上config.yml的配置信息和运行日志。
\ No newline at end of file
diff --git a/docs/lazy/index.md b/docs/lazy/index.md
deleted file mode 100644
index 73c963d..0000000
--- a/docs/lazy/index.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 手机运行
-
-## 懒人部署
-> 运行方式采用的是ZeroTermux的proot容器来安装的ubuntu 20.04 来运行的
-### 1.软件工具下载
-
-- 安卓手机
-- ZeroTermux
-- 恢复包
- > 下载地址:https://www.123pan.com/s/g9qA-DMMYd
- >
- >
-
-
-### 2.软件安装与恢复
-
-
-
-### 3. 运行程序
-```shell
-# 进入容器后输入 ./study_xxqg 启动程序
- ./study_xxqg
-#里面已经安装了screen 如何使用自行百度
-```
-
-
diff --git a/docs/linux/index.md b/docs/linux/index.md
deleted file mode 100644
index 45a059b..0000000
--- a/docs/linux/index.md
+++ /dev/null
@@ -1,41 +0,0 @@
-## 可执行文件运行
-
-+ 本地访问[Releases]([Release](https://github.com/sjkhsl/study_xxqg/releases)) ,查找对应版本并复制链接
-+ 使用wget下载对应版本压缩包
-+ > tar -xzvf study_xxqg_linux_amd64.tar.gz
-+ 运行 ```./study_xxqg --init```,首次运行会生成默认配置文件
-+ 使用vim修改对应配置文件,linux建议使用tg模式运行,详情配置参考[配置](../config.md),推送方式查看[push](../push.md)
-+ 再次运行即可
-
-### 一键安装脚本
-```shell
-wget https://raw.githubusercontent.com/sjkhsl/study_xxqg/main/docs/study_xxqg_install.py && python3 study_xxqg_install.py
-```
-
-## docker运行
-
-```
-docker run --name study_xxqg --restart always -d -p 8080:8080 -v /etc/study_xxqg/:/opt/config/ sjkhsl/study_xxqg:latest
-```
-各个参数的含义:
-+ **--restart always 容器总是自动重启
-+ **--name study_xxqg** 运行的容器的名称,可以根据自己实际情况进行修改
-+ **-p 8080:8080** 将容器内部的8080端口映射到容器外面,前面是宿主机的端口,就是网页上访问的端口,后面是容器内部需要运行的端口,对应配置文件内web配置的端口就好
-+ **-v /etc/study_xxqg/:/opt/config/** 将容器内的/opt/config/目录映射到宿主机的/etc/study_xxqg/目录,可根据实际情况修改前面宿主机路径,映射后对应的config.yml配置文件位置就在该目录下
-+ **sjkhsl/study_xxqg:latest**镜像名称和镜像的版本,latest代表开发中的最新版本
-
-## docker-compose运行
-
-```shell
-wget https://raw.githubusercontent.com/sjkhsl/study_xxqg/main/docker-compose.yml
-docker-compose up -d
-```
-
-## 二种运行方式的区别
-
-+ #### 可执行文件运行
-
- 可执行文件运行节省存储空间,拥有更低的占用,但是可能会存在浏览器依赖安装的问题,适合拥有一定linux基础的用户使用
- ,如果系统为debian11用户,可以参考DockerFile文件中的依赖安装语句执行即可,centos用户推荐使用docker.
-+ #### docker运行
- docker运行不需要解决依赖问题,但是可能面临更高的运行占用,建议使用docker控制内存占用
diff --git a/docs/problem.md b/docs/problem.md
deleted file mode 100644
index fdbf7be..0000000
--- a/docs/problem.md
+++ /dev/null
@@ -1,111 +0,0 @@
-## 常见问题
-
-
-+ ### 遇到问题的常用解决办法
-
-```yaml
-首先将日志项中的日志等级调整为debug
-
-复现出现的错误,在issue中查找错误日志的关键字
-
-通过搜索引擎查找问题
-
-在群聊中查找聊天记录,查找置顶信息
-
-若无解决方案,可附上关键日志和相关配置文件,在群聊中提出问题或者在github提出issue
-```
-
-+ ### windows打开**study_xxqg.exe**出现直接闪退
-```yaml
- 在文件路径栏输入**cmd**,然后再黑色命令窗口中输入```./study_xxqg.exe```,
- 然后查看报错内容截图并在[github](https://github.com/sjkhsl/study_xxqg/issues) 提交issue
-```
-
-+ ### web端账号密码
-```yaml
- web端账号密码默认都是admin,不是你学习强国的手机号,需要修改可自行修改配置文件
-```
-
-+ ### 关于cookie的时间问题
-```yaml
-原理是是通过带上当前cookie访问一个api即可,在1.0.35版本之后我通过cron定时执行保活,默认的cron是 0 */1 * * *
-
-目前暂不知道能够续期的次数
-
-如果你想让访问间隔时间更短或者更长,可以通过添加环境变量 CHECK_ENV 为cron值
-```
-
-
-+ ### windows下出现找不到浏览器的问题
-
-```yaml
-
-自行安装chromium内核的浏览器,包括chrome,edge浏览器之类,然后在配置文件中配置 edge_path 配置项,配置时将路径中的 \ 换成 / 或者 \\
-```
-
-
-+ ### arm设备报错```could not download driver: could not check if driver is up2date: could not run driver: exit status 127```
- ```yaml
-因为playwright官方对arm设备支持会出现一些问题,所以需要手动安装node.js和chromium,并创建软连接
-
- apt-get install nodejs
-
- apt-get install chromium
-
- ln -s /usr/bin/chromium ./tools/browser/chromium-978106/chrome-linux/chrome
-
- ln -s /usr/bin/node ./tools/driver/ms-playwright-go/1.20.0-beta-1647057403000/node
-```
-
-
-
-+ ### linux退出终端后脚本停止运行
-```yaml
- 可以使用screen或者nohup等命令后台运行,具体命令自行百度
-
- nohup参考命令
-
- nohup ./study_xxqg > xxqg.log 2>&1
-
- 退出程序可以通过**cat pid.pid**查看程序pid,然后kill对应pid进行退出
-
-
-```
-
-+ ### linux上退出后台正在执行的进程
-
-```yaml
-study_xxqg进程会在运行的时候将pid输出到目录下的pid.pid文件,使用kil -9 命令即可退出后台进程
-```
-
-+ ### 刷文章或者视频无法加分
-```yaml
-偶尔出现视频和文章无法加分的bug,可以进行等待一段时间后重启程序再次测试,目前尚不清楚造成原因
-```
-
-+ ### Host system is missing
-报错大概为这样:
-```
-[ERROR]: [core] 初始化chrome失败
-[2022-05-13 13:43:47] [ERROR]: [core] could not send message: could not send message to server: Host system is missing dependencies!
-
- Missing libraries are:
- libgtk-3.so.0
- libgdk-3.so.0
-
-```
-```shell
-sudo ./tools/driver/ms-playwright-go/1.20.0-beta-1647057403000/playwright.sh install-deps
-
-```
-
-> 若运行后显示未找到apt-get,可百度对应系统安装apt-get的方法
-
-
-
-
-+ ### 为什么运行了就卡住了
-
-当开启了cron定时配置,微信公众号测试号配置,telegram配置这三项的任意一项后,
-
-程序就会等待用户的指令从而卡住,所以只需要修改配置文件就可以解决
\ No newline at end of file
diff --git a/docs/push.md b/docs/push.md
deleted file mode 100644
index 718b73c..0000000
--- a/docs/push.md
+++ /dev/null
@@ -1,225 +0,0 @@
-## 推送配置
-
-*一共有以下五种推送方式*
-+ 微信公众号测试号推送
-+ 网页推送
-+ telegram推送
-+ 微信pushPlus推送
-+ 钉钉推送
-
-> 其中pushPlus和钉钉推送相互冲突,因为两种推送模式都只能单方面配合定时运行功能使用,只能接收消息,不能发送消息;
-
-> 在公众号测试号和tg推送以及定时三种只要配置了任意一种,程序将自动卡住等待用户指令。
-
-> 若您想打开程序就运行,请关闭这三项配置;当前程序默认开启cron定时,所以新版若不想程序一直等待则关闭cron即可。
-
-> 微信公众号和网页需要公网ip,若没有建议更换其他推送方式,或者自行配置内网穿透,tg推送需要配置代理或者自己反代tg的api,钉钉和pushPlus仅支持单向推送,一般配合定时使用
-
-### 定时配置
-
-定时任务和一下所有推送均可配合一起使用,cron的语法遵循linux标准cron语法,详情可百度自行查询
-
-因为一些不知名的bug,观看视频时可能卡住不加分,所以建议一天运行三次左右定时,同时多次定时之间间隔不要太短
-
-为防止定时任务每天在同一时间触发,可以配置**cron_random_wait**,等待随机时间再运行任务
-
-除此之外,还支持以下语法
-+ @yearly:也可以写作@annually,表示每年第一天的 0 点。等价于0 0 1 1 *;
-+ @monthly:表示每月第一天的 0 点。等价于0 0 1 * *;
-+ @weekly:表示每周第一天的 0 点,注意第一天为周日,即周六结束,周日开始的那个 0 点。等价于0 0 * * 0;
-+ @daily:也可以写作@midnight,表示每天 0 点。等价于0 0 * * *;
-+ @hourly:表示每小时的开始。等价于0 * * * *。
-+ @every duration: duration为任意时间端,例如 1h,1s,1s,1h30m2s,代表间隔时间段就指向一次
-
-### 微信公众号推送
-配置config.yml的如下部分
-```yaml
-# 微信公众号测试号配置
-wechat:
- # 是否启用
- enable: false
- # 开发者平台设置的token
- token: ""
- # 开发者平台的secret
- secret: ""
- # 开发者平台的appId
- app_id: ""
- # 发送登录消息需要使用的消息模板
- # 模板标题,随意 模板内容: 点我登录,然后在浏览器中打开!!
- login_temp_id: ""
- # 发送普通消息需要使用的消息模板
- # 模板标题:随意 模板内容: {{data.DATA}}
- normal_temp_id: ""
- # xxqg会每隔两小时左右检查所有用户的ck有效性,若开启该选项,会在检查失败时推送提醒消息
- push_login_warn: false
- # 微信管理员的openid,可点击关于按钮获得,配置后请重启程序
- super_open_id: ""
-```
-
-+ 前往微信[公众号开发者平台](http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login),手机微信扫码登录
-+ 配置url为**http://ip:port/wx**,ip为你运行机器的公网ip,若使用docker运行,端口则为宿主机中映射出来的端口,ip和端口的配置和web使用同一个配置
-+ 设置token,需和配置项中一样
-+ 分别添加登录模板消息和普通模板消息,添加要求:
-
-![](./img/wx_temp.jpg)
-
-+ 在配置文件中配置所有内容,启动程序
-+ 运行程序后,在浏览器中访问配置的url,页面会返回``No Signature!``,然后提交配置,若成功则关注公众号尝试运行
-+ docker运行方式参考[linux运行](./linux/index.md)
-+ 配置成功后可点击关于按钮获取open_id,然后填写到配置项的super_open_id中,然后重启容器生效
-
-
-### web推送
-> 适用于部署在服务器上或者家里有公网IP的设备上
-
-配置config.yml的如下部分
-```yaml
-web:
- # 启用web
- enable: true
- # 监听的ip,若只需要本机访问则设置为127.0.0.1,监听本机所有ip为0.0.0.0
- host: 0.0.0.0
- # 监听的端口号 0-65535可选
- port: 8081
- # web端登录管理员的账号
- account:admin
- # web端登录管理员的密码
- password: admin
- # web端登录普通用户的账号密码,支持多个用户,普通用户只能看到自己的信息
- common_user:
- # 代表账号为user,密码为123的普通用户,可添加多个,继续在下面写就好了
- user: 123
-
- # user1: 123
- # user2: 123
-
-```
-
-+ 开启后通过浏览器访问 *http://ip:port*或者*http://ip:port/new*即可打开网址 ,若为docker运行,则ip为宿主机公网ip,端口为docker映射到宿主机的端口
-+ 若无法访问,首先检查程序运行日志,查看有无报错,其次查看docker的运行情况,端口是否映射正常,然后可以通过curl命令检测在宿主机中能否访问,然后检查防火墙之类的
-+ 若点击登录之后出现一个小框然后无反应,则说明账户密码错误,请重新配置程序账户密码并重启程序
-
-> 登录的账号密码是在配置文件中配置,不是学习强国的登录账号,管理员登录支持删除用户,同时能看到所有人的用户信息,普通用户就是```common_user```下面配置的用户,支持多个用户,键是账号,值是密码
-
-### 钉钉推送
-配置config.yml的如下部分,具体使用教程详情参考[钉钉](https://developers.dingtalk.com/document/robots/custom-robot-access?spm=ding_open_doc.document.0.0.7f875e5903iVpC#topic-2026027)
-```yaml
-ding:
- enable: true
- access_token: ""
- secret: ""
-```
-+ 在电脑端钉钉中创建群聊,在聊天设置中选择只能群助手,选择添加机器人,机器人类别选择webhook自定义机器人
-+ 机器人名字任意,机器人安全设置勾选加签,复制加签的密钥,作为secret配置项填入配置文件中
-+ 勾选协议,确认添加,会出现一个webhook地址,形如这样:```https://oapi.dingtalk.com/robot/send?access_token=aaabbbbcccc```
-+ 将上述地址中的后半段,就是access_token=之后的内容作为access_token配置项填入配置文件中,例如上述网址,则填入aaabbbccc到access_token中
-+ 设置定时cron,启动程序,程序会在定时时间运行脚本
-
-### pushplus推送
-配置config.yml的如下部分,具体使用教程参考[pushplus](https://www.pushplus.plus/)
-```yaml
- push_plus:
- enable: true
- token: ""
-```
-### telegram推送
-## Telegram Bot
-配置 config.yml的如下部分
-```yaml
-tg:
- enable: false
- chat_id: 0
- token: ""
- # telegram的代理,不配置默认走系统代理
- proxy: ""
- # 自定义tg的api,可通过cloudflare搭建,需自备域名
- custom_api: "https://api.telegram.org"
- # 白名单id,包括群id或者用户id,若为空,则允许所有群所有用户使用,若仅用于单人,直接配置上面的chat_id就可以
- white_list:
- - 123
-```
-
-### 配置
-
-1. 在 Tg 中搜索[`@BotFather`](https://t.me/BotFather) ,发送指令`/newbot`创建一个 bot
-2. 获取你创建好的 API Token 格式为`123456789:AAaaaa-Uuuuuuuuuuu` ,要完整复制**全部内容**
-3. 在 Tg 中搜索[`@userinfobot`](https://t.me/userinfobot) ,点击`START`,它就会给你发送你的信息,记住 Id 即可,是一串数字。
-4. 跟你创建的 bot 会话,点击`START`,或者发送`/start`
-5. 将第 2 步获取的 token 放在`tokenn`中,第 3 步获取的 Id 放到`chat_id`中,`enable`设置为 true。
-6. 因为众所周知的原因,telegram推送需要进行配置代理,例如clash的代理配置为```http://127.0.0.1:7890```即可,若通过cf反代的api,,则填写到**custom_api**配置项
-7. 若不配置代理的情况下会默认走系统代理,white_list建议填写自己的chat_id,为可以使用机器人的白名单,若需要在群组中使用,请相应进行配置
-
-增加 telegram bot 指令支持
-
-`/login` 添加一个用户
-
-`/get_users` 获取所有cookie有效的用户
-
-`/study 张三` 指定账号学习,若只存在一个用户则自动选择学习
-
-`/get_scores` 获取账户积分
-
-`/quit` 退出正在学习的实例,当长时间无响应时建议退出并查看日志然后提交issue
-
-`/study_all` 按顺序对cookie有效的所有用户进行学习
-
-
-### QQ推送配置
-
-qq推送配置支持双向交互,不过需要对接go-cqhttp框架
-配置:
-```yaml
-qq:
- # 是否启用qq推送
- enable: true
- # gocq端监听的地址,默认是5700端口,ip根据自己的网络环境调整
- post_addr: "http://127.0.0.1:5700"
- # 管理员qq号
- super_user: 123
- # gocq端配置的access_token
- access_token: 123
- # 白名单消息
- white_list:
- - 123
-```
-
-gocq端配置
-```yaml
-servers:
- # HTTP 通信设置
- - http:
- # 是否关闭正向HTTP服务器
- disabled: false
- # 服务端监听地址
- host: 127.0.0.1
- # 服务端监听端口
- port: 5700
- # 反向HTTP超时时间, 单位秒
- # 最小值为5,小于5将会忽略本项设置
- timeout: 5
- middlewares:
- <<: *default # 引用默认中间件
- # 反向HTTP POST地址列表
- post:
- -
- url: 'http://127.0.0.1:8085/qq' # 此处配置为study_xxqg的网页地址加上/qq
- secret: '' # 密钥
-
-```
-
-更多细节请查看go-cqhttp文档
-qq命令请输入```.help```查看
-
-### PushDeer推送配置
-
-pishDeer也仅支持单向推送
-
-配置:
-```yaml
-push_deer:
- enable: true
- api: "https://api2.pushdeer.com"
- token: ""
-```
-
-自行注册pushDeer后获取token,配置token到配置文件即可,api默认为官方api,若为自建,则配置对应接口即可
\ No newline at end of file
diff --git a/docs/qrcode.js b/docs/qrcode.js
deleted file mode 100644
index f3be5da..0000000
--- a/docs/qrcode.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.jrQrcode=e():t.jrQrcode=e()}(this,function(){return function(t){function e(o){if(r[o])return r[o].exports;var n=r[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";t.exports=r(3)},function(t,e){"use strict";!function(){Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(t){if(void 0===t||null===t)throw new TypeError("Cannot convert first argument to object");for(var e=Object(t),r=1;r=1&&n<=127?e+=t.charAt(r):n>2047?(e+=String.fromCharCode(224|n>>12&15),e+=String.fromCharCode(128|n>>6&63),e+=String.fromCharCode(128|n>>0&63)):(e+=String.fromCharCode(192|n>>6&31),e+=String.fromCharCode(128|n>>0&63));return e},t.utf8to16=function(t){var e,r,o,n,i,a;for(e="",o=t.length,r=0;r>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=t.charAt(r-1);break;case 12:case 13:i=t.charCodeAt(r++),e+=String.fromCharCode((31&n)<<6|63&i);break;case 14:i=t.charCodeAt(r++),a=t.charCodeAt(r++),e+=String.fromCharCode((15&n)<<12|(63&i)<<6|(63&a)<<0)}return e},t}()},function(t,e,r){"use strict";r(1),r(4);var o=r(2),n=function(){function t(t){var e=new QRCode(t.typeNumber,t.correctLevel);e.addData(t.text),e.make();var r=document.createElement("canvas");r.width=t.width,r.height=t.height;var o=r.getContext("2d"),n=(t.width-2*t.padding)/e.getModuleCount(),i=(t.height-2*t.padding)/e.getModuleCount();if(t.reverse){var a="rgba(0, 0, 0, 0)";o.fillStyle=a,t.foreground=a}else o.fillStyle=t.background;o.fillRect(0,0,r.width,r.height);for(var s=0;s=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,e)},setupPositionProbePattern:function(t,e){for(var r=-1;r<=7;r++)if(!(t+r<=-1||this.moduleCount<=t+r))for(var o=-1;o<=7;o++)e+o<=-1||this.moduleCount<=e+o||(0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[t+r][e+o]=!0:this.modules[t+r][e+o]=!1)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=f.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r),n=1;this.make();for(var i=0;i>r&1);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(var r=0;r<18;r++){var o=!t&&1==(e>>r&1);this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o}},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=f.getBCHTypeInfo(r),n=0;n<15;n++){var i=!t&&1==(o>>n&1);n<6?this.modules[n][8]=i:n<8?this.modules[n+1][8]=i:this.modules[this.moduleCount-15+n][8]=i}for(var n=0;n<15;n++){var i=!t&&1==(o>>n&1);n<8?this.modules[8][this.moduleCount-n-1]=i:n<9?this.modules[8][15-n-1+1]=i:this.modules[8][15-n-1]=i}this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,n=7,i=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;s<2;s++)if(null==this.modules[o][a-s]){var u=!1;i>>n&1));var h=f.getMask(e,o,a-s);h&&(u=!u),this.modules[o][a-s]=u,n--,n==-1&&(i++,n=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}},o.PAD0=236,o.PAD1=17,o.createData=function(t,e,r){for(var n=i.getRSBlocks(t,e),s=new a,u=0;u8*l)throw new Error("code length overflow. ("+s.getLengthInBits()+">"+8*l+")");for(s.getLengthInBits()+4<=8*l&&s.put(0,4);s.getLengthInBits()%8!=0;)s.putBit(!1);for(;;){if(s.getLengthInBits()>=8*l)break;if(s.put(o.PAD0,8),s.getLengthInBits()>=8*l)break;s.put(o.PAD1,8)}return o.createBytes(s,n)},o.createBytes=function(t,e){for(var r=0,o=0,i=0,a=new Array(e.length),s=new Array(e.length),u=0;u=0?v.get(m):0}}for(var p=0,g=0;g=0;)e^=f.G15<=0;)e^=f.G18<>>=1;return e},getPatternPosition:function(t){return f.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case h.PATTERN000:return(e+r)%2==0;case h.PATTERN001:return e%2==0;case h.PATTERN010:return r%3==0;case h.PATTERN011:return(e+r)%3==0;case h.PATTERN100:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case h.PATTERN101:return e*r%2+e*r%3==0;case h.PATTERN110:return(e*r%2+e*r%3)%2==0;case h.PATTERN111:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new n([1],0),r=0;r5&&(r+=3+i-5)}for(var o=0;o=256;)t-=255;return l.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},g=0;g<8;g++)l.EXP_TABLE[g]=1<>>7-t%8&1)},put:function(t,e){for(var r=0;r>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},window.QRCode=o,window.QRErrorCorrectLevel=u;try{t.exports={QRCode:o,QRErrorCorrectLevel:u}}catch(t){}}])});
\ No newline at end of file
diff --git a/docs/scheme.html b/docs/scheme.html
deleted file mode 100644
index 3562476..0000000
--- a/docs/scheme.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- Title
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/scheme.md b/docs/scheme.md
deleted file mode 100644
index ad63052..0000000
--- a/docs/scheme.md
+++ /dev/null
@@ -1,11 +0,0 @@
-因为学习强国官方app的scheme是dtxuexi://,但是大部分浏览器并不能识别该scheme,所以可以通过自行搭建跳板进行跳转。
-
-study_xxqg官方搭建的跳板是使用github page进行搭建的,可能访问情况会比较慢,所以可以进自行搭建跳板。
-
-## 搭建方法
-+ 在config目录下的创建dist目录
-+ 将仓库下docs目录里面的**scheme.html**和**qrcode.js**放入该目录
-+ 配置scheme为**http://ip:port/dist/scheme.html?**
-+ 重启程序
-
-> 也可以通过其他静态文件服务器搭建,如 nginx等
\ No newline at end of file
diff --git a/docs/start.md b/docs/start.md
deleted file mode 100644
index 2d344f0..0000000
--- a/docs/start.md
+++ /dev/null
@@ -1,12 +0,0 @@
-* [Study_xxqg](./start.md)
-* [开始使用](./start.md)
- * [Windows运行](./windows/index)
- * [linux运行](./linux/index)
- * [源码运行](./custom/index)
- * [手机运行](./lazy/index)
-* [推送配置](./push.md)
-* [配置文件](./config.md)
-* [跳板搭建](./scheme.md)
-* [常见问题](./problem.md)
-* [做出贡献](./contribute.md)
-* [加群交流](./joinGroup.md)
\ No newline at end of file
diff --git a/docs/study_xxqg_install.py b/docs/study_xxqg_install.py
deleted file mode 100644
index 42c23be..0000000
--- a/docs/study_xxqg_install.py
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-"""
-Author: johlanse
-Date: 2022/10/3 15:30
-Description:: 用于一键安装study_xxqg️
-"""
-import io
-import os
-import platform
-from functools import partial
-
-try:
- import requests
-except ImportError as e:
- print("requests依赖不存在,尝试安装依赖")
- os.system("pip3 install requests")
- import requests
-
-if platform.system().lower() == "windows":
- import zipfile
-
-print = partial(print, flush=True)
-
-
-def updateDependent() -> str:
- """
- 更新依赖的主函数
- """
- system = platform.system().lower()
- PyVersion_ = platform.python_version()
- if system == "windows":
- if platform.architecture()[0] == "64bit":
- fileName = f"study_xxqg_windows_amd64.zip"
- print(f"✅识别本机设备为Windows amd64,Py版本为{PyVersion_}\n")
- else:
- fileName = f"study_xxqg_windows_386.zip"
- elif system == "darwin":
- fileName = f"tlib_darwin_amd64.tar.gz"
- print(f"✅识别本机设备为MacOS x86_64,Py版本为{PyVersion_}\n")
-
- else:
-
- framework = os.uname().machine
- if framework == "x86_64":
- fileName = f"study_xxqg_linux_amd64.tar.gz"
- print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
- elif framework == "aarch64" or framework == "arm64":
- fileName = f"study_xxqg_linux_arm64.tar.gz"
- print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
- elif framework == "armv7l":
- fileName = f"study_xxqg_linux_386.tar.gz"
- print(f"✅识别本机设备为Linux {framework},Py版本为{PyVersion_}\n")
- else:
- fileName = f"study_xxqg_linux_amd64.tar.gz"
- print(f"⚠️无法识别本机设备操作系统,默认本机设备为Linux x86_64,Py版本为{PyVersion_}\n")
- return fileName
-
-
-def last_version() -> str:
- return requests.get("https://api.github.com/repos/sjkhsl/study_xxqg/releases/latest").json().get("tag_name")
-
-
-def download(github: str, version: str, binaryName: str):
- print("正在下载文件中,请耐心等待!!!")
- content = requests.get(f"{github}/sjkhsl/study_xxqg/releases/download/{version}/{binaryName}").content
- if platform.system().lower() == "windows":
- with zipfile.ZipFile(io.BytesIO(content)) as zf:
- data = zf.open("study_xxqg.exe")
- with open("study_xxqg.exe", "wb") as f:
- f.write(data.read())
- else:
- with open(binaryName, "wb") as f:
- f.write(content)
- os.system(f"tar xvf {binaryName}")
- os.remove(binaryName)
-
-
-def checkYesOrNo() -> bool:
- data = input("请输入:").lower()
- if data == "y" or data == "yes":
- return True
- else:
- return False
-
-
-def addSystemctl():
- with open("/etc/systemd/system/study_xxqg.service", "w", encoding="utf-8") as f:
- f.write(f'''[Unit]
- Description=study_xxqg
- Documentation=study_xxqg
- After=network-online.target
- Wants=network-online.target systemd-networkd-wait-online.service
-
- [Service]
- Restart=always
-
- ; User and group the process will run as.
- User=root
- Group=root
-
- WorkingDirectory={os.getcwd()}
- ExecStart={os.getcwd()}/study_xxqg
-
- ; Limit the number of file descriptors; see `man systemd.exec` for more limit settings.
- LimitNOFILE=1048576
- ; Unmodified caddy is not expected to use more than that.
- LimitNPROC=512
-
- [Install]
- WantedBy=multi-user.target''')
-
-
-def main():
- github = "https://github.com"
- version = last_version()
- binaryName = updateDependent()
- if os.path.exists("study_xxqg.exe") or os.path.exists("study_xxqg"):
- print("检测到study_xxqg文件已经存在,是否跳过下载(y/n)")
- if not checkYesOrNo():
- download(github, version, binaryName)
- print("已跳过下载")
- else:
- download(github, version, binaryName)
-
- if not platform.system().lower() == "windows":
- print("是否将study_xxqg加入系统启动system命令(y/n)")
- if checkYesOrNo():
- addSystemctl()
- os.system("systemctl enable study_xxqg")
- print("已加入开机自启动,输入 systemctl start study_xxqg即可后台启动")
- print("开始安装浏览器依赖")
- try:
- os.mkdir("config")
- except FileExistsError as e:
- pass
- if platform.system().lower() == "windows":
- os.system("study_xxqg --init")
- else:
- os.system("./study_xxqg --init")
- os.system("./tools/driver/ms-playwright-go/1.20.0-beta-1647057403000/playwright install-deps")
- print("是否启动study_xxqg? (y/n)")
- if checkYesOrNo():
- if platform.system().lower() == "windows":
- os.system("study_xxqg.exe")
- else:
- os.system("chmod -R 777 ./study_xxqg")
- os.system("./study_xxqg")
-
-
-if __name__ == '__main__':
- main()
diff --git a/docs/tg.md b/docs/tg.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/windows/index.md b/docs/windows/index.md
deleted file mode 100644
index d656872..0000000
--- a/docs/windows/index.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## windows使用教程
-
-+ 浏览器访问[Release](https://github.com/sjkhsl/study_xxqg/releases)
-+ 选择最新版本下载 ```study_xxqg_amd64.zip```
-+ 将其解压到合适的位置
-+ 进入解压后的文件夹,双击运行```study_xxqg.exe```,第一次打开可能会出现闪退,发现文件夹下生成了config文件夹
-+ 打开config目录下的```confif.yml```文件,进行编辑,详情内容见[配置文件](../config.md)
-+ 再次进行运行```study_xxqg.exe```
-+ 使用浏览器打开```http://127.0.0.1:8080```
-+ 推送配置请参考[推送](../push.md)
-
-### 自定义浏览器位置
-
->windows默认调用系统的edge浏览器,调用目录**C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe**
->
-> 若不存在该浏览器会自动尝试下载浏览器到目录下的tools文件夹下,当然也可以自定义配置浏览器位置
->
-> 修改配置文件的**edge_path**选项即可配置,配置为配置可执行文件的路径
->
-> 自定义浏览器支持chromium内核的系列浏览器,但是版本不能太高
->
-> 例如,我的chrome.exe文件在D盘的browser文件夹下,配置为**D:/browser/chrome.exe**或者**D:\\\browser\\\chrome.exe**
\ No newline at end of file
diff --git a/main.go b/main.go
index 46b304b..2a33e11 100644
--- a/main.go
+++ b/main.go
@@ -210,17 +210,6 @@ func main() {
getPush := push.GetPush(config)
getPush("", "flush", "学习强国助手已上线")
- if config.CustomCron != "" {
- c2 := cron.New()
- _, err := c2.AddFunc(config.CustomCron, func() {
- getPush("all", "flush", config.CustomMessage)
- })
- if err != nil {
- log.Errorln("添加自定义定时消息推送错误" + err.Error())
- return
- }
- c2.Run()
- }
initTask()
model.SetPush(getPush)
if now {