获取只有字幕 Youtube API 的视频列表
Posted
技术标签:
【中文标题】获取只有字幕 Youtube API 的视频列表【英文标题】:Get List of Videos that Only Have Subtitles Youtube API 【发布时间】:2020-11-04 15:28:30 【问题描述】:我有一个可以使用 Youtube API 搜索视频的 Python 代码。 我的输出目标是检索只有字幕/CC 的视频,就像 Youtube Web 上的搜索过滤器一样。
我当前的代码:
videos = []
def get_videos_by_query(query: str, maxResults: int = 50, pageToken: str = None):
youtube = build(YOUTUBE_API_SERVICE_NAME,
YOUTUBE_API_VERSION,
developerKey=DEVELOPER_KEY)
try:
search_response = youtube.search().list(
part="id,snippet",
order='date',
maxResults=maxResults,
pageToken=pageToken,
q=query
).execute()
for search_result in search_response.get("items", []):
if search_result["id"]["kind"] == "youtube#video":
videoId = search_result["id"]["videoId"]
data = videoId
videos.append(data)
except Exception as e:
print(e)
我怎样才能做到这一点?
【问题讨论】:
它被称为:"isCC": True or False, # 表示曲目是否包含针对聋人和听力障碍的隐藏字幕。默认值为 false。。阅读v3.captions 【参考方案1】:根据Search.list
API端点的文档,要对获得的结果集进行所需的过滤,您应该使用以下参数:
videoCaption(字符串)
videoCaption 参数指示 API 是否应根据视频搜索结果是否有字幕来过滤它们。如果为此参数指定值,则还必须将type 参数的值设置为
video
。可接受的值为:
any
– 不要根据字幕可用性过滤结果。closedCaption
– 仅包含带字幕的视频。none
– 仅包含没有字幕的视频。
因此,请将您对上述youtube.search().list()
的呼叫替换为以下呼叫:
search_response = youtube.search().list(
part="id,snippet",
order='date',
type='video',
videoCaption='closedCaption',
maxResults=maxResults,
pageToken=pageToken,
q=query
).execute()
请注意,通过此更改,以下代码变得多余:
if search_result["id"]["kind"] == "youtube#video":
这是因为,通过在 API 端点的调用中使用type='video'
,获得的结果集中的每个项目都必然是指一个视频。
【讨论】:
以上是关于获取只有字幕 Youtube API 的视频列表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Youtube API 为 Youtube 视频添加字幕?