Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎬 O'Reilly Course & Video Downloader CLI (oreilly-dl)

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).


🌟 FonctionnalitĂ©s

  • 📁 Arborescence & Nommage Impeccable :
    • CrĂ©e un dossier principal pour le cours (ex: Certified Kubernetes Administrator (CKA) ou LPIC-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).
  • ⚡ 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Ă©).
  • 🔄 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.
  • ⚙ Fichier de Configuration YAML + Options CLI :
    • Toutes les options sont configurables dans config.yaml ou directement via les arguments de commande.
  • 📊 Interface Console Moderne :
    • Barres de progression stylisĂ©es (rich), affichage du plan de cours dĂ©taillĂ© et rĂ©capitulatif en temps rĂ©el.
  • 🛑 Interruption propre (Ctrl+C) :
    • Annulation immĂ©diate des tĂ©lĂ©chargements en cours sans trace d'erreur Python (pas de crash de stacktrace).

đŸȘ Export des Cookies O'Reilly

Pour accéder à vos cours, le script a besoin d'un cookie de session authentifié :

  1. Installez l'extension de navigateur Cookie-Editor (disponible sur Chrome, Firefox, Edge).
  2. Connectez-vous sur votre compte learning.oreilly.com.
  3. Cliquez sur l'icĂŽne de l'extension Cookie-Editor dans votre navigateur.
  4. Cliquez sur le bouton Export en bas à droite, puis sélectionnez Export as JSON.
  5. Enregistrez le contenu dans un fichier (par exemple mycookies.json ou cookies.json).
  6. Passez le chemin du fichier avec l'option --cookies "/chemin/vers/mycookies.json" ou configurez-le dans config.yaml.

📁 Structure du Projet

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ùte

🚀 Installation Rapide

cd /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

đŸ› ïž Utilisation

1. Télécharger un cours complet

./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

2. Afficher uniquement le sommaire et la durée du cours (sans télécharger)

./oreilly-dl "0642572014448" --cookies "/home/dr4x3n/oreilly/mycookies.json" --info-only

3. Forcer le re-téléchargement complet (ignorer les fichiers existants)

./oreilly-dl "0642572014448" --cookies "/home/dr4x3n/oreilly/mycookies.json" --force

⚙ Options Disponibles

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

📂 Exemple d'Arborescence GĂ©nĂ©rĂ©e

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
    │   └── ...
    └── ...

About

🎬 O'Reilly Course & Video Downloader CLI ( oreilly-dl )

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages