# SchoolCardWatcher **Repository Path**: Cooperation_1523/SchoolCardWatcher ## Basic Information - **Project Name**: SchoolCardWatcher - **Description**: 基于Python3,玉林高中校园卡余额监控 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-04-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 玉林高中校园卡余额监控程序 ~~上课的时候~~无聊做出来的小程序,能够监控校园卡的余额,并在其低于某个值时发送微信提醒某个人(比如你妈) --- ## 原理 0. 程序启动,用户扫码登录微信 1. 访问建行悦生活网站自动获取Cookie 2. 将卡号和其他信息Post至校园卡充值的api 3. 网站返回该卡卡主的姓名(这个信息我取不到,如果有大佬能做到的话欢迎指教或者提交Pull Request)和余额,程序会提取余额 4. 判断余额大小,达成条件则使微信机器人发送提醒信息 --- ## 运行环境 ### 源码 基于Python3,从源码运行需要安装itchat模块 `pip install itchat` 二维码显示错误可能需要安装pillow `pip install pillow` ### .exe Windows可执行文件 *暂时没有编译成.exe* 直接双击文件即可 ### Linux二进制可执行文件 *暂时没有编译成二进制文件* 注意:***程序仅在CentOS6.7上编译通过,不能保证在其他版本的Linux上能成功运行,理论上,类CentOS的系统都可以作为运行环境*** --- ## 下载 你可以使用Git `git clone https://github.com/Maplelan/SchoolCardWatcher.git && cd SchoolCardWatcher` 亦或是桌面版网页的绿色按钮Download ZIP ![ Download](https://i.loli.net/2018/04/20/5ad9ec2f94c6d.png) 等等......总之,把那仨.py文件和Config.cfg下载来就行了 --- ## 配置文件 Windows下不阐述 Linux下用文本编辑器编辑Config.cfg: `vi Config.cfg` 你将会看到以下内容(不包括用#修饰的注释) __按下 i 键进行编辑,按下ESC键并输入`:wq`保存退出__ ``` [global] card = xxxxxx sendto = xxxxxx logintype = 0 min_Balance = 50.0 user = xxx ``` 其中,`card`为卡号,替换等号后面的数字为你的校园卡卡号(入学发时贴在卡上的、挂失用的6位数) `sendto`后填上一个微信号,注意,是微信号,不是别的什么东西。填上你妈的微信号吧 ![IMG](https://i.loli.net/2018/04/20/5ad9f28bcbcd2.png) `min_Balance`监控的条件,卡余额低于这个值时会发微信 `user`程序登录你的微信后会产生一个缓存文件,这样,短时间内退出程序的话,再次运行不会提示你登录,user的值代表了这个缓存文件的文件名,后期可能会增加多卡监控(有空的话),目前来看这个值可以随便设 `logintype`登录微信的方式,接收一个数字作为它的值。 - 如果为0,程序运行时将会下载一个二维码图片到程序所在目录下,**不要退出程序**,打开这个图片扫码登录即可继续 - 如果为1,程序将会在命令行输出一个二维码,扫码登录即可。如果二维码太小,可以适当地增大这个值,比如1.5,2都是可以的 ![QR登录](https://camo.githubusercontent.com/44adf9cd7ebee47d1f2888aa5ee9685fadc9b604/687474703a2f2f3778726970342e636f6d312e7a302e676c622e636c6f7564646e2e636f6d2f49744368617425324653637265656e73686f74732532462545372539392542422545352542442539352545372539352538432545392539442541322545362538382541412545352539422542452e6a70673f696d616765566965772f322f772f3435302f) - 如果你的命令行是白底黑字的话,可以键入值 -1 - 部分系统的字库可能有问题,上面的方格可能是长方形,这样会导致显示的二维码错乱,以至于不能被正常识别,这种时候应该用0作为值,手动打开图片文件扫码 --- ## 从源码运行 ### Linux 确保你的命令行在程序所在文件夹(SchoolCardWatcher文件夹)下,用cd命令: `cd <文件夹的名称>` 用ls命令查看当前文件夹下的文件列表 `ls` 确保你已经安装了itchat模块 `pip install itchat` 然后运行程序 `python Launch.py` 注意,如果你的系统安装了多个版本的Python,请指定为Python3 `python3 Launch.py` 此时扫码登录就可以了 ### Windows 额,我并没有使用过Windows 平台的Python,有编程基础的同学自行尝试吧,注意一下几点 - 必须使用Python 3, 不支持Python 2 - 程序依赖于itchat模块,记得安装 ## 从可执行文件运行 如果你闲麻烦,或者不会部署Python环境,可以直接使用已编译好的可执行文件 并没有可执行文件,挖个坑,以后再填 --- ## 调试 >如果我只是想试试看这个程序呢?我并不想真正使用它,只是看看,看看而已 你可以不必微信登录,只需要运行程序前添加你的校园卡卡号作为启动参数就好了: `python Launch.py 151213` 如果你的系统有多个版本的Python: `python3 Launch.py 151213` 程序会打印你的余额,然后退出 --- ## 退出程序 - 在命令行中按下`Ctrl+C`即打断程序运行 - 登录微信后会产生一个缓存文件,如果缓存没有过期,再次运行程序可免登录 --- ## 后台运行 当你断开与远程服务器的链接、退出命令行后,所有在命令行运行的程序会死掉,所以要保持程序一直运行,你需要screen 你可以用screen来模拟一个永不掉线的命令行,要使用screen ,你得先安装它 *CentOS*: `yum -y install screen` *Debian*: `apt-get -y install screen` 创建一个新的screen,名叫watcher,**注意大小写** `screen -S watcher` 此时你已经创建并切换到了watcher,然后cd进监控程序的目录,用python启动 扫码登录成功后就可以断开命令行的链接了,名叫watcher的screen仍然在线,程序依然在运行。程序登录你的微信时,手机端上会显示你在网页端登录 --- 如果想退出程序,先 ` screen -r watcher` 切换至watcher界面,你可以看到监控仍在运行,` Ctrl+C`结束掉它,再输入`exit`退出并删除watcher界面 --- ## 开机启动 把`nohup python3 /<路径>/Launch.py`添加到/etc/rc.local的exit0之前即可 未测试,有待研究 --- ## 其他 - 关于Linux二进制可执行文件和exe Windows可执行文件,还没来得及弄。实在不懂的同学等我编译出exe再说吧 - 有时间的大佬可以帮忙编译下,用pyinstaller - 没怎么学Python,这是我用Python写的第一个程序,所以代码并不是很规范。如果你有时间,欢迎重构、贡献代码、提交Pull Request,如果遇到bug,也可以到issue提交 -