Youtube API v3获取用户video列表
使用Youtube API v2,可以轻松获得video。 只需发送一个这样的查询:
http://gdata.youtube.com/feeds/mobile/videos?max-results=5&alt=rss&orderby=published&author=OneDirectionVEVO
Youtube api v2还有一个用于构build查询的交互式演示页面: http : //gdata.youtube.com/demo/index.html
用Youtube API v3,我不知道相应的方法。 请用api v3指点一下。
谢谢!
channels#list方法将返回一个带有关于频道的一些信息的JSON,包括“上传”播放列表的播放列表ID:
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=OneDirectionVEVO&key={YOUR_API_KEY}
通过播放列表ID,您可以使用playlistItems#list方法获取video:
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUbW18JZRgko_mOGm5er8Yzg&key={YOUR_API_KEY}
您可以在文档页面的末尾进行testing。
这应该做到这一点。 这个代码只是获取并输出标题,但你可以得到你想要的任何细节
// Get Uploads Playlist $.get( "https://www.googleapis.com/youtube/v3/channels",{ part : 'contentDetails', forUsername : 'USER_CHANNEL_NAME', key: 'YOUR_API_KEY'}, function(data) { $.each( data.items, function( i, item ) { pid = item.contentDetails.relatedPlaylists.uploads; getVids(pid); }); } ); //Get Videos function getVids(pid){ $.get( "https://www.googleapis.com/youtube/v3/playlistItems",{ part : 'snippet', maxResults : 20, playlistId : pid, key: 'YOUR_API_KEY'}, function(data) { var results; $.each( data.items, function( i, item ) { results = '<li>'+ item.snippet.title +'</li>'; $('#results').append(results); }); } ); } <!--In your HTML --> <ul id="results"></ul>
API的V3已经发生了很多变化。 这里是一个video ,通过使用API Explorer进行实时演示,您将了解所需的v3 API调用,以获取在给定频道中上传的video列表。
YouTube开发者直播:在v3获取频道的上传 – https://www.youtube.com/watch?v=RjUlmco7v2M
相当于您发布的请求实际上是在3.0 api中search,而不是播放列表请求。 这样做也更容易。 尽pipe如此,您还是需要为频道ID排除用户名。
恩。 GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUGhCVGZ0ZSpe5hJHWyiLwHA&key= {YOUR_API_KEY}
如果在这里帮助任何人,这是我发现的,到目前为止似乎对我很好。 我在通过OAuth 2.0validation成员之前提出了这个要求,这将给我authentication的成员video。 与往常一样,您的个人里程可能会有所不同:D
curl https://www.googleapis.com/youtube/v3/search -G \ -d part=snippet \ -d forMine=true \ -d type=video \ -d order=date \ -d access_token={AUTHENTICATED_ACCESS_TOKEN}
如果配额成本是一个考虑因素,遵循这个简单的algorithm可能是有益的。
首先从https://www.youtube.com/feeds/videos.xml?channel_id=获取数据;…这是一个简单的XML提要,它会给你videoID,但是你不能指定更多的“部分”(统计数据等等)。
使用该列表中的videoID,在/ videos API端点上进行查询,该端点允许使用videoID的逗号分隔列表,这只会导致1配额费用,对于任何附加的零件参数,加上0-2。 正如@chrismacp指出的那样,使用/ search端点更简单,但是其配额成本为100,可以快速加起来。
这里有一个资源考虑(cpu,内存等),但是我相信在许多情况下这可能是一个有用的方法。
另一种方法可能是通过以下方法获取当前经过oauthauthentication的用户的播放列表:property mine = true
在validation后检索oauth access_token: https : //developers.google.com/youtube/v3/guides/authentication
https://www.googleapis.com/youtube/v3/playlists?part=id&mine=true&access_token=ya29.0gC7xyzxyzxyz
如果您想获得播放列表的video超过300个video,请不要使用playlistitems.list。 您可以在“试用”部分中的谷歌链接“ https://developers.google.com/youtube/v3/docs/playlistItems/list ”中进行试用。 它返回undefined。
我也用在我的项目中。 它只返回undefined。
在PHP中:我使用pageToken属性去播放列表的所有页面,我希望它可以帮助你。
//step 1: get playlist id $response = file_get_contents("https://www.googleapis.com/youtube/v3/channels?key={$api_key}&forUsername={$channelName}&part=contentDetails"); $searchResponse = json_decode($response,true); $data = $searchResponse['items']; $pid = $data[0]['contentDetails']['relatedPlaylists']['uploads']; //step 2: get all videos in playlist $nextPageToken = ''; while(!is_null($nextPageToken)) { $request = "https://www.googleapis.com/youtube/v3/playlistItems?key={$api_key}&playlistId={$pid}&part=snippet&maxResults=50&pageToken=$nextPageToken"; $response = file_get_contents($request); $videos = json_decode($response,true); //get info each video here... //go next page $nextPageToken = $videos['nextPageToken']; }
以下是一些使用官方Google API节点库的代码( https://github.com/google/google-api-nodejs-client )
const readJson = require("r-json"); const google = require('googleapis'); const Youtube = google.youtube('v3'); // DONT store your credentials in version control const CREDENTIALS = readJson("/some/directory/credentials.json"); let user = "<youruser>"; let numberItems = 10; let channelConfig = { key: CREDENTIALS.youtube.API_KEY, part: "contentDetails", forUsername: user }; Youtube.channels.list(channelConfig, function (error, data) { if (error) { console.log("Error fetching YouTube user video list", error); return; } // Get the uploads playlist Id let uploadsPlaylistId = data.items[0].contentDetails.relatedPlaylists.uploads; let playlistConfig = { part : 'snippet', maxResults : size, playlistId : uploadsPlaylistId, key: CREDENTIALS.youtube.API_KEY }; // Fetch items from upload playlist Youtube.playlistItems.list(playlistConfig, function (error, data) { if (error) { console.log("Error fetching YouTube user video list", error); } doSomethingWithYourData(data.items); }); });