.github chore(repo): sync with repository template 1 year ago
.idea remove unnecessary content for tidier development 12 months ago
thu_learn_downloader pyinstaller pack and ssl error ignoring 12 months ago
.gitignore pyinstaller pack and ssl error ignoring 12 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 remove unnecessary content for tidier development 12 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