Youtube api v3 Получить список видео пользователей
С Youtube api v2 есть простой способ получить видео. Просто отправьте запрос следующим образом:
http://gdata.youtube.com/feeds/mobile/videos?max-results=5&alt=rss&orderby=published&author=OneDirectionVEVO
Youtube api v2 также имеет интерактивную демонстрационную страницу для построения запроса:
http://gdata.youtube.com/demo/index.html
С Youtube api v3 я не знаю соответствующего способа. Пожалуйста, укажите мне путь с помощью api v3.
Спасибо!
Ответы
Ответ 1
Метод channel # list возвращает JSON с некоторой информацией о канале, включая ID плей-листа для плейлиста "uploads":
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=OneDirectionVEVO&key={YOUR_API_KEY}
С идентификатором списка воспроизведения вы можете получить видео с помощью метода playlistItems # list:
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUbW18JZRgko_mOGm5er8Yzg&key={YOUR_API_KEY}
Вы можете протестировать те, которые находятся в конце страниц документации.
Ответ 2
Это должно сделать это. Этот код просто получает и выводит заголовок, но вы можете получить любую необходимую информацию.
// 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>
Ответ 3
В V3 API многое изменилось. Вот видео в котором вы просматриваете вызовы API v3, необходимые для получения списка видеороликов, загруженных в данный канал, с живыми демонстрационными записями, использующими API Explorer.
YouTube Developers Live: загрузка каналов в v3 - https://www.youtube.com/watch?v=RjUlmco7v2M
Ответ 4
Эквивалент отправленного вами запроса - фактически поиск в 3.0 api, а не запрос списка воспроизведения. Это проще сделать так. Однако вам нужно вычитать имя пользователя для идентификатора канала.
ех. GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUGhCVGZ0ZSpe5hJHWyiLwHA&key= {YOUR_API_KEY}
Ответ 5
В случае, если это помогает кому-то здесь, это то, что я обнаружил и до сих пор, похоже, хорошо работает для меня. Я проверяю участника через 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}
Ответ 6
Если стоимость квоты является соображением, может быть полезно следовать этому простому алгоритму.
Сначала возьмите данные из https://www.youtube.com/feeds/videos.xml?channel_id=... Это простой XML-канал, который даст вам идентификаторы видео, но вы не может указывать дальнейшие "детали" (статистика и т.д.).
Используя идентификатор видео из этого списка, выполните запрос в конечной точке API/видео API, который разрешает список идентификаторов видео с разделителями-запятыми, которые должны приводить только к 1 квоте, плюс 0-2 для любых дополнительных параметров детали, Как указывает @chrismacp, использование конечной точки /search проще, но имеет квоту стоимостью 100, которая может быстро складываться.
Здесь рассматривается ресурс (процессор, память и т.д.), поскольку вы делаете второй вызов, но я верю во многие сценарии, это может быть полезным методом.
Ответ 7
Альтернативным методом может быть получение списков воспроизведения для текущего пользователя, прошедшего проверку подлинности, с помощью: property mine = true
где 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
Ответ 8
Пожалуйста, не используйте playlistitems.list, если вы хотите получить видео из списка воспроизведения с более чем 300 видеороликами. Вы можете попробовать его прямо в ссылке google https://developers.google.com/youtube/v3/docs/playlistItems/list "в разделе" Попробовать". Он возвращает undefined.
Я также использовал в своем проекте. Он возвращает только undefined.
Ответ 9
В 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'];
}
Ответ 10
Вот какой код используется в официальной библиотеке Google API Node (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);
});
});
Ответ 11
В 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
Ответ 12
$.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;
})
}
);
}
Ответ 13
function tplawesome(e,t){res=e;for(var n=0;n<t.length;n++){res=res.replace(/\{\{(.*?)\}\}/g,function(e,r){return t[n][r]})}return res}
$(function() {
$(".form-control").click(function(e) {
e.preventDefault();
// prepare the request
var request = gapi.client.youtube.search.list({
part: "snippet",
type: "video",
q: encodeURIComponent($("#search").val()).replace(/%20/g, "+"),
maxResults: 20,
order: "viewCount",
publishedAfter: "2017-01-01T00:00:00Z"
});
// execute the request
request.execute(function(response) {
var results = response.result;
$("#results").html("");
$.each(results.items, function(index, item) {
$.get("tpl/item.html", function(data) {
$("#results").append(tplawesome(data, [{"title":item.snippet.title, "videoid":item.id.videoId ,"descrip":item.snippet.description ,"date":item.snippet.publishedAt ,"channel":item.snippet.channelTitle ,"kind":item.id.kind ,"lan":item.id.etag}]));
});
});
resetVideoHeight();
});
});
$(window).on("resize", resetVideoHeight);
});
function resetVideoHeight() {
$(".video").css("height", $("#results").width() * 9/16);
}
function init() {
gapi.client.setApiKey("YOUR API KEY .... USE YOUR KEY");
gapi.client.load("youtube", "v3", function() {
// yt api is ready
});
}