我正在尝试使用新的v3 API检索YouTube频道的频道ID。我正在使用 Python 客户端,似乎没有直接的方法可以找到 YouTube 频道 URL 或名称到其频道 ID 的映射。
使用 Python API 客户端,我似乎必须为频道名称发出类型为"channel"的搜索查询,然后循环访问每个搜索结果,直到找到匹配项。
我将以 http://youtube.com/atgoogletalks 通道为例
search_channel_name = 'atgoogletalks' #Parsed from http://youtube.com/atgoogletalks
search_response = youtube.search().list(
type='channel',
part='id,snippet',
q=search_channel_name,
maxResults=50
).execute()
for sri in search_response["items"]:
channels_response = youtube.channels().list(
id=sri["id"]["channelId"],
part="id, snippet, statistics, contentDetails, topicDetails"
).execute()
for cr in channels_response["items"]:
channelname = cr["snippet"]["title"]
if channelname.lower() == search_channel_name:
return 'Success'
我已经抓取了文档,寻找一种更直接的方法,但结果很短。有没有更简单的方法?如果没有,是否有计划将此功能添加到 API?
关注 YouTube 数据 API你可以使用 youtube.channels.list() 的用户名参数
使用您自己的示例:
search_channel_name = 'atgoogletalks'
channels_response = youtube.channels().list(
forUsername=search_channel_name,
part="id, snippet, statistics, contentDetails, topicDetails"
).execute()
有时 forUsername
参数不会返回所需的结果。你可以做的是:
from googleapiclient import build
import requests
import json
youtube = build('youtube', 'v3', developerKey=your_key_here)
channel_id = requests.get('https://www.googleapis.com/youtube/v3/search?part=id&q={search_query_here}&type=channel&key={api_key_here}').json()['items'][0]['id']['channelId']
channels_response = youtube.channels().list(id=channel_id, part='id, snippet, statistics, contentDetails, topicDetails').execute()