需先单独安装 ffmpeg,否则部分功能不可用;Moodle 站点必须允许通过官方 Moodle App 访问,否则无法连接;config.json 中的 token 与 cookie.txt 等同账号凭证,需妥善保管
Moodle-DL
C0D3D3VGPL-3.0活跃维护从 Moodle 教学平台批量抓取并下载课程资料(讲义 PDF 等),支持同步更新,省去逐页手动点击的麻烦。
Moodle-DL downloads course content fast from Moodle (eg. lecture pdfs)
pip install moodle-dl
moodle-dl --initREADME 未说明;仅要求 Python >=3.8 并安装 ffmpeg,无 GPU 或显存要求
命令行工具,批量下载 Moodle 课程文件并推送更新通知,省去手动逐个下载
从 Moodle 教学平台批量抓取并下载课程资料(讲义 PDF 等),支持同步更新,省去逐页手动点击的麻烦。
核心能力
- 增量下载,只拉取尚未下载的新文件
- 下载作业、书籍、论坛、测验及外部视频链接
- 通过 Telegram、Discord、XMPP、邮件推送通知
- 通知中直接附带页面与论坛正文内容
- 内置配置向导,可选图形界面管理课程
容易踩的坑
- 2.3.13Minor bug fix 最新正式版2024-11-05 · 2024-11-05 15:10 UTC
Bug fixed
- If moodle returned
Noneaspage_contentof a lesson, moodle-dl crashed.
- If moodle returned
- 2.3.12Bug fix for Config Tools2024-10-09 · 2024-10-09 05:20 UTC
查看更新说明
Bug Fixes:
- When modifying config using the moodle-dl config tools, the config file was not truncate.
New Feature:
- Added support for notifications via ntfy by @khanxmetu
- 2.3.11Activated TLS ALPN extension2024-07-04 · 2024-07-04 12:46 UTC
查看更新说明
Changes
- Now the TLS ALPN extension is always activated so that moodle-dl can connect to the moodle instance even if it is behind a reverse proxy.
- 2.3.10More verbose SSO token errors2024-07-03 · 2024-07-03 08:08 UTC
这个版本没有写更新说明。
- 2.3.9Added option --use-all-ciphers2024-05-01 · 2024-05-01 17:41 UTC
查看更新说明
New Feature
- Added the option
--use-all-ciphers. You can use it if you get SSL errors because of missing ciphers. (Default: insecure ciphers are disabled)
- Added the option
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
moodle-dl is a console application that can download all the files from your Moodle courses that are necessary for your daily study routine. Furthermore, moodle-dl can notify you about various activities on your Moodle server. Notifications can be sent to Telegram, Discord, XMPP and Mail. The current implementation includes:
- Download files, assignments including submissions, books, calendar events, forums, workshops, lessons, quizzes, descriptions, as well as external links (OpenCast, Youtube, Sciebo, Owncloud, Kaltura, Helixmedia, Google drive,... videos/files).
- Notifications about all downloaded files
- Text from your Moodle courses (like pages, descriptions or forum posts) will be directly attached to the notifications, so you can read them directly in your messaging app.
- A configuration wizard is also included, allowing all settings to be made very easily.
- Running moodle-dl again will only download files that have not been downloaded yet. Do not miss any files, if files are deleted online, they are still available offline.
- It is possible to download Moodle courses you are enrolled in, as well as courses that are publicly visible to you.
Discussions about the development take place mainly on Github, but also on Discord.
🚀 Setup
- Install Python >=3.8
- Install ffmpeg
- Run
pip install moodle-dlas administrator. (To upgrade from an older Version usepip install -U moodle-dlinstead) - [Windows only]
You may need to install Visual C++ compiler for Python to build all the dependencies successfully:
- Download and Install Microsoft Build Tools for Visual Studio 2019 from here
- In Build tools, install C++ build tools and ensure the latest versions of MSVCv142 - VS 2019 C++ x64/x86 build tools and Windows 10 SDK are checked.
- In some very edge cases, you may also need Visual C++ 14.0 Redistrubution Packages
If you run the program on Windows, please use Powershell or CMD. Please do not use a mintty like MINGW or similar.
- Run
moodle-dl --helpto see all available options.
GUI (optional)
A graphical interface is available for login, course configuration, download management, and settings — no command line needed.
- Install the GUI dependency:
pip install "moodle-dl[gui]" - Launch with:
moodle-dl --gui
Requires PySide6 >= 6.5.0. If PySide6 is not installed, the command prints a helpful error and exits.
Usage
Moodle-dl uses the Moodle mobile API. If your Moodle does not allow access via the Moodle app, Moodle-dl will not be able to connect to your Moodle.
If you don't want moodle-dl to use the current working directory, then you should set the --path option on all commands.
-
moodle-dl --init- Create an initial configuration. A CLI configuration wizard will lead you through the initial configuration.
- If you have to log in with Single Sign On (SSO, something like Shibboleth or OAuth2), you can set the option
--ssoadditionally. - If at any point in time, the saved token gets rejected by Moodle use
moodle-dl --new-tokeninstead - To automate the login you can use the additional options
--usernameand--passwordor--token.
-
moodle-dl- After configuring moodle-dl, this command is sufficient to download all files from your Moodle account and notify you about the result.
-
moodle-dl --config- A CLI configuration wizard will lead you through the additional configuration of moodle-dl.
- You can start the wizard after the initial configuration if you want to change any of the settings.
- The wizard allows you to change nearly all settings of moodle-dl
- select the courses that will be downloaded
- rename each course individually
- decide if subfolders should be created inside a course folder
- set whether submissions (files uploaded to assignments by yourself or a teacher), descriptions, links inside descriptions, databases, quizzes, lessons, workshops and forum discussions should be downloaded
- set if external files should be downloaded (files like Youtube videos)
- set if files on moodle that require a cookie should be downloaded
- to add extra courses to your download list which you can see but you are not enrolled in, check out this wiki entry
- Not all moodle-dl settings are available in the CLI configuration wizard for configuration, see the wiki for more available options.
By default a private token is stored in the initial configuration, this is only needed for special Moodle modules that cannot be queried via the Moodle API. If no such module is available in your Moodle you are welcome to delete this token.
If you need help configuring telegram notifications click here
Notes
- Use a separate E-Mail/XMPP - Account for sending out the notifications, as its login data is saved in cleartext.
- The Login-Information for your Moodle-Account is secure, it isn't saved in any way. Only a Login-Token is saved.
- Your Moodle token is stored in the configuration file (
config.json). Be careful that no unauthorized person reads this file, especially the token must not be given to an unauthorized person, this can cause a lot of trouble. - The
privatetokencan be used to create a cookie for your Moodle account. A Cookie is what is used to tell Moodle that you are logged in. Thecookie.txtalways keeps a valid cookie for you, take great care of this file, if it falls into the wrong hands someone can take over your entire Moodle account. This feature is only important for Moodles with plugins installed that are not supported by the Moodle app. If you do not want to generate cookies, remove theprivatetokenfrom theconfig.json.
Alternativ downloader
- Written with node.js
- Has a nice GUI that allows you to sync your courses easily
- Is only built for the moodle of the Polytechnic University of Milan
- Has pretty much the same goals as moodle-dl
- Is only built for the moodle of the Rhenish-Westphalian Technical University (RWTH) Aachen
- Is built in Rust and therefore quite fast
- Uses a web scraper instead of the moodle mobile API
- It has some interesting commands implemented to download only specific content
- Is only built for the moodle of the Munich University of Technology (TUM)
- Plugin for Firefox and Chrome
- Mass file download and notification functionality for the Moodle
- A chrome extension for batch downloading Moodle resources
- Utilizes moodle-dl to send moodle files via Discord
- Discord Notification Service for your moodle courses
If someone wants to link another downloader here, which offers e.g. functions that moodle-dl does not offer, feel free to open an issue.
🏆 Contributing
You would like to become a maintainer of this project? Then contact me!
Do you have a great new feature idea or just want to be part of the project? Awesome! Every contribution is welcome! If you want to find out more about how to contribute to the project, please check out our CONTRIBUTING.md!
⚖️ License
This project is licensed under the GPL-3.0 License - see the LICENSE file for details
