📜  如何在 python 中录制 youtube cc(1)

📅  最后修改于: 2023-12-03 15:38:23.972000             🧑  作者: Mango

如何在 Python 中录制 YouTube CC

在本教程中,我们将学习如何使用 Python 从 YouTube 视频中录制 CC (Closed Captioned,即字幕)。

1. 获取视频 ID

要从 YouTube 上下载视频,需要首先获取视频的 ID。可以在视频 URL 中找到 ID,其格式为“https://www.youtube.com/watch?v=<video_ID>”。

# 获取视频 ID
import re

url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
video_id = re.search(r'(?<=v=)[\w-]+', url).group(0)

这里我们使用了正则表达式来查找 URL 中的 ID,然后存储在变量 video_id 中。

2. 下载视频

要从 YouTube 下载视频,可以使用 pytube 库。

!pip install pytube
# 下载视频
from pytube import YouTube

yt = YouTube(f'https://www.youtube.com/watch?v={video_id}')
stream = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()
stream.download()

在上面的代码中,我们首先使用 YouTube() 方法来实例化一个 YouTube 对象,然后使用 streams 属性过滤和排序进行视频下载。

3. 获取 CC

要获取视频的 CC,需要使用 YouTube 的 Data API v3。首先需要到 Google Cloud Console(https://console.cloud.google.com/apis)创建一个项目,并启用 YouTube Data API v3。然后从左侧导航栏选择“凭据”页面,创建一个新的 API 密钥。

# 设置 API 密钥
import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/path/to/your/credentials.json'
# 获取 CC
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

api_key = 'YOUR_API_KEY'
youtube = build('youtube', 'v3', developerKey=api_key)

try:
    caption_list = youtube.captions().list(part='snippet', videoId=video_id).execute()
    caption_id = caption_list['items'][0]['id']
    caption = youtube.captions().download(captionId=caption_id, tfmt='ttml').execute()
except HttpError as e:
    print('Error', e)

在上面的代码中,我们首先设置了 API 密钥,然后使用 googleapiclient 库中的 build() 方法创建了一个 YouTube API 的实例。然后使用 captions().list() 方法查找视频的 CC,并使用返回的 ID 下载 CC。

4. 转换为 SRT

使用 pysrt 库可以将下载的 CC 转换为 SRT(SubRip Text)格式。

!pip install pysrt
# 转换为 SRT
import io
import pysrt

srt_content = io.StringIO(caption)
ttml_content = pysrt.streams.TTMLStream().from_string(srt_content.getvalue())
srt_content = pysrt.streams.SubRipWriter().write_string(ttml_content)
print(srt_content)

在上面的代码中,我们首先使用 io 库中的 StringIO() 方法将 CC字符串内容存储在内存中。然后使用 pysrt 库将 TTML 格式的 CC 转换为 SRT 格式。

结论

以上就是在 Python 中从 YouTube 视频中录制 CC 的完整过程。通过使用 pytube、YouTube Data API v3 和 pysrt 库,我们可以方便地将视频录制和 CC 获取集成到我们的 Python 应用程序中。

参考文献:
https://developers.google.com/youtube/v3/docs/captions
https://github.com/nficano/pytube
https://github.com/pbs/youtube-captions-scraper
https://github.com/timeofflight/ttml2srt
https://pysrt.readthedocs.io/en/stable/api/stream.html