Accéder au contenu principal

Récupérer la transcription d'une vidéo YouTube et l'enregistrer sur Google Drive

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

  1. Créez un nouveau notebook Google Colab.

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

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

  1. Entrez l'URL d'une vidéo YouTube publique.

  2. Observez les messages de progression dans la console.

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

Posts les plus consultés de ce blog

Synchroniser ses emails MELANIE sur son smartphone

On va utiliser un serveur zpush (Active Sync), pour synchroniser votre boîte MEL sur votre téléphone/tablette. Le téléphone devra être sécurisé pour autoriser cette synchronisation (empreinte, mot de passe...). Vous pourrez donc : Recevoir vos emails educagri sur votre téléphone Être notifié des nouveaux emails Envoyer des emails educagri Étape 1 - Valider les CGU Tout d'abord, vous devez vous assurer que vous avez validé les Conditions Générales d'Utilisation de la synchronisation des appareils mobiles.  Il faut aller dans : Paramètres > Mon Compte > Synchronisation mobile  OU directement via ce liens : https://mel.din.developpement-durable.gouv.fr/?_task=settings&_action=plugin.mel_moncompte Et s'assurer que vous avez bien coché la case en bas. Ca devrait donner ça : Étape 2 - Ajouter le compte "educagri" sur le smartphone Je n'ai pas d'outils sous iOS donc je vais seulement décrire la manipulation pour Android.  Sur votre smartphone, il faut a...

Rediriger ses emails educagri

 Depuis la nouvelle interface des emails "educagri.fr" sur MÉLANIE  https://mel.din.developpement-durable.gouv.fr  on peut toujours rediriger ses emails sur une autre boîte email. Pour se connecter, il faut entrer son nom d'utilisateur (soit votre adresse email, soit votre identifiant prénom.nom .agri ) et le mot de passe. Ensuite, il faut aller dans ; Paramètres (en haut à droite) Filtres vous pouvez vous y rendre directement via ce lien :  https://mel.din.developpement-durable.gouv.fr/?_task=settings&_action=plugin.managesieve Ensuite, dans la deuxième colonne, cliquer sur la croix "Ajouter un filtre" : Enfin, il faut : nommer le filtre comme vous le voulez Puis cocher " tous les courriels " Puis sélectionner " Rediriger le courriel vers " Mettre votre adresse email personnel Pour garder une copie des messages dans votre boite de réception MEL, je vous conseil d'ajouter une action en cliquant sur le + et sélectionner " Conserve...

Lire des textes avec la synthèse vocale sur Android

 Alors, je ne vais pas lister toutes les solutions qui existent pour faire lire des textes au téléphone mais plutôt celle que j'utilise quotidiennement. Il existe donc d'autres solutions bien sûr. Pour commencer il faut 2 applications : Une application de lecture d'ebook (type epub, mobi, PDF etc) Une application de voix de synthèse vocale L'application de lecture d'ebook Personnellement, j'en ai testé pas mal et celle qui me convient le mieux est  Moon+ Reader . Elle a beaucoup d'options (peut-être trop au départ) mais une fois configurée à votre goût, c'est parfait. Elle existe en version Pro également. L'application de synthèse vocale Tous les smartphones possède déjà des voix de synthèse vocale pour l'utilisation du téléphone mais il faut reconnaître que c'est très rudimentaire. Pour avoir des voix de meilleure qualité, il faut installer des applications text-to-speech (TTS). J'en utilise 3 différentes mais le choix est très personne...