python - 获取只有字幕 Youtube API 的视频列表
问题描述
我有一个可以使用 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)
我怎样才能做到这一点?
解决方案
根据Search.list
API 端点的文档,为了在获得的结果集上实现所需的过滤,您应该使用以下参数:
视频字幕(字符串)
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":
这是因为,通过type='video'
调用 API 端点,获得的结果集中的每个项目都必然是指视频。
推荐阅读
- python - 硒如果找不到元素= nan
- python - 在 Django 中的 ID 后附加文本
- php - 删除时出错 - 只能通过引用 PHP/MYSQLI 传递变量
- ios - 用 2 个数组快速填充 UItableViewCell
- php - 从 PHP 运行 PSQL 查询
- azure-devops - 无法将 Azure SQL 与 Azure DevOps Server 2019 一起使用 - (Azure 政府)
- bash - 标准输出和标准错误
- excel - 另一个工作表单元格中的公式错误,其中包含带有 activesheet.name 的超链接
- xcode - xcode 10.1 架构 arm64 的未定义符号
- c# - 检测到与 ASP.NET SignalR 服务器的连接尝试。此客户端仅支持连接到 ASP.NET Core SignalR 服务器