Dans ce tutoriel, nous allons créer un script Python exécuté sur Google Colab qui permet de récupérer la transcription d'une vidéo YouTube, de la formater avec des métadonnées (titre, auteur, durée, etc.), et de l'enregistrer dans un fichier texte sur Google Drive.
Objectif
Extraire automatiquement les transcriptions de vidéos YouTube (manuelles ou générées automatiquement).
Enregistrer ces transcriptions dans Google Drive, avec un format de fichier organisé.
Ajouter une introduction au fichier pour indiquer les métadonnées de la vidéo.
Étape 1 : Préparation de l’environnement sur Google Colab
Créez un nouveau notebook Google Colab.
Accédez à Google Colab.
Créez un nouveau notebook.
Installez les bibliothèques nécessaires. Exécutez la cellule suivante pour installer les outils requis :
!pip install youtube-transcript-api yt-dlp
youtube-transcript-api
: Permet d’extraire les transcriptions des vidéos YouTube.yt-dlp
: Un outil puissant pour obtenir des métadonnées des vidéos YouTube.
Montez Google Drive. Montez votre espace Google Drive pour y enregistrer les fichiers :
from google.colab import drive drive.mount('/content/drive')
Une fois exécuté, autorisez Google Colab à accéder à votre Drive.
Étape 2 : Écrire le script Python
Code complet
Voici le script complet à exécuter dans une cellule de votre notebook Colab. Il est détaillé étape par étape ensuite.
import os
import subprocess
import json
from youtube_transcript_api import YouTubeTranscriptApi
from youtube_transcript_api.formatters import TextFormatter
# Fonction pour récupérer les métadonnées de la vidéo avec yt-dlp
def get_video_metadata(video_url):
try:
result = subprocess.run(
["yt-dlp", "--no-check-certificate", "--dump-json", video_url],
stdout=subprocess.PIPE, text=True
)
if result.returncode != 0 or not result.stdout.strip():
raise ValueError("Impossible de récupérer les métadonnées.")
return json.loads(result.stdout)
except Exception as e:
print(f"Erreur lors de la récupération des métadonnées : {e}")
raise
# Fonction pour formater le nom du fichier
def format_filename(metadata):
title = metadata.get('title', 'Untitled').replace('/', '-')
uploader = metadata.get('uploader', 'Unknown').replace('/', '-')
upload_date = metadata.get('upload_date', 'Unknown')[:4] # Année seulement
duration = metadata.get('duration_string', 'Unknown')
return f"{title} - {uploader} - {upload_date} ({duration}).txt"
# Fonction pour récupérer et sauvegarder la transcription
def get_transcription(video_url):
import re
video_id_match = re.search(r"(?:v=|\/)([a-zA-Z0-9_-]{11})", video_url)
if video_id_match:
video_id = video_id_match.group(1)
else:
raise ValueError("URL invalide. Veuillez fournir une URL correcte.")
try:
# Récupérer les métadonnées de la vidéo
metadata = get_video_metadata(video_url)
# Obtenir les transcriptions disponibles
transcript_list = YouTubeTranscriptApi.list_transcripts(video_id)
# Essayer d'abord de récupérer une transcription manuelle
try:
transcript = transcript_list.find_manually_created_transcript(['en', 'fr'])
print("Transcription manuelle récupérée.")
except:
# Si aucune transcription manuelle n'est disponible, utiliser la transcription générée automatiquement
transcript = transcript_list.find_generated_transcript(['en', 'fr'])
print("Transcription générée automatiquement récupérée.")
# Formatter la transcription
formatter = TextFormatter()
text_transcript = formatter.format_transcript(transcript.fetch())
# Formater le nom du fichier
file_name = format_filename(metadata)
save_path = f"/content/drive/MyDrive/{file_name}"
# Ajouter une introduction au fichier
intro = f"Transcription de la vidéo : {file_name.replace('.txt', '')}\n\n"
full_text = intro + text_transcript
# Sauvegarder la transcription
with open(save_path, "w", encoding="utf-8") as file:
file.write(full_text)
print(f"Transcription enregistrée dans : {save_path}")
except Exception as e:
print(f"Une erreur s'est produite : {e}")
# Entrer l'URL
video_url = input("Veuillez entrer l'URL de la vidéo YouTube : ")
get_transcription(video_url)
Étape 3 : Explications du code
1. Récupérer les métadonnées avec yt-dlp
La fonction get_video_metadata
utilise la commande yt-dlp
pour extraire les informations suivantes :
Titre : Nom de la vidéo.
Uploader : Auteur de la vidéo.
Date de publication : Année de mise en ligne.
Durée : Durée totale de la vidéo.
2. Nom du fichier formaté
La fonction format_filename
crée un nom de fichier unique et descriptif en utilisant les métadonnées. Exemple :
Canne à sucre de Polynésie française - Auteur - 2023 (15:37).txt
3. Extraction de la transcription
Le script utilise YouTubeTranscriptApi
pour :
Chercher une transcription manuelle si elle existe.
Basculer sur la transcription générée automatiquement en cas d’échec.
4. Ajout d’une introduction
Une introduction est ajoutée au fichier texte :
Transcription de la vidéo : Canne à sucre de Polynésie française - Auteur - 2023 (15:37)
[00:00] Texte de la transcription...
5. Sauvegarde sur Google Drive
Le fichier texte est enregistré directement dans votre Google Drive monté sur Colab.
Étape 4 : Tester le script
Entrez l'URL d'une vidéo YouTube publique.
Observez les messages de progression dans la console.
Vérifiez votre Google Drive pour retrouver le fichier texte bien formaté.
Conclusion
Ce script est une solution efficace pour extraire et organiser les transcriptions de vidéos YouTube. Avec des métadonnées claires et une introduction personnalisée, vos fichiers seront faciles à retrouver et à utiliser. N’hésitez pas à personnaliser davantage le script pour l’adapter à vos besoins !
Commentaires
Enregistrer un commentaire