📅  最后修改于: 2023-12-03 15:38:23.972000             🧑  作者: Mango
在本教程中,我们将学习如何使用 Python 从 YouTube 视频中录制 CC (Closed Captioned,即字幕)。
要从 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
中。
要从 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
属性过滤和排序进行视频下载。
要获取视频的 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。
使用 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