Un outil en ligne de commande (CLI) Python performant, multithreadé et complet pour télécharger l'intégralité des cours vidéo sur O'Reilly Learning (learning.oreilly.com), avec organisation arborescente par chapitres, extraction des flux HLS haute qualité et génération/traduction automatique des sous-titres (.en.srt et .fr.srt).
- đ Arborescence & Nommage Impeccable :
- Crée un dossier principal pour le cours (ex:
Certified Kubernetes Administrator (CKA)ouLPIC-1 Linux Administrator). - Organise automatiquement les sous-dossiers numérotés par chapitre (ex:
01. Course Introduction/,02. Introduction/,03. Cluster Architecture.../). - Détecte avec précision les vidéos d'introduction racine et les modules hiérarchiques.
- Nomme chaque vidéo et fichier de sous-titres avec son numéro d'ordre (ex:
01. Overview.mp4,01. Overview.en.srt,01. Overview.fr.srt).
- Crée un dossier principal pour le cours (ex:
- ⥠Téléchargement Multithreadé & Haute Performance :
- Téléchargement simultané de plusieurs vidéos (
-t / --threads). - Téléchargement parallÚle des segments TS HLS pour chaque vidéo (
--segment-threads). - Remuxage propre via
ffmpeg(sans ré-encodage, 100% sans perte de qualité).
- Téléchargement simultané de plusieurs vidéos (
- đ Reprise Intelligente (
skip_existing) & Détection de Traduction Réelle :- Ignore les vidéos déjà complÚtes.
- Vérifie que les fichiers de sous-titres traduits (
.fr.srt) ne contiennent pas du texte anglais résiduel et les corrige automatiquement si nécessaire.
- đŹ Extraction & Traduction Automatique des Sous-titres :
- Télécharge le fichier original anglais (
.en.srt) depuis l'API O'Reilly ou via les assets directs Kaltura. - Traduit automatiquement les sous-titres dans la langue de votre choix (
.fr.srt,.es.srt,.de.srt, etc.) ou permet de désactiver la traduction (--lang none). - Passe finale de vérification et rattrapage automatique pour garantir 100% de complétion.
- Télécharge le fichier original anglais (
- âïž Fichier de Configuration YAML + Options CLI :
- Toutes les options sont configurables dans
config.yamlou directement via les arguments de commande.
- Toutes les options sont configurables dans
- đ Interface Console Moderne :
- Barres de progression stylisées (
rich), affichage du plan de cours détaillé et récapitulatif en temps réel.
- Barres de progression stylisées (
- đ Interruption propre (Ctrl+C) :
- Annulation immédiate des téléchargements en cours sans trace d'erreur Python (pas de crash de stacktrace).
Pour accéder à vos cours, le script a besoin d'un cookie de session authentifié :
- Installez l'extension de navigateur Cookie-Editor (disponible sur Chrome, Firefox, Edge).
- Connectez-vous sur votre compte learning.oreilly.com.
- Cliquez sur l'icĂŽne de l'extension Cookie-Editor dans votre navigateur.
- Cliquez sur le bouton Export en bas à droite, puis sélectionnez Export as JSON.
- Enregistrez le contenu dans un fichier (par exemple
mycookies.jsonoucookies.json). - Passez le chemin du fichier avec l'option
--cookies "/chemin/vers/mycookies.json"ou configurez-le dansconfig.yaml.
oreilly-dl-cli/
âââ oreilly-dl # Script exĂ©cutable / Lanceur universel
âââ config.yaml # Fichier de configuration par dĂ©faut
âââ requirements.txt # DĂ©pendances Python
âââ oreilly_dl/ # Package Python principal
â âââ __init__.py
â âââ cli.py # Interface CLI, reprise & rattrapage de sous-titres
â âââ client.py # Client API O'Reilly & extraction Kaltura avec gestion des tokens
â âââ downloader.py # Moteur de tĂ©lĂ©chargement HLS multithread
â âââ subtitles.py # Traitement SRT & moteur de traduction multi-tiers rapide
âââ README.md # Documentation complĂštecd /home/dr4x3n/oreilly/oreilly-dl-cli
# 1. Créer l'environnement virtuel Python
python3 -m venv .venv
# 2. Installer les dépendances requises
.venv/bin/pip install -r requirements.txt./oreilly-dl "https://learning.oreilly.com/course/certified-kubernetes-administrator/0642572014448/" \
--cookies "/home/dr4x3n/oreilly/mycookies.json" \
-o "/home/dr4x3n/data/Disque-D/cours" \
-q best \
-l fr \
-t 4./oreilly-dl "0642572014448" --cookies "/home/dr4x3n/oreilly/mycookies.json" --info-only./oreilly-dl "0642572014448" --cookies "/home/dr4x3n/oreilly/mycookies.json" --force| Option | Raccourci | Description | Défaut |
|---|---|---|---|
url |
- | URL du cours ou identifiant ISBN (ex: 0642572014448, 9781835885406) |
(Obligatoire) |
--config |
-c |
Chemin du fichier de configuration YAML | config.yaml |
--cookies |
- | Chemin vers le fichier JSON des cookies (exporté via Cookie-Editor) | ./learning.oreilly.com_json_... |
--output |
-o |
Répertoire de destination des téléchargements | ./downloads |
--quality |
-q |
Qualité vidéo (best, 1080p, 720p, 540p, 480p, 360p, worst) |
best |
--lang |
-l |
Langue du second sous-titre traduit (fr, es, de, none...) |
fr |
--threads |
-t |
Nombre max de vidéos téléchargées en simultané | 3 |
--segment-threads |
- | Nombre de threads pour les segments HLS d'une vidéo | 8 |
--no-subtitles |
- | Désactiver le téléchargement des sous-titres | False |
--force |
- | Forcer le re-téléchargement complet | False |
--info-only |
- | Affiche le plan du cours sans lancer de téléchargement | False |
downloads/
âââ Certified Kubernetes Administrator (CKA) Certification Course/
âââ 01. Course Introduction/
â âââ 01. Course Introduction.mp4
â âââ 01. Course Introduction.en.srt
â âââ 01. Course Introduction.fr.srt
âââ 02. Introduction/
â âââ 01. Lesson 1.1.1: Overview and Objectives.mp4
â âââ 01. Lesson 1.1.1: Overview and Objectives.en.srt
â âââ 01. Lesson 1.1.1: Overview and Objectives.fr.srt
â âââ ...
âââ 03. Cluster Architecture, Installation, and Configuration/
â âââ 01. Lesson 2.0.1: Domain Objectives.mp4
â âââ 01. Lesson 2.0.1: Domain Objectives.en.srt
â âââ 01. Lesson 2.0.1: Domain Objectives.fr.srt
â âââ ...
âââ ...