Untitled

 avatar
unknown
plain_text
5 months ago
2.4 kB
3
Indexable
# Paso 1: Instalar la biblioteca necesaria
!pip install youtube-transcript-api

from youtube_transcript_api import YouTubeTranscriptApi
import json
import os


def extract_and_save_transcript(input_value, save_path="transcripts"):
    try:
        # Crear la carpeta donde se guardarán las transcripciones si no existe
        if not os.path.exists(save_path):
            os.makedirs(save_path)

        # Determinar si el input es una URL o un Video ID
        if "youtube.com" in input_value or "youtu.be" in input_value:
            # Extraer el ID del video de la URL
            if "youtube.com" in input_value:
                video_id = input_value.split('v=')[1]
            elif "youtu.be" in input_value:
                video_id = input_value.split('/')[-1]
            # Manejar parámetros adicionales en la URL
            video_id = video_id.split('&')[0]
        else:
            # Si no es una URL, asumimos que es un Video ID directamente
            video_id = input_value

        # Obtener la transcripción en español
        transcript_list = YouTubeTranscriptApi.get_transcript(video_id, languages=['es'])

        # Guardar la transcripción en formato TXT
        transcript_text = '\n'.join([d['text'] for d in transcript_list])
        txt_file_path = os.path.join(save_path, f"{video_id}.txt")
        with open(txt_file_path, "w", encoding="utf-8") as txt_file:
            txt_file.write(transcript_text)
        print(f"Transcripción guardada en TXT: {txt_file_path}")

        # Guardar la transcripción en formato JSON con timestamps
        json_file_path = os.path.join(save_path, f"{video_id}.json")
        with open(json_file_path, "w", encoding="utf-8") as json_file:
            json.dump(transcript_list, json_file, ensure_ascii=False, indent=4)
        print(f"Transcripción guardada en JSON con timestamps: {json_file_path}")

        return transcript_list

    except Exception as e:
        print(f"Ocurrió un error: {e}")
        return None

# Probar con una URL de YouTube o un Video ID directamente
input_value = input("Ingresa la URL de YouTube o el Video ID: ")

# Llamar a la función para extraer y guardar la transcripción
transcript = extract_and_save_transcript(input_value)

# Verifica si la transcripción fue extraída exitosamente
if transcript:
    print("Transcripción obtenida con éxito.")
else:
    print("No se pudo obtener la transcripción en español.")
Editor is loading...
Leave a Comment