基于Github Action的定时HITsz疫情上报脚本,开箱即用

Overview

HITsz Daily Report

基于 GitHub Actions 的「HITsz 疫情系统」访问入口 定时自动上报脚本,开箱即用。

感谢 @JellyBeanXiewh 提供原始脚本和 idea。
感谢 @bugstop 对脚本进行重构并新增 Easy Connect 校内代理访问。

使用方法

  1. Fork 仓库
  2. 设置仓库的 Actions Secrets 如何设置?
    添加用户名 USERNAME 和密码 PASSWORD ,以及可选的 GRADUATINGAPI_KEY
    Name Value
    USERNAME HITsz 统一身份认证用户名(学号)
    PASSWORD HITsz 统一身份认证密码
    GRADUATING 毕业班请设为 1 ,非毕业班学生请留空(不设置)
    API_KEY 微信推送的 sckey 如何申请?,不需要请留空(不设置)
  3. 开启 GitHub Actions 如何开启?
  4. 每天早上 7:00 23:00 UTC 定时自动运行
    如果填写 API_KEY ,即可在微信上收到运行结果推送(由 Server 酱提供)
    或者你可以打开 GitHub Actions 执行的全局邮件通知 如何开启?,包括成功或失败信息

Change Log

参阅 Releases 列表。

You might also like...
Comments
  • 2021.9.15脚本执行失败

    2021.9.15脚本执行失败

    执行log

    2021-09-15 00:40:13,420 - INFO - 非毕业班学生,微信提醒开启,VPN 开启。
    2021-09-15 00:40:18,444 - INFO - 认证系统登录成功。
    2021-09-15 00:40:18,955 - CRITICAL - 上报失败!其他错误:Expecting value: line 2 column 1 (char 1)
    2021-09-15 00:40:20,827 - INFO - 微信提醒消息已发送。
    Traceback (most recent call last):
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 236, in <module>
        main(arguments)
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 214, in main
        module_id = r.student_report_check()
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 143, in student_report_check
        result = response.json()
      File "/opt/hostedtoolcache/Python/3.9.6/x64/lib/python3.9/site-packages/requests/models.py", line 910, in json
        return complexjson.loads(self.text, **kwargs)
      File "/opt/hostedtoolcache/Python/3.9.6/x64/lib/python3.9/json/__init__.py", line 346, in loads
        return _default_decoder.decode(s)
      File "/opt/hostedtoolcache/Python/3.9.6/x64/lib/python3.9/json/decoder.py", line 337, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/opt/hostedtoolcache/Python/3.9.6/x64/lib/python3.9/json/decoder.py", line 355, in raw_decode
        raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 1)
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 248, in <module>
        raise ReportException(report_msg)
    __main__.ReportException: 上报失败!其他错误:Expecting value: line 2 column 1 (char 1)
    Error: Process completed with exit code 1.
    

    可能是由于疫情上报系统启用了自动定位所致?

    bug working on it 
    opened by lizbaka 7
  • 【Action 执行失败】登陆失败!原因:无可用代理。

    【Action 执行失败】登陆失败!原因:无可用代理。

    错误信息如下

    Run python report.py "$USERNAME" "$PASSWORD" -g="$GRADUATING" -k="$API_KEY" -p
    2021-10-06 23:08:39,621 - INFO - 非毕业班学生,微信提醒关闭,VPN 开启。
    2021-10-06 23:10:48,911 - ERROR - HTTPSConnectionPool(host='xgsm.hitsz.edu.cn', port=443): Max retries exceeded with url: /zhxy-xgzs/xg_mobile/shsj/common (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fe9c8a4ab20>: Failed to establish a new connection: [Errno 110] Connection timed out'))
    2021-10-06 23:10:48,912 - WARNING - 开启代理,将在 2 秒后重试。
    2021-10-06 23:15:13,103 - ERROR - 登陆失败!原因:无可用代理。
    Traceback (most recent call last):
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/connection.py", line 174, in _new_conn
        conn = connection.create_connection(
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/util/connection.py", line 96, in create_connection
        raise err
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/util/connection.py", line 86, in create_connection
        sock.connect(sa)
    TimeoutError: [Errno 110] Connection timed out
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
        httplib_response = self._make_request(
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/connectionpool.py", line 382, in _make_request
        self._validate_conn(conn)
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/connectionpool.py", line 1010, in _validate_conn
        conn.connect()
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/connection.py", line 358, in connect
        conn = self._new_conn()
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn
        raise NewConnectionError(
    urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fe9c8a4ab20>: Failed to establish a new connection: [Errno 110] Connection timed out
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
        resp = conn.urlopen(
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
        retries = retries.increment(
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/urllib3/util/retry.py", line 574, in increment
        raise MaxRetryError(_pool, url, error or ResponseError(cause))
    urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xgsm.hitsz.edu.cn', port=443): Max retries exceeded with url: /zhxy-xgzs/xg_mobile/shsj/common (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fe9c8a4ab20>: Failed to establish a new connection: [Errno 110] Connection timed out'))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 214, in main
        r.student_login()
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 104, in student_login
        response = self.session.get(url_sso, proxies=self.proxies)
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/requests/sessions.py", line 555, in get
        return self.request('GET', url, **kwargs)
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
        resp = self.send(prep, **send_kwargs)
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
        r = adapter.send(request, **kwargs)
      File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/requests/adapters.py", line 516, in send
        raise ConnectionError(e, request=request)
    requests.exceptions.ConnectionError: HTTPSConnectionPool(host='xgsm.hitsz.edu.cn', port=443): Max retries exceeded with url: /zhxy-xgzs/xg_mobile/shsj/common (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fe9c8a4ab20>: Failed to establish a new connection: [Errno 110] Connection timed out'))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 249, in <module>
        main(arguments)
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 224, in main
        r.switch_proxies(r.student_login)
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 97, in switch_proxies
        raise ReportException.LoginError("无可用代理。")
    __main__.LoginError: 无可用代理。
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 254, in <module>
        raise ReportException(report_msg)
    __main__.ReportException: 登陆失败!原因:无可用代理。
    Error: Process completed with exit code 1.
    
    opened by BurgessX 2
  • 最近还是一直运行失败

    最近还是一直运行失败

    Run python report.py "$USERNAME" "$PASSWORD" -g="$GRADUATING" -k="$API_KEY" -p python report.py "$USERNAME" "$PASSWORD" -g="$GRADUATING" -k="$API_KEY" -p shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0} env: pythonLocation: /opt/hostedtoolcache/Python/3.9.7/x64 LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.9.7/x64/lib USERNAME: *** PASSWORD: *** GRADUATING: API_KEY: 2021-09-26 01:52:30,374 - INFO - 非毕业班学生,微信提醒关闭,VPN 开启。 2021-09-26 01:52:35,486 - INFO - 认证系统登录成功。 2021-09-26 01:52:36,028 - CRITICAL - 上报失败!其他错误:Expecting value: line 2 column 1 (char 1) Traceback (most recent call last): File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 236, in main(arguments) File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 214, in main module_id = r.student_report_check() File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 143, in student_report_check result = response.json() File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/site-packages/requests/models.py", line 910, in json return complexjson.loads(self.text, **kwargs) File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/json/init.py", line 346, in loads return _default_decoder.decode(s) File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/opt/hostedtoolcache/Python/3.9.7/x64/lib/python3.9/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 1)

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "/home/runner/work/HITsz-daily-report/HITsz-daily-report/report.py", line 248, in raise ReportException(report_msg) main.ReportException: 上报失败!其他错误:Expecting value: line 2 column 1 (char 1) Error: Process completed with exit code 1.

    opened by 45153 0
Releases(v1.0)
  • v1.0(May 5, 2021)

    已经稳定运行1个月,发布首个正式版。

    功能列表

    • 每日定时新增记录并填写
    • 可选是否为毕业班学生
    • 消息通知:目前支持 微信推送(由 Server 酱 提供,也可手动开启 GitHub Actions 执行的全局邮件通知 如何开启?

    Change log:

    • 修复一系列bug + 代码重构
    • 新增 毕业班 选项 #8 #4
    • 由于疫情上报系统限制内网访问,因而接入了Easy Connect #7
    Source code(tar.gz)
    Source code(zip)
A Spider for BiliBili comments with a simple API server.

BiliComment A spider for BiliBili comment. Spider Usage Put config.json into config directory, and then python . ./config/config.json. A example confi

Hao 3 Jul 05, 2021
This program scrapes information and images for movies and TV shows.

Media-WebScraper This program scrapes information and images for movies and TV shows. Summary For more information on the program, read the WebScrape_

1 Dec 05, 2021
Meme-videos - Scrapes memes and turn them into a video compilations

Meme Videos Scrapes memes from reddit using praw and request and then converts t

Partho 12 Oct 28, 2022
Web scraped S&P 500 Data from Wikipedia using Pandas and performed Exploratory Data Analysis on the data.

Web scraped S&P 500 Data from Wikipedia using Pandas and performed Exploratory Data Analysis on the data. Then used Yahoo Finance to get the related stock data and displayed them in the form of chart

Samrat Mitra 3 Sep 09, 2022
A Powerful Spider(Web Crawler) System in Python.

pyspider A Powerful Spider(Web Crawler) System in Python. Write script in Python Powerful WebUI with script editor, task monitor, project manager and

Roy Binux 15.7k Jan 04, 2023
Console application for downloading images from Reddit in Python

RedditImageScraper Console application for downloading images from Reddit in Python Introduction This short Python script was created for the mass-dow

James 0 Jul 04, 2021
A Python package that scrapes Google News article data while remaining undetected by Google.

A Python package that scrapes Google News article data while remaining undetected by Google. Our scraper can scrape page data up until the last page and never trigger a CAPTCHA (download stats: https

Geminid Systems, Inc 6 Aug 10, 2022
python+selenium实现的web端自动打卡 + 每日邮件发送 + 金山词霸 每日一句 + 毒鸡汤(从2月份稳定运行至今)

python+selenium实现的web端自动打卡 说明 本打卡脚本适用于郑州大学健康打卡,其他web端打卡也可借鉴学习。(自己用的,从2月分稳定运行至今) 仅供学习交流使用,请勿依赖。开发者对使用本脚本造成的问题不负任何责任,不对脚本执行效果做出任何担保,原则上不提供任何形式的技术支持。 为防止

Sunday 1 Aug 27, 2022
Scrapy, a fast high-level web crawling & scraping framework for Python.

Scrapy Overview Scrapy is a fast high-level web crawling and web scraping framework, used to crawl websites and extract structured data from their pag

Scrapy project 45.5k Jan 07, 2023
The open-source web scrapers that feed the Los Angeles Times California coronavirus tracker.

The open-source web scrapers that feed the Los Angeles Times' California coronavirus tracker. Processed data ready for analysis is available at datade

Los Angeles Times Data and Graphics Department 51 Dec 14, 2022
Dude is a very simple framework for writing web scrapers using Python decorators

Dude is a very simple framework for writing web scrapers using Python decorators. The design, inspired by Flask, was to easily build a web scraper in just a few lines of code. Dude has an easy-to-lea

Ronie Martinez 326 Dec 15, 2022
Scrapping the data from each page of biocides listed on the BAUA website into a csv file

Scrapping the data from each page of biocides listed on the BAUA website into a csv file

Eric DE MARIA 1 Nov 30, 2021
Parse feeds in Python

feedparser - Parse Atom and RSS feeds in Python. Copyright 2010-2020 Kurt McKee Kurt McKee 1.5k Dec 30, 2022

Download images from forum threads

Forum Image Scraper Downloads images from forum threads Only works with forums which doesn't require a login to view and have an incremental paginatio

9 Nov 16, 2022
An introduction to free, automated web scraping with GitHub’s powerful new Actions framework.

An introduction to free, automated web scraping with GitHub’s powerful new Actions framework Published at palewi.re/docs/first-github-scraper/ Contrib

Ben Welsh 15 Nov 24, 2022
Web scrapper para cotizar articulos

WebScrapper Este web scrapper esta desarrollado en python 3.10.0 para buscar en la pagina de cyber puerta articulos dentro del catalogo. El programa t

Jordan Gaona 1 Oct 27, 2021
Unja is a fast & light tool for fetching known URLs from Wayback Machine

Unja Fetch Known Urls What's Unja? Unja is a fast & light tool for fetching known URLs from Wayback Machine, Common Crawl, Virus Total & AlienVault's

Sheryar 10 Aug 07, 2022
Using Selenium with Python to Web Scrap Popular Youtube Tech Channels.

Web Scrapping Popular Youtube Tech Channels with Selenium Data Mining, Data Wrangling, and Exploratory Data Analysis About the Data Web scrapi

David Rusho 0 Aug 18, 2021
A repository with scraping code and soccer dataset from understat.com.

UNDERSTAT - SHOTS DATASET As many people interested in soccer analytics know, Understat is an amazing source of information. They provide Expected Goa

douglasbc 48 Jan 03, 2023
A simple python script to fetch the latest covid info

covid-tracker-script A simple python script to fetch the latest covid info How it works First, get the current date in MM-DD-YYYY format. Check if the

Dot 0 Dec 15, 2021