Youtube api v3获取用户列表';s视频
有了Youtube api v2,就有了获取视频的简单方法。只需发送如下查询: Youtube api v2还有一个用于构建查询的交互式演示页面: 对于Youtube api v3,我不知道相应的方法。请用api v3为我指路 谢谢大家! 该方法将返回一个JSON,其中包含有关频道的一些信息,包括“上载”播放列表的播放列表ID:Youtube api v3获取用户列表';s视频,youtube,youtube-api,youtube-data-api,Youtube,Youtube Api,Youtube Data Api,有了Youtube api v2,就有了获取视频的简单方法。只需发送如下查询: Youtube api v2还有一个用于构建查询的交互式演示页面: 对于Youtube api v3,我不知道相应的方法。请用api v3为我指路 谢谢大家! 该方法将返回一个JSON,其中包含有关频道的一些信息,包括“上载”播放列表的播放列表ID: https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=OneDirectionVEVO&key={YOUR_API_KEY}
使用播放列表ID,您可以通过以下方法获取视频:
您可以在文档页面的末尾测试它们。这样就可以了。这段代码只获取并输出标题,但您可以获取任何想要的详细信息
// 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>
//获取上传播放列表
美元(
"https://www.googleapis.com/youtube/v3/channels",{
第部分:“内容详细信息”,
forUsername:'USER\u CHANNEL\u NAME',
key:'您的_API _key'},
功能(数据){
$.each(data.items,function(i,item){
pid=item.contentDetails.relatedPlaylists.uploads;
getVids(pid);
});
}
);
//获取视频
函数getVids(pid){
美元(
"https://www.googleapis.com/youtube/v3/playlistItems",{
部分:'代码片段',
最大结果:20,
playlid:pid,
key:'您的_API _key'},
功能(数据){
var结果;
$.each(data.items,function(i,item){
结果=“”+item.snippet.title+” ;
$(“#结果”)。追加(结果);
});
}
);
}
另一种方法是通过:property mine=true获取当前oauth身份验证用户的播放列表
其中,oauth access_令牌在身份验证后检索:
在API的V3中,情况发生了很大的变化。下面是一个示例,它将引导您通过v3api调用获取在给定频道上载的视频列表,并使用API浏览器进行实时演示
YouTube开发者现场直播:在v3中获得频道上传-您发布的请求实际上是在3.0 api中进行搜索,而不是播放列表请求。这样做也更容易。不过,您确实需要更改频道ID的用户名
例如,获取{YOUR_API_KEY}如果要获取播放列表中包含300多个视频的视频,请不要使用playlitems.list。您可以在“试用”部分的“谷歌链接”中试用。它返回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'];
}
如果这对这里的任何人都有帮助,这就是我发现的,到目前为止似乎对我很有效。在发出此请求之前,我正在通过OAuth 2.0对该成员进行身份验证,这将为我提供已验证成员的视频。与往常一样,您的个人里程可能会有所不同: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}
下面是一些使用官方Google API节点库()的代码
const readJson=require(“r-json”);
const google=require('googleapis');
constyoutube=google.Youtube('v3');
//不要将凭据存储在版本控制中
const CREDENTIALS=readJson(“/some/directory/CREDENTIALS.json”);
让用户=”;
设numberItems=10;
让channelConfig={
key:CREDENTIALS.youtube.API_key,
第部分:“内容详情”,
forUsername:user
};
Youtube.channels.list(channelConfig,函数(错误,数据){
如果(错误){
log(“获取YouTube用户视频列表时出错”,错误);
返回;
}
//获取上传的播放列表Id
让uploadsPlaylistId=data.items[0].contentDetails.relatedPlaylists.uploads;
让播放列表配置={
部分:'代码片段',
最大结果:大小,
PlayId:uploadsPlaylistId,
密钥:CREDENTIALS.youtube.API\u密钥
};
//从上载播放列表中获取项目
Youtube.playlitems.list(播放配置,函数(错误,数据){
如果(错误){
log(“获取YouTube用户视频列表时出错”,错误);
}
doSomethingWithYourData(data.items);
});
});
如果配额成本是一个考虑因素,那么遵循这个简单的算法可能是有益的
首先从…获取数据。。。这是一个简单的XML提要,它将为您提供视频ID,但您不能进一步指定“部分”(统计等)
使用该列表中的视频ID,在/videos API端点上执行查询,该端点允许使用逗号分隔的视频ID列表,该列表只会导致1个配额成本,再加上0-2的任何其他零件参数。正如@chrismacp所指出的,使用/search端点更简单,但配额成本为100,这可以快速增加
在进行第二次调用时,这里需要考虑资源(cpu、内存等),但我相信在许多情况下,这是一种有用的方法。在node.js中,可以通过以下代码实现 需要
authKey
和channelId
作为options
对象参数
cb
在获取数据后调用回调
async function fetchChannelInfo(options) {
const channelUrl = `https://www.googleapis.com/youtube/v3/channels?part=contentDetails,statistics&id=${
options.channelId
}&key=${options.authKey}`;
const channelData = await axios.get(channelUrl);
return channelData.data.items[0];
}
function fetch(options, cb) {
fetchChannelInfo(options).then((channelData) => {
options.playlistId = channelData.contentDetails.relatedPlaylists.uploads;
const paylistUrl = `https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=${
options.playlistId
}&key=${options.authKey}`;
axios
.get(paylistUrl)
.then((response) => {
const payloadData = ;
const videoList = [];
response.data.items.forEach((video) => {
videoList.push({
publishedAt: video.snippet.publishedAt,
title: video.snippet.title,
thumbnails: thumbnails,
videoId: video.snippet.resourceId.videoId,
});
});
cb(null, videoList);
})
.catch((err) => {
cb(err, null);
});
});
}
注意:axios用于RESTful请求。安装
npm install axios
上传功能可以是
function uploads(pvideo){
$.get(
"https://www.googleapis.com/youtube/v3/playlistItems",{
part: 'snippet',
maxResults:12,
playlistId:pvideo,
key: api},
function(data){
$.each(data.items, function(i, item){
videoTitle = item.snippet.title;
videoId = item.id;
description = item.snippet.description;
thumb = item.snippet.thumbnails.high.url;
channelTitle = item.snippet.channelTitle;
videoDate = item.snippet.publishedAt;
Catagoryid = item.snippet.categoryId;
cID = item.snippet.channelId;
})
}
);
}
函数tplawesome(e,t){res=e;for(var n=0;我找到了它。从中,我可以使用查询{YOUR\u API\u KEY}我搞不清楚你的API密钥是什么-玩过之后,我得到了--->你的API项目->API和身份验证->凭证->公共API访问->服务器密钥知道返回的JSON排序不同的原因吗?视频是一样的,但排序顺序与实际视频页面上的不同。我无法按上载日期/发布日期找到排序参数谢谢你的约会you@orbitory显然,排序是缺少的功能,请参阅此问题和可能的“解决方案”这里:哇!两个json调用来查看我自己的视频?可能是重复的我注意到Youtube的API引用中的视频非常过时,而且由于很多人都在努力使其正常工作,我创建了这个5m视频教程来帮助用户生成API密钥并启用Youtube API
async function fetchChannelInfo(options) {
const channelUrl = `https://www.googleapis.com/youtube/v3/channels?part=contentDetails,statistics&id=${
options.channelId
}&key=${options.authKey}`;
const channelData = await axios.get(channelUrl);
return channelData.data.items[0];
}
function fetch(options, cb) {
fetchChannelInfo(options).then((channelData) => {
options.playlistId = channelData.contentDetails.relatedPlaylists.uploads;
const paylistUrl = `https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=${
options.playlistId
}&key=${options.authKey}`;
axios
.get(paylistUrl)
.then((response) => {
const payloadData = ;
const videoList = [];
response.data.items.forEach((video) => {
videoList.push({
publishedAt: video.snippet.publishedAt,
title: video.snippet.title,
thumbnails: thumbnails,
videoId: video.snippet.resourceId.videoId,
});
});
cb(null, videoList);
})
.catch((err) => {
cb(err, null);
});
});
}
npm install axios
$.get(
"https://www.googleapis.com/youtube/v3/channels",{
part: 'snippet,contentDetails,statistics,brandingSettings',
id: viewid,
key: api},
function(data){
$.each(data.items, function(i, item){
channelId = item.id;
pvideo = item.contentDetails.relatedPlaylists.uploads;
uploads(pvideo);
});
});
function uploads(pvideo){
$.get(
"https://www.googleapis.com/youtube/v3/playlistItems",{
part: 'snippet',
maxResults:12,
playlistId:pvideo,
key: api},
function(data){
$.each(data.items, function(i, item){
videoTitle = item.snippet.title;
videoId = item.id;
description = item.snippet.description;
thumb = item.snippet.thumbnails.high.url;
channelTitle = item.snippet.channelTitle;
videoDate = item.snippet.publishedAt;
Catagoryid = item.snippet.categoryId;
cID = item.snippet.channelId;
})
}
);
}