diff --git a/README.md b/README.md index 8f806ea..da2e97b 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ > 本项目仅供学习交流使用,不得用于商业用途,因使用本项目导致的任何后果,与本人无关。 -# 说明 +## 说明 本脚本用于自动完成青年大学习的学习任务,在进行简单的初始化后,您便可摆脱每周的青年大学习打卡的束缚。请注意,本脚本仅 适用于 **上海地区** 、且平台为微信公众号 **青春上海** 的青年大学习任务。若您需要本地使用,则在使用本脚本前,请先保证您 的计算机中已安装 **Python3.6** 或以上版本的Python环境。若您选择 **更快的快速上手** 部署项目,则无需安装Python。 -# 更快的快速上手 +## 更快的快速上手 该章节适用于**已经关注了`青春上海`微信公众号**、**已在公众号中留有学习记录**且**没有更改姓名、学号等需求**的用户。 通过本章节的配置,可以让您直接使用`GitHub`中的`Actions`功能自动学习,关于这一部分内容详见 @@ -28,7 +28,7 @@ them`启用`Actions`,在左侧面板找到`Learn`,点击`Enable`启用该任 Enjoy🎉 -# 快速上手(本地部署) +## 快速上手(本地部署) 在使用之前,请确保学习用的微信账号**已经关注了`青春上海`微信公众号**,这十分重要! @@ -60,19 +60,19 @@ python app.py python script.py [获取的Token] ``` -# 详细说明 +## 详细说明 -## 脚本文件说明 +### 脚本文件说明 `script.py`是主要的脚本文件,用于完成青年大学习的学习任务。 -### 主要参数 +#### 主要参数 | 参数 | 说明 | |--------|---------------------| | <登录信息> | 登录信息,获取方式见README.md | -### 可选参数 +#### 可选参数 | 参数 | 含义 | 说明 | |------------------------|-----------------|-------------------------------------------------------------------------------------------| @@ -87,7 +87,7 @@ python script.py [获取的Token] | -p, --proxy | 是否启用代理 | 启用该选项后,会自动获取可用代理,并通过代理发送请求 | | -s, --savePic | 是否保存学习完成截图 | 启用该选项后,会在学习完成后保存学习完成截图,截图保存在`./qndxximg/`目录下,文件名为`endimg_{时间戳}.jpg`,若不启用该选项,则不会保存截图。 | -### 例子 +#### 例子 使用最后一次学习的信息完成新的学习任务 @@ -101,16 +101,16 @@ python script.py 1234567890abcdef python script.py 1234567890abcdef -o N0001 -n "张三" -so "子区域1" ``` -## Flask应用说明 +### Flask应用说明 Flask应用的端口可以随意更改,但开放Host必须能够从局域网访问到。在微信扫码成功获取登录信息后,若没有额外需求, 可以直接关闭Flask应用,登录信息是**长期有效**的,在青春上海平台更新前,不需要担心登录信息失效。 -### 获取登录信息 +#### 获取登录信息 流程同`快速上手`中的`3、使用桌面端浏览器访问`。 -### 登录结果页面 +#### 登录结果页面 `登录结果`页面提供了3种完成学习的方式,第一种是使用`script.py`脚本完成学习,第二种和第三种则为访问`Flask应用`相应URL的方式。 @@ -123,14 +123,14 @@ Flask应用的端口可以随意更改,但开放Host必须能够从局域网 第三种方式如页面中介绍,在`登录结果`页面`3、自定义URL`下方,选择您需要完成学习的组织, 并填入您的姓名,点击`生成链接`获取学习链接,扫码即可完成学习。该链接长期有效,您可收藏后多次使用。 -# 进阶 +## 进阶 -## 定时触发 +### 定时触发 正如文档中描述,无论是脚本还是Flask应用执行学习任务,都是运行一次后立即停止的,若您需要定时触发学习任务, 则需要自行编写定时任务。 -### **[推荐] GitHub Actions** +#### **[推荐] GitHub Actions** 使用GitHub Actions来完成自动学习任务是被推荐的。这是一种相对而言最为方便的方式。目前的Action配置文件是 [autoLearn.yml](.github/workflows/autoLearn.yml),默认启用了`GitHub Action模式`,预留企业微 @@ -150,39 +150,39 @@ them`启用`Actions`,在左侧面板找到`Learn`,点击`Enable`启用该任 大功告成🎉 -#### 手动运行学习任务 +##### 手动运行学习任务 在`Actions`-`Learn`中,点击`Run Workflow`,即可手动运行一次学习任务。 -#### 删除学习任务 +##### 删除学习任务 若您需要删除学习任务,同样地,在`Actions`-`Learn`中,点击右上角的`...`,点击`Disable Workflow`即可。 -### Linux 或 Windows +#### Linux 或 Windows Linux下可以使用`crontab`命令来编写定时任务,Windows下可以使用`计划任务`来编写定时任务,具体使用方法请自行搜索。 -## 消息推送 +### 消息推送 **该功能仅通过`script.py`调用时有效。** 若您需要第一时间收到学习完毕的消息,则可以配置消息推送功能。目前支持的消息推送平台只有`企业微信、钉钉`,若有更多需求, 可发`issue`,由于本人比较忙,更新较慢,请见谅。 -### 企业微信 +#### 企业微信 配置企业微信消息通知十分简单,只需要在执行脚本时添加参数`-wx=你的机器人Webhook地址`。 `机器人Webhook地址`可以通过在企业微信中新建一个群聊,接着点击右上角`...`,选择`群机器人`-`添加`即可。 -### 钉钉 +#### 钉钉 配置钉钉消息通知十分简单,只需要在执行脚本时添加参数`-dd=你的机器人Webhook地址`。 `机器人Webhook地址`可以通过在钉钉中新建一个群聊,接着点击右上角齿轮,选择`机器人`-`添加机器人`-`自定义`。 安全设置选择`自定义关键词`,关键词填写`青年大学习`,接着点击`完成`即可。 -## 代理 +### 代理 若您的网络环境需要使用代理才能访问外网,则需在`config/api_config.py`中配置代理信息。 @@ -200,6 +200,6 @@ PROXY = { 本项目的IP池基于[ProxyPool](https://github.com/jhao104/proxy_pool)搭建,感谢该项目作者。 -# 免责声明 +## 免责声明 本项目仅供学习交流使用,不得用于商业用途,因使用本项目导致的任何后果,与本人无关。 diff --git a/app.py b/app.py index 7a90601..668c67c 100644 --- a/app.py +++ b/app.py @@ -75,4 +75,4 @@ def study(): if __name__ == '__main__': - app.run(host="0.0.0.0", port=11451, debug=True) + app.run(host="0.0.0.0", port=11451) diff --git a/config/api_config.py b/config/api_config.py index b987be8..57bbda8 100644 --- a/config/api_config.py +++ b/config/api_config.py @@ -7,7 +7,7 @@ Describe: """ -API_VERSION = "v20230729.1" +API_VERSION = "v20240309.1" USER_AGENT = "Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, " \ "like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.2.380 Edg/104.0.5112.81" PROXY = None diff --git a/script.py b/script.py index b7ce8ff..cbd867c 100644 --- a/script.py +++ b/script.py @@ -27,6 +27,7 @@ def doStudy(): :return: """ logging.info('开始学习...') + global args # 按情况获取代理 if args.proxy: