基于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 modern CSS selector implementation for BeautifulSoup

Soup Sieve Overview Soup Sieve is a CSS selector library designed to be used with Beautiful Soup 4. It aims to provide selecting, matching, and filter

Isaac Muse 151 Dec 23, 2022
Video Games Web Scraper is a project that crawls websites and APIs and extracts video game related data from their pages.

Video Games Web Scraper Video Games Web Scraper is a project that crawls websites and APIs and extracts video game related data from their pages. This

Albert Marrero 1 Jan 12, 2022
Bulk download tool for the MyMedia platform

MyMedia Bulk Content Downloader This is a bulk download tool for the MyMedia platform. USE ONLY WHERE ALLOWED BY THE COPYRIGHT OWNER. NOT AFFILIATED W

Ege Feyzioglu 3 Oct 14, 2022
This code will be able to scrape movies from a movie website and also provide download links to newly uploaded movies.

Movies-Scraper You are probably tired of navigating through a movie website to get the right movie you'd want to watch during the weekend. There may e

1 Jan 31, 2022
Complete pipeline for crawling online newspaper article.

Complete pipeline for crawling online newspaper article. The articles are stored to MongoDB. The whole pipeline is dockerized, thus the user does not need to worry about dependencies. Additionally, d

newspipe 4 May 27, 2022
Deep Web Miner Python | Spyder Crawler

Webcrawler written in Python. This crawler does dig in till the 3 level of inside addressed and mine the respective data accordingly

Karan Arora 17 Jan 24, 2022
Simple python tool for the purpose of swapping latinic letters with cirilic ones and vice versa in txt, docx and pdf files in Serbian language

Alpha Swap English This is a simple python tool for the purpose of swapping latinic letters with cirylic ones and vice versa, in txt, docx and pdf fil

Aleksandar Damnjanovic 3 May 31, 2022
Web mining module for Python, with tools for scraping, natural language processing, machine learning, network analysis and visualization.

Pattern Pattern is a web mining module for Python. It has tools for: Data Mining: web services (Google, Twitter, Wikipedia), web crawler, HTML DOM par

Computational Linguistics Research Group 8.4k Jan 08, 2023
Simple tool to scrape and download cross country ski timings and results from live.skidor.com

LiveSkidorDownload Simple tool to scrape and download cross country ski timings

0 Jan 07, 2022
京东秒杀商品抢购Python脚本

Jd_Seckill 非常感谢原作者 https://github.com/zhou-xiaojun/jd_mask 提供的代码 也非常感谢 https://github.com/wlwwu/jd_maotai 进行的优化 主要功能 登陆京东商城(www.jd.com) cookies登录 (需要自

Andy Zou 1.5k Jan 03, 2023
Scrapping Connections' info on Linkedin

Scrapping Connections' info on Linkedin

MohammadReza Ardestani 1 Feb 11, 2022
A scrapy pipeline that provides an easy way to store files and images using various folder structures.

scrapy-folder-tree This is a scrapy pipeline that provides an easy way to store files and images using various folder structures. Supported folder str

Panagiotis Simakis 7 Oct 23, 2022
A Python module to bypass Cloudflare's anti-bot page.

cloudflare-scrape A simple Python module to bypass Cloudflare's anti-bot page (also known as "I'm Under Attack Mode", or IUAM), implemented with Reque

3k Jan 04, 2023
Web scrapping tool written in python3, using regex, to get CVEs, Source and URLs.

searchcve Web scrapping tool written in python3, using regex, to get CVEs, Source and URLs. Generates a CSV file in the current directory. Uses the NI

32 Oct 10, 2022
a way to scrape a database of all of the isef projects

ISEF Database This is a simple web scraper which gets all of the projects and abstract information from here. My goal for this is for someone to get i

William Kaiser 1 Mar 18, 2022
Telegram group scraper tool

Telegram Group Scrapper

Wahyusaputra 2 Jan 11, 2022
Async Python 3.6+ web scraping micro-framework based on asyncio

Ruia 🕸️ Async Python 3.6+ web scraping micro-framework based on asyncio. ⚡ Write less, run faster. Overview Ruia is an async web scraping micro-frame

howie.hu 1.6k Jan 01, 2023
Grab the changelog from releases on Github

release-notes-scraper This simple script can be used to grab the release notes for projects from github that do not keep a CHANGELOG, but publish thei

Dan Čermák 4 Apr 01, 2022
Minimal set of tools to conduct stealthy scraping.

Stealthy Scraping Tools Do not use puppeteer and playwright for scraping. Explanation. We only use the CDP to obtain the page source and to get the ab

Nikolai Tschacher 88 Jan 04, 2023
script to scrape direct download links (ddls) from google drive index.

bhadoo Google Personal/Shared Drive Index scraper. A small script to scrape direct download links (ddls) of downloadable files from bhadoo google driv

sαɴᴊɪᴛ sɪɴʜα 53 Dec 16, 2022