A powerful, high-performance Python CLI for downloading O'Reilly Learning courses, books, and audiobooks for offline personal use. It supports video courses, EPUB generation, audiobook downloads, interactive web readers, transcripts, and a premium offline library dashboard.
Architecture: The project is built as a modern Python package managed with uv, providing fast dependency management, clean installation, and cross-platform support.
- Download complete O'Reilly video courses
- Download audiobooks as high-quality
.m4a - Download books as standard
.epub - Generate interactive offline HTML web readers
- Extract timestamped video transcripts
- Transcripts-only mode for fast text extraction
- Premium Apple Books-inspired dashboard
- Automatic library indexing
- Fast search
- Reading progress
- Persistent custom tags
- Keyboard navigation
- Dark & Light themes
- Automatic cover image detection
- API-first resolver
- Selenium fallback
- Manual login mode
- Persistent browser profiles
- Parallel downloads
- Dead Letter Queue logging
- Detailed debug logging
- Python 3.12+
- uv
- ffmpeg
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh# Windows
choco install ffmpeg
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeguv run oreilly-dl "COURSE_URL"uv run oreilly-dl "BOOK_URL"uv run oreilly-dl "BOOK_URL" --web-viewerBooks downloaded using --web-viewer are automatically registered
inside the Offline Library Dashboard.
uv run oreilly-dl "AUDIOBOOK_URL" --audiobookuv run oreilly-dl "COURSE_URL" --transcripts-onlyuv run oreilly-dl --manual-loginThe Offline Library Dashboard provides a centralized interface for browsing, organizing, and reading downloaded books.
Unified Library Dashboard
Metadata Inspector Drawer
Interactive Local eBook Reader
- Apple Books-inspired design
- Fast search
- Metadata inspector
- Custom tag editing
- Keyboard shortcuts
- Responsive layout
- Automatic cover detection
Key Action
β / β Navigate books Space Toggle details drawer Enter Open reader / or Ctrl+K Focus search ? Show keyboard shortcuts
After downloading one or more books with the --web-viewer option, the
Offline Library Dashboard is generated under:
downloads/
βββ books/
βββ data/
βββ index.html
βββ library_state.json
βββ serve_library.py
βββ start_library.bat
βββ start_library.sh
To start the local library server:
- Windows: Double-click
start_library.bat - Linux/macOS: Run
./start_library.sh
The launcher starts a lightweight local web server and automatically opens the Offline Library Dashboard in your default browser.
Note: The dashboard is generated for books downloaded using the
--web-vieweroption.
downloads/
βββ books/
β βββ data/ # Downloaded EPUBs & Web Reader assets
β βββ index.html # Offline Library Dashboard
β βββ library_state.json # Library metadata & custom tags
β βββ serve_library.py # Local HTTP server
β βββ start_library.bat # Windows launcher
β βββ start_library.sh # Linux/macOS launcher
βββ courses/ # Video & audio course downloads
βββ audiobooks/ # Audiobook downloads (.m4a)
The launcher scripts provide the easiest way to start the Offline Library Dashboard:
- Windows:
start_library.bat - Linux/macOS:
./start_library.sh
uv run pytestuv run oreilly-dl --helpuv run oreilly-dl --manual-loginVerify that ffmpeg is installed and available in your system PATH.
uv run oreilly-dl "COURSE_URL" --debugThis project is intended for educational purposes and personal offline archiving. Users are responsible for complying with O'Reilly Media's Terms of Service and applicable copyright laws.
MIT License.


