Quantcast
Channel: Active questions tagged youtube-api - Stack Overflow
Viewing all articles
Browse latest Browse all 3831

Can't download Full srt youtube captions

$
0
0

I'm trying to download YouTube subtitles from entire channelI used first Python code to extract all videos id and put them in text file

import osfrom decouple import configfrom googleapiclient.discovery import buildapi_key = config('YOUTUBE_API_KEY')if not api_key:    raise ValueError("Please set the YOUTUBE_API_KEY environment variable.")youtube = build('youtube', 'v3', developerKey=api_key)def get_video_ids(channel_id):    video_ids = []    request = youtube.search().list(part='id', channelId=channel_id, maxResults=50, type='video')    response = request.execute()    while request is not None:        try:            for item in response['items']:                video_id = item['id']['videoId']                video_ids.append(video_id)        except KeyError as ke:            print(f"Error extracting video IDs: {ke}")            break  # Stop the loop if there's an issue extracting video IDs        request = youtube.search().list_next(request, response)        response = request.execute() if request is not None else []    return video_idsdef save_video_ids_to_file(video_ids, file_path='video_ids.txt'):    with open(file_path, 'w') as file:        for video_id in video_ids:            file.write(video_id +'\n')if __name__ == "__main__":    channel_id = 'UCHnyfMqiRRG1u-2MsSQLbXA'    video_ids = get_video_ids(channel_id)    save_video_ids_to_file(video_ids)    print(f"Number of videos in the channel: {len(video_ids)}")

And then I run second code to download .srt files.The problem is transcript not completed only few seconds.

import osfrom youtube_transcript_api import YouTubeTranscriptApifrom youtube_transcript_api.formatters import SRTFormatterdef download_subtitles_from_txt(input_file='video_ids.txt', output_folder='Youtubesubs'):    # Create the output folder if it doesn't exist    if not os.path.exists(output_folder):        os.makedirs(output_folder)    # Read video IDs from the file    with open(input_file, 'r') as file:        video_ids = [line.strip() for line in file]    try:        for video_id in video_ids:            try:                # Get the English transcript for each video                transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=['en'])                # Create an instance of SRTFormatter                srt_formatter = SRTFormatter()                # Format the transcript in SRT                srt_formatted = srt_formatter.format_transcript(transcript)                # Save subtitles to a file (e.g., subtitles.srt) in the output folder                file_path = os.path.join(output_folder, f'{video_id}_subtitles.srt')                with open(file_path, 'w', encoding='utf-8') as file:                    file.write(srt_formatted)                print(f"Subtitles downloaded and saved for video {video_id}")            except Exception as e:                print(f"Error downloading subtitles for video {video_id}: {e}")    except Exception as e:        print(f"Error downloading subtitles: {e}")if __name__ == "__main__":    download_subtitles_from_txt()

When I try only one video it work fine but multi videos not, I used delay time for 10 seconds and nothing changed.


Viewing all articles
Browse latest Browse all 3831

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>