62
задан 6 June 2015 в 22:45

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}

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

120
ответ дан 31 October 2019 в 13:28

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

// 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>
22
ответ дан 31 October 2019 в 13:28

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

Живые Разработчики YouTube: Получение Загрузок Канала в v3 - https://www.youtube.com/watch? v=RjUlmco7v2M

4
ответ дан 31 October 2019 в 13:28

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

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

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

существует соображение ресурса здесь (CPU, память, и т.д.), поскольку Вы выполняете второй вызов, но я верю во многие сценарии, это может быть полезным методом.

4
ответ дан 31 October 2019 в 13:28

Эквивалент запроса, который Вы отправили, является на самом деле поиском в 3,0 API, не запросом плей-листа. Легче также сделать это тот путь. Действительно необходимо обмениваться именем пользователя для идентификатора канала все же.

напр. ДОБРАТЬСЯ https://www.googleapis.com/youtube/v3/playlistItems? part=snippet& playlistId=UUGhCVGZ0ZSpe5hJHWyiLwHA& ключ = {YOUR_API_KEY}

2
ответ дан 31 October 2019 в 13:28

В случае, если это помогает любому здесь, это - то, что я обнаружил и до сих пор, кажется, работаю хорошо на меня. Я аутентифицирую участника через 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}
2
ответ дан 31 October 2019 в 13:28

Альтернативный метод может быть должен получить плей-листы для в настоящее время, OAuth аутентифицировал пользователя через: свойство 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
0
ответ дан 31 October 2019 в 13:28

Не используйте playlistitems.list, если Вы хотите получить видео плей-листа с более затем 300 видео. Можно попробовать его живой в ссылке Google" https://developers.google.com/youtube/v3/docs/playlistItems/list" в разделе "Try it". Это возвращается неопределенный.

я использовал в своем проекте также. Это возвращается неопределенный только.

0
ответ дан 31 October 2019 в 13:28

В 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'];
}
0
ответ дан 31 October 2019 в 13:28

Вот некоторый код, пользующийся официальной библиотекой Google APIs 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);
  });
});
0
ответ дан 31 October 2019 в 13:28

В 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 используется для УСПОКОИТЕЛЬНЫХ запросов. Устанавливать

npm install axios
0
ответ дан 31 October 2019 в 13:28
$.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;

            })
          }
        );
     }
0
ответ дан 31 October 2019 в 13:28

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

0
ответ дан 31 October 2019 в 13:28

Другие вопросы по тегам:

Похожие вопросы: