哪个 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 版的一个网址获取相同的数据,具有 USERNAMEAPI_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 数据的主要内容,如果未能解决你的问题,请参考以下文章

用于从 api 获取 json 数据的 url 格式

使用 YouTube API 从用户提供的搜索词中获取 YouTube 视频 ID

如何从 MailChimp 3.0 API 获取兴趣组?

是否可以使用 Disqus API 从特定 url 获取评论?

django2.0和3.0的区别

从网站抓取数据的3种最佳方法