哪个 url 用于从 api 3.0 上的用户获取 youtube 上传视频的 json 数据
Posted
技术标签:
【中文标题】哪个 url 用于从 api 3.0 上的用户获取 youtube 上传视频的 json 数据【英文标题】:Which url for getting json data for youtube uploaded videos from a user on api 3.0 【发布时间】:2014-06-30 01:41:38 【问题描述】:我只需要一些关于 youtube api 的解释。
在 2.0 版本中,此类 URL 用于获取有关配置文件的信息,但现在不推荐使用 2.0 版本
http://gdata.youtube.com/feeds/base/users/[USERNAME]/uploads?alt=json&v=2&orderby=published&max-results=50
目前我正在使用这种行为来抓取数据,但是最后一个json请求是被禁止的。
//搜索用户频道
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=USERNAME&key=API_KEY
//搜索频道的视频
https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&maxResults=50&channelId=CHANNEL&key=API_KEY
//搜索视频
https://www.googleapis.com/youtube/v3/videos?part=id%2Csnippet%2CcontentDetails%2CfileDetails%2CliveStreamingDetails%2Cplayer%2CprocessingDetails%2CrecordingDetails%2Cstatistics%2Cstatus%2Csuggestions%2CtopicDetails&id=VIDEO_LIST&key=API_KEY
那么有没有办法从 YouTube api 3.0 版的一个网址获取相同的数据,具有 USERNAME 和 API_KEY 等参数?
【问题讨论】:
How to get current user's profile information in YouTube Data API v3 的可能重复项 它不是重复的,因为你链接的是关于用户信息的,我需要检索用户上传的视频以及所有信息,如评级、持续时间、id、链接...... 【参考方案1】:这是使用 Youtube 和 Api 3.0 抓取用户最后 50 个(允许的最大)视频的方法
//搜索用户频道
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=USERNAME&key=KEY
//搜索上传频道的播放列表项
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=50&playlistId=PLAYLIST&key=KEY
//搜索上传频道播放列表项的视频
https://www.googleapis.com/youtube/v3/videos?part=id,snippet,contentDetails,status&id=BBfPP0rTjxo,o04cSB5afGc&maxResults=50&key=KEY
【讨论】:
【参考方案2】:YouTube 数据 API 第 3 版可在此处找到:
https://developers.google.com/youtube/v3/
GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=USERNAME&key=YOUR_API_KEY
【讨论】:
【参考方案3】:使用以下代码。
#!/usr/bin/python
from apiclient.discovery import build
from apiclient.errors import HttpError
DEVELOPER_KEY = "your key"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
def youtube_search(search_item):
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
developerKey=DEVELOPER_KEY)
search_response =
search_results = []
search_response = youtube.search().list(
q=search_item,
type="video",
part="id,snippet",
maxResults=50
).execute()
search_results.append(search_response)
if search_response.has_key('pageInfo'):
if search_response['pageInfo'].has_key('totalResults'):
totalResults = search_response['pageInfo']['totalResults']
for i in range(len(range(50,totalResults,50))):
if search_response.has_key('nextPageToken'):
pT = search_response['nextPageToken']
search_response =
search_response = youtube.search().list(
q=search_item,
type="video",
part="id,snippet",
pageToken = pT,
maxResults=50,
).execute()
print "ok"
time.sleep(1)
search_results.append(search_response)
for i in search_results:
for j in i['items']:
statistics = search_video(j['id']['videoId'])
j['statistics']=statistics
return search_results
def search_video(id):
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
developerKey=DEVELOPER_KEY)
data = youtube.videos().list(
id=id,
part="statistics"
).execute()
return data['items'][0]['statistics']
def main():
#call the youtube_search function by passing the usernameof the user in youtube
#eg
#data = youtube_search('Google')
if __name__ == '__main__':
main()
使用此代码从 api 3.0 上的用户获取 youtube 上传视频的 json 数据。 每位用户最多可获得 500 个视频。 api密钥将可用https://console.developers.google.com/
【讨论】:
以上是关于哪个 url 用于从 api 3.0 上的用户获取 youtube 上传视频的 json 数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 YouTube API 从用户提供的搜索词中获取 YouTube 视频 ID