GithubHelp home page GithubHelp logo

thethirdghost / njmu-report Goto Github PK

View Code? Open in Web Editor NEW

This project forked from timeonfly/njmu-report

0.0 0.0 0.0 859 KB

南京医科大学今日校园自动打卡

License: MIT License

Python 100.00%

njmu-report's Introduction

NJMU自动打卡

GitHub Pipenv locked Python version GitHub GitHub Repo stars

⚠️严正声明

学校的健康打卡制度是国家疫情防控的重要一环,违反疫情防控有关规定需承担刑事责任.此项目仅供学习交流,不可用于违法违规用途.使用本项目造成的任何后果使用者自行承担

⚙️快速使用

本项目通过腾讯云函数部署,可以实现每日健康日报的自动打卡,防止您因繁忙的工作或学习,亦或是睡懒觉而忘记了健康日报的填写。使用步骤如下:

  1. 下载Release中的depency.zip文件,此为云函数依赖文件
  2. 下载Release中的run.zip文件,此为运行函数
  3. 请注意run.zip中的文件版本较为落后,一些bug可能未及时修复,建议clone本项目到本地或是下载源码
    使用以下命令clone本项目到本地
    git clone https://github.com/TimeonFly/NJMU-Report.git
  4. 解压run.zip或clone本项目到本地后,安装好依赖,填写ID.yaml文件 ,填写后运行getinfo.py,此函数用于获取您昨天填写的信息,并自动去除几个由index.py文件自动生成的参数
  5. 运行getinfo.py后,疫情打卡提交信息.txt文件已有内容后,压缩文件夹,待上传云函数
  6. run.zip文件中的index.py等文件版本较为落后,建议您下载源文件,替换run.zip文件中的文件以保持最新版本

🧩环境依赖

由于腾讯云函数目前仅支持python3.6及3.7版本,且3.7版本缺乏必要的依赖库,因此本项目使用Python3.6开发。建议您使用Anaconda创建虚拟环境,并进行虚拟环境下依赖库管理,建议使用Pycharm编辑并运行代码。

Anaconda

解压run.zip后,在解压的文件夹目录下打开cmd运行此命令conda install --yes --file requirements.txt,安装依赖。关于将conda添加到环境变量,您可以访问此网页

PIP

如果您使用的是pip安装指令,在解压的文件夹目录下打开cmd运行此命令pip install -r requirements.txt,以安装依赖,关于将pip添加到环境变量,您可以访问此网页

pipenv

在Pycharm中使用pipenv创建环境时,会自动根据requirements.txt文件安装所需依赖,如果下载依赖库速度慢,您可以科学上网或将Pipfile文件中的[[source]]下的url更改为https://mirrors.aliyun.com/pypi/simple, 有关pipenv环境的创建及激活,您可以参考此链接或是自行搜索

项目依赖的库如下:

详见requirements.txt文件

由于腾讯云函数的限制,此处的pyyaml库并不是最新版本,使用的是旧版本开发,如果使用最新版本可能出现报错的情况,如有报错请根据报错信息,自行搜索替换函数

requests==2.27.1
pyyaml==3.12
pydes==2.0.1
pycryptodome==3.10.1

🛠️打卡配置

ID.yaml文件中按备注填写网上办事大厅的用户名(username)、密码(password);发送邮件的邮箱(sender),邮件授权码(password),接受邮件的邮箱地址(receivers),以及邮箱smtp服务器(smtp_server)等信息。

☁️云函数部署

目前腾讯云函数已开始进行收费,新用户前6个月免费,建议通过学生身份购买学生优惠的套餐

使用腾讯云函数实现自动打卡,部署步骤如下:(如果您无法看到图片,您可以参考此链接修改hosts文件,或是采用科学上网)

展开查看
  1. 点击上方腾讯云函数超链接,注册认证后,进入控制台,点击左边的层。

    step1

  2. 点击新建,名称随意,然后点击上传zip,选择release中的dependency.zip上传,然后选择运行环境python3.6,然后点击确定。

    step2

  3. 点击左边的函数服务,新建云函数,名称随意,运行环境选择python3.6,创建方式选择空白函数,按如下步骤后,点击完成。

    step3

  4. 点击层管理,点击绑定,选中刚刚创建的层,点击确定。

    step4

  5. 左边点击触发管理,创建触发器,名称随意,触发周期选择自定义,然后配置cron表达式,下面的表达式表示每天早上7点55分执行,如果需要自定义,请参考腾讯云函数cron表达式帮助文档

    0 55 7 * * * *

    step5

  6. 然后就可以测试云函数了,绿色代表云函数执行成功,红色代表云函数执行失败(失败的原因大部分是由于依赖造成的)。返回结果是success.,代表自动提交成功,如遇到问题,请仔细查看日志。

  7. 新版本的云函数的时间参数经过重新调整,不再需要手动输入打卡时间,而改为自动获取。但云函数中的时区为 UTC+0,不是 UTC+8,在云函数中使用时间时需特别注意。需要将其设置为 UTC+8,可以配置函数的环境变量,设置 TZAsia/Shanghai

    step7

📊苏康码截图

截图采用网络上提供的api,每月有100张免费的额度,已够用,数据采用保存在内存中的方式。

📰消息提醒

本项目使用邮件提醒您自动打卡是否成功,可能日后会有微信提醒。请按打卡配置配置好ID.yaml文件,邮件授权码以163邮箱为例。

step6

🖥️开发者

如果你也懂得一些python知识,欢迎fork...定制属于你自己的脚本

学校的健康日报打卡有多个入口:

  • 今日校园
  • 微门户
  • 网上办事大厅

由于安卓抓包较为繁琐,所以本项目是基于网上办事大厅这个入口开发的,如果代码运行有问题,你可以通过网上办事大厅进入健康日报打卡,按下F12打开开发者工具,进行抓包分析。此外,苏康码的截图需要浏览器渲染,受制于腾讯云函数的限制,很难在云函数中实现,如果你有好的解决方法,欢迎提交commit

目前截图的问题,考虑到截图还需要保存到本地,云函数也无法提供文件保存这一功能(或许可以保存为二进制文件于内存中),所以目前较好的解决方法是本地使用selenium进行截图,但这个方法需要电脑每天定时开机,云端的话使用云服务器较好,但有一定的费用,鉴于学校已经很久没有收集截图了,所以暂时搁置,如果你需要提交截图的话,可以采用本地的方法

🎯目标

  • 是否需要截图验证
  • 苏康码截图
  • ***截图
  • 微信打卡提醒
  • 时间参数匹配

❤️致谢

此项目参考了@ZimoLoveShuang大佬的 auto-submit项目,尤其是本项目的encrypt.py文件,非常感谢。

感谢JetBrains提供的 PyCharm 教育版软件

📨 联系我

如果您有建议或者bug提交,您可以通过Issues提交或是通过此邮箱[email protected]联系我

njmu-report's People

Contributors

timeonfly avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.