.github chore(repo): sync with repository template 1 year ago
dist initial for skyw_git 11 months ago
thu_learn_downloader minor adjust 11 months ago
.gitignore initial for skyw_git 11 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 pyinstaller pack and ssl error ignoring 12 months ago
requirements.txt initial for skyw_git 11 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:
    ..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