我正在尝试从名称中包含特殊字符的 Youtube 频道请求统计数据,例如 FisicaUniversitáriaUSP。
当我使用下面的代码时,响应中没有结果,但通道存在:https://www.youtube.com/c/FisicaUniversit%C3%A1riaUSP
Python 3 中的代码:
from googleapiclient.discovery import build
c = 'FisicaUniversitáriaUSP'
yt = build('youtube', 'v3', developerKey=api_key)
req = yt.channels().list(part='statistics', forHandle=c.encode())
resp = req.execute()
print(resp)
我感谢一些帮助!
尝试使用channelId来避免这些编码不匹配。
如果您只有频道句柄名称,请首先尝试搜索频道以获取频道ID:
c = 'channelHandleName'
r = yt.search().list(
part='snippet',
q=c,
type='channel',
maxResults=1
).execute()
yt.search().list 的相关文档:https://developers.google.com/youtube/v3/docs/search/list
然后,如果返回结果,则获取第一个结果的channelId属性来构建对channels().list的请求:
if req_search_shannels.get('items'):
channel_id = req_search_shannels['items'][0]['snippet']['channelId']
response = yt.channels().list(
part='statistics',
id=channel_id
).execute()
print(json.dumps(response, indent=4))
else:
print('couldnt find channel', c)
yt.channels().list 参数的文档:https://developers.google.com/youtube/v3/docs/channels/list
如果您搜索提供频道句柄名称的频道,它始终会在列表中首先返回正确的频道。