|
| 1 | +# daily-reporter |
| 2 | + |
| 3 | +上海第二工业大学健康管理系统每日一报自动报送工具 |
| 4 | + |
| 5 | +支持**微信推送报送结果**、**多用户**、**定时自动报送** |
| 6 | + |
| 7 | +体温在用户定义的区间内使用正态分布随机生成。 |
| 8 | + |
| 9 | +[English](README.md) | [中文](README_zh-cn.md) |
| 10 | + |
| 11 | +## 安装 Google Chrome |
| 12 | + |
| 13 | +使用这个自动报送工具之前,你需要安装 [Google Chrome](https://www.google.com/chrome/)。 |
| 14 | + |
| 15 | +## 下载 ChromeDriver |
| 16 | + |
| 17 | +在 Google Chrome 中进入 `chrome://version` 查看 Google Chrome 版本,并下载对应版本的 [ChromeDriver](https://chromedriver.chromium.org/downloads)。 |
| 18 | + |
| 19 | +下载 ChromeDriver 后,你需要将可执行文件所在的目录加入 `PATH` 环境变量中。你也可以跳过此步,但如果跳过此步,你需要将 ChromeDriver 可执行文件的路径写入 `config.py` 中。 |
| 20 | + |
| 21 | +## 安装 Python |
| 22 | + |
| 23 | +[下载](https://www.python.org/downloads/)并安装 `Python 3.x`。 |
| 24 | + |
| 25 | +请在安装时勾选 `Add to PATH`。如果不勾选此项,你需要将后文中的 `pip` 和 `python` 替换为完整路径。 |
| 26 | + |
| 27 | +## 安装 pip 依赖 |
| 28 | + |
| 29 | +``` bash |
| 30 | +pip install numpy selenium schedule requests |
| 31 | +``` |
| 32 | + |
| 33 | +## 编辑配置文件 |
| 34 | + |
| 35 | +### 编辑基础配置 |
| 36 | + |
| 37 | +如果你在没有图形化桌面的服务器上使用此脚本,请将 `headless` 设为 `True`。使用 `headless` 模式将不会显示 Google Chrome 界面。在没有图形化桌面的服务器上使用此脚本时若不使用 `headless` 模式可能会引发错误。 |
| 38 | + |
| 39 | +你可以设定随机生成的体温的最小值 `min_temperature` 和最大值 `max_temperature`,单位为摄氏度。体温将在设定的区间(闭区间)中使用正态分布随机生成。 |
| 40 | + |
| 41 | +`timeout` 为每个用户在提交时的最长等待时间,单位为秒 `second(s)`。网络拥堵时提交可能需要等待较长时间。若超过设定的时间仍未成功即视为报送失败,将结束当次报送。默认值为 `600`。 |
| 42 | + |
| 43 | +`driver_path` 为 ChromeDriver 可执行文件所在路径。若指定了 ChromeDriver 路径,则使用指定的可执行文件。若设置为 `auto` ,则会在 `PATH` 中寻找 ChromeDriver。默认值为 `'auto'`。 |
| 44 | + |
| 45 | +### 用户信息配置 |
| 46 | + |
| 47 | +你可以在 `users` 中添加多个用户。你需要为每个用户提供 `username` 和 `password`。 |
| 48 | + |
| 49 | +``` python |
| 50 | +users = [ |
| 51 | + { |
| 52 | + 'username': '20201234567', |
| 53 | + 'password': '123456', |
| 54 | + 'use_wechat': True, |
| 55 | + 'uid': 'UID_ABCDEF0123456789abcdef012345' |
| 56 | + } |
| 57 | +] |
| 58 | +``` |
| 59 | + |
| 60 | +### 配置微信推送 |
| 61 | + |
| 62 | +如果你不使用微信推送,请将 `app_token` 设置为 `None`。事实上,当不使用微信推送时你可将该项设置为任意值。 |
| 63 | + |
| 64 | +所有用户共享同一个 `app_token`,但你可对每一个用户分别设定是否使用微信推送。无论是否使用微信推送,每个用户都必须有 `user_wechat` 配置。当某一用户的 `use_wechat` 为 `False` 时,该用户的 `uid` 则可为任意值,但推荐设置为 `None`。 |
| 65 | + |
| 66 | +该工具使用 [WxPusher](https://wxpusher.zjiecode.com/) 进行微信推送。关于如何获取 `app_token` 和 `uid`,参见 [WxPusher](https://wxpusher.zjiecode.com/)。 |
| 67 | + |
| 68 | +### 更改定时时间 |
| 69 | + |
| 70 | +在 `scheduler.py` 中修改 |
| 71 | + |
| 72 | +``` python |
| 73 | +schedule.every().day.at('00:30').do(job) |
| 74 | +schedule.every().day.at('07:30').do(job) |
| 75 | +``` |
| 76 | + |
| 77 | +以自定义报送时间。 |
| 78 | + |
| 79 | +报送会在到达指定时间时按 `config.py` 中的用户顺序依次进行。 |
| 80 | + |
| 81 | +## 运行 |
| 82 | + |
| 83 | +若要立即对所有用户执行一次报送,请运行 `daily_reporter.py`。程序会在本次报送结束后退出。 |
| 84 | + |
| 85 | +``` bash |
| 86 | +python daily_reporter.py |
| 87 | +``` |
| 88 | + |
| 89 | +若要开始定时程序,请运行 `scheduler.py`。程序会一直运行,并在每次到达指定时间点时都对所有用户执行一次报送。 |
| 90 | + |
| 91 | +``` bash |
| 92 | +python scheduler.py |
| 93 | +``` |
0 commit comments