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.

Спасибо!


person vietstone    schedule 24.03.2014    source источник
comment
Я заметил, что видео из справочника API Youtube очень устарело, и, поскольку многие люди изо всех сил пытались заставить его работать, я создал этот 5-минутный видеоурок, чтобы помочь пользователям сгенерировать ключ API < / b>, а также включить API YouTube, чтобы любая конечная точка работала правильно: youtube.com/watch?v=MdQDYtytEbY   -  person sergioviniciuss    schedule 30.07.2017
comment
stackoverflow .com / questions / 18953499 /.   -  person iOS    schedule 01.07.2019


Ответы (13)


Метод channels # list вернет JSON с некоторой информацией о канале. , включая идентификатор плейлиста для плейлиста "загрузки":

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}

Вы можете проверить их в конце страниц документации.

person Vinicius Pinto    schedule 24.03.2014
comment
Привет, твой ответ идеален. Но у меня есть еще один вопрос. Поскольку не все видео можно воспроизводить на мобильных устройствах, в api v2 есть возможность передавать параметр mobile в запросе. Как передать мобильный параметр в api v3? Спасибо - person vietstone; 25.03.2014
comment
В документации для v3 об этом не упоминается. Я вижу, что метод videos # list может возвращать свойство embeddable, если вы запрашиваете часть статуса, но я не уверен, означает ли это, что его можно воспроизводить на мобильном устройстве. И вам придется называть его для каждого видео developers.google.com/youtube. / v3 / docs / videos / list - person Vinicius Pinto; 25.03.2014
comment
Я нашел это. Из developers.google.com/youtube/v3/docs/search/list, я могу использовать запрос .com / youtube / v3 / {YOUR_API_KEY} - person vietstone; 25.03.2014
comment
Я запутался в том, что такое YOUR_API_KEY - после экспериментов я получил - console.developers.google.com - ›Ваш проект API -› API и аутентификация - ›Учетные данные -› Доступ к общедоступному API - ›Ключ сервера - person Ramratan Gupta; 26.05.2015
comment
Любые идеи, почему возвращаемый JSON сортируется по-разному. Видео такие же, но порядок сортировки отличается от фактического на странице видео. Я не могу найти параметр сортировки по дате загрузки / дате публикации. Спасибо - person orbitory; 15.06.2015
comment
@orbitory, по-видимому, отсутствует функция сортировки, см. код этой проблемы. google.com/p/gdata-issues/issues/detail?id=6869 и возможное решение здесь: stackoverflow.com/questions/22893328/ - person Vinicius Pinto; 16.06.2015
comment
В итоге я использовал youtube / v3 / activity? Part = snippet% 2CcontentDetails & channelId = '. $ ChannelId.' & MaxResults = 50 & key = '. $ Key и использовал фильтрацию по $ post [' snippet '] [' type '] ==' upload ' . Оказывается, действия также показывают добавленные элементы списка воспроизведения, поэтому вы можете получить дубликаты - person orbitory; 17.06.2015
comment
Ух ты! два вызова json, чтобы посмотреть мои собственные видео? - person Gino; 02.07.2015
comment
эй, как получить количество лайков, количество дизлайков и количество просмотров каждого видео, используя идентификатор плейлиста ?? - person kundan roy; 06.01.2016
comment
Что делать, если у пользователя нет имени пользователя, только идентификатор канала? - person Turqueso; 14.04.2016
comment
@Turqueso Я думаю, вместо forUsername вы бы передали параметр id с идентификатором канала - person Vinicius Pinto; 16.04.2016
comment
googleapis.com/youtube/v3/ {YOUR_API_KEY} - person Ganpat Kaliya; 14.06.2016
comment
этот URL-адрес работает нормально, когда я получаю список каналов с использованием имени пользователя oneDirectionVevo, но когда я пытаюсь использовать свое имя пользователя, например Ganpat% 20Kaliya, этот URL-адрес дает мне массив элементов emty. почему это произошло, вы можете сказать мне, в чем моя ошибка? также в моем плейлисте есть одно видео, но оно возвращает список пустых - person Ganpat Kaliya; 14.06.2016
comment
это моя электронная почта, ответьте на это [email protected] - person Ganpat Kaliya; 14.06.2016
comment
@GanpatKaliya вы должны использовать идентификатор канала, а не свое имя пользователя. Перейдите на свой канал на YouTube и посмотрите идентификатор в URL-адресе после /channel/ - person Vinicius Pinto; 15.06.2016
comment
Мне нужно использовать API данных YouTube, чтобы извлекать видео с канала и буквально вставлять видео в веб-страницу, чтобы пользователи могли нажимать на них. - person DtechNet; 16.02.2017
comment
Также это хорошо только в том случае, если количество видео для списка <50 и нумерация страниц не упоминается. - person volvox; 12.02.2018

Это должно сработать. Этот код просто получает и выводит заголовок, но вы можете получить любую информацию, которую хотите.

// 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>
person Brad    schedule 26.09.2014

Если рассматривается стоимость квоты, может быть полезно следовать этому простому алгоритму.

Сначала возьмите данные из https://www.youtube.com/feeds/videos.xml?channel_id= ... Это простой XML-канал, который предоставит вам идентификаторы видео, но вы не можете указать дополнительные «части» (статистика и т. д.).

Используя идентификаторы видео из этого списка, выполните запрос к конечной точке API / videos, который позволяет получить список идентификаторов видео, разделенных запятыми, что должно привести только к стоимости 1 квоты плюс 0–2 для любых дополнительных параметров части. Как указывает @chrismacp, использование конечной точки / search проще, но имеет квоту 100, которая может быстро увеличиваться.

Здесь необходимо учитывать ресурсы (ЦП, память и т. Д.), Поскольку вы делаете второй вызов, но я считаю, что во многих сценариях это может быть полезным методом.

person Appl3s    schedule 18.01.2017
comment
XML-канал содержит только 15 последних загрузок с канала, однако этого недостаточно для многих целей. - person Tuesday; 13.02.2017
comment
@timothymh, это правда, спасибо, что подчеркнули этот важный момент. В любом случае, если 15 достаточно для ваших нужд, как это было для меня, то, надеюсь, другие сочтут эту альтернативу полезной. - person Appl3s; 17.05.2017
comment
Абсолютная правда. Мне и самому приходилось пользоваться этим методом! :) - person Tuesday; 17.05.2017

В V3 API многое изменилось. Вот видео, в котором рассказывается о вызовах API v3, необходимых для получения списка видео, загруженные на определенный канал, с живыми демонстрациями с использованием API Explorer.

YouTube Developers Live: получение загрузок канала в версии 3 - https://www.youtube.com/watch?v=RjUlmco7v2M

person Babatunde Adeyemi    schedule 11.12.2014

Эквивалент отправленного вами запроса на самом деле является поиском в API версии 3.0, а не запросом списка воспроизведения. Так сделать тоже проще. Однако вам нужно заменить имя пользователя на идентификатор канала.

бывший. ПОЛУЧИТЬ https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUGhCVGZ0ZSpe5hJHWyiLwHA&key= {YOUR_API_KEY}

person xangadix    schedule 08.01.2015
comment
Квота search.list составляет 100. Комбинация channel.list + playlistItems.list, что составляет квоту 4. Следует иметь в виду. - person chrismacp; 23.11.2016

В случае, если это кому-то поможет, это то, что я обнаружил, и до сих пор мне кажется, что это хорошо работает. Я аутентифицирую участника через 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}
person Jonmark Weber    schedule 15.12.2015
comment
Я тоже так делал, но понял, что это включает в себя результаты для удаленных видео, что очень раздражает. - person robbpriestley; 08.09.2016

Вот код, использующий официальную библиотеку узлов 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);
  });
});
person chrismacp    schedule 22.11.2016

Альтернативным методом может быть получение списков воспроизведения для текущего пользователя, прошедшего аутентификацию oauth, с помощью: property mine = true

где токен доступа oauth извлекается после аутентификации: https://developers.google.com/youtube/v3/guides/authentication

https://www.googleapis.com/youtube/v3/playlists?part=id&mine=true&access_token=ya29.0gC7xyzxyzxyz
person Bill McNamara    schedule 04.12.2014

Пожалуйста, не используйте playlistitems.list, если вы хотите получить видео из плейлиста с более чем 300 видео. Вы можете попробовать это в прямом эфире по ссылке Google "https://developers.google.com/youtube/v3/docs/playlistItems/list "в разделе" Попробовать ". Возвращает undefined.

Я также использовал в своем проекте. Он возвращает только undefined.

person Sriharsha P K    schedule 11.03.2015

В 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'];
}
person Phạm Văn Thủy    schedule 26.07.2015

В 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
person Nafiz Bayındır    schedule 30.01.2018

$.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;

            })
          }
        );
     }
person Shahzaib Chadhar    schedule 25.03.2018

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


    });


}

Проверьте полный код здесь https://thecodingshow.blogspot.com/2018/12/youtube-search-api-website.html

person R P S Naik    schedule 08.12.2018