dist sync for skyw git 11 months ago
thu_learn_downloader minor adjust 9 months ago
.gitignore minor adjust 9 months ago
CHANGELOG.md chore(main): release 0.3.1 (#119) 1 year ago
LICENSE chore: Update CI and build configurations 2 years ago
README.md minor adjust 9 months ago
requirements.txt minor adjust 9 months ago
README.md

THU Web Learning Downloader

Download everything from Web Learning of Tsinghua University

GitHub Workflow Status (with event)
PyPI - Python Version
PyPI - Version

Demo

Demo

The resulting file structure looks like:

thu-learn
└── Quantum Mechanics(1)
   ├── docs
   │  └── 电子教案
   │     ├── 01-0量子力学介绍1.pdf
   │     └── 04-0量子力学介绍2.pdf
   └── work
      └── 01-第一周作业
         ├── attach-第一周作业.pdf
         ├── submit-第一周作业.pdf
         └── README.md

Usage

Usage:

$ tld [OPTIONS]

Options:

  • -u, --username TEXT
  • -p, --password TEXT
  • --prefix DIRECTORY: [default: $HOME/thu-learn]
  • -s, --semester TEXT: [default: 2023-2024-1]
  • -c, --course TEXT
  • --document / --no-document: [default: document]
  • --homework / --no-homework: [default: homework]
  • -j, --jobs INTEGER: [default: 8]
  • -l, --language [en|zh]: [default: en]
  • --log-level [NOTSET|DEBUG|INFO|WARNING|ERROR|CRITICAL]: [env var: LOG_LEVEL; default: INFO]
  • --help: Show this message and exit.

Features

  • fast concurrent download
  • pretty TUI powered by rich
  • auto set mtime of downloaded files according to timestamp of remote file
  • auto skip download when local file is newer
  • dump homework details into README.md in each homework folder
  • pretty markdown files powered by prettier (require prettier installed)

Installation

  • download pre-built binary form GitHub Releases
  • pip install thu-learn-downloader
  • pipx install thu-learn-downloader

test run command

python.exe -m thu_learn_downloader.main

exe packing

  • run in project root:
  • please install playwright directly in venv using:
    $env:PLAYWRIGHT_BROWSERS_PATH="0"
    playwright install chromium
    (please refer to:https://playwright.dev/python/docs/library#pyinstaller)
    then:
    .\.venv\Scripts\pyinstaller.exe --onefile --clean --add-data "thu_learn_downloader/openssl.conf;thu_learn_downloader" .\thu_learn_downloader\main.py --runtime-hook .\thu_learn_downloader\hook.py
    .\thu-learn-downloader-windows-x86_64.exe -u [USERNAME] -p [PASSWORD] -s [SEMESTER]
    NOTICE THAT PASSWORD WILL NOT BE REDACTED!!!

then complete 2FA in prompted browser panel.
The download of selected semester will automatically start, or will quit if no valid semester is appointed.