it-swarm.com.de

Youtube api v3 Liste der Videos der Nutzer abrufen

Mit Youtube api v2 können Sie Videos ganz einfach abrufen. Senden Sie einfach eine Anfrage wie diese:

http://gdata.youtube.com/feeds/mobile/videos?max-results=5&alt=rss&orderby=published&author=OneDirectionVEVO

Die Youtube-API v2 hat auch eine interaktive Demoseite für die Erstellung von Abfragen: http://gdata.youtube.com/demo/index.html

Mit Youtube api v3 kenne ich den entsprechenden Weg nicht. Bitte weisen Sie mir den Weg mit api v3.

Vielen Dank!

60
vietstone

Die channels # list -Methode gibt eine JSON mit Informationen zum Kanal zurück, einschließlich der Playlist-ID für die Playliste "uploads":

https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=OneDirectionVEVO&key={YOUR_API_KEY}

Mit der Playlist-ID können Sie die Videos mit der playlistItems # list -Methode abrufen:

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUbW18JZRgko_mOGm5er8Yzg&key={YOUR_API_KEY}

Sie können diese am Ende der Dokumentationsseiten testen.

113
Vinicius Pinto

Das sollte es tun. Dieser Code ruft den Titel einfach ab und gibt ihn aus. Sie können jedoch alle gewünschten Details erhalten

// 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>
21
Brad

In V3 der API hat sich vieles geändert. Hier ist ein video , das Sie durch die v3-API-Aufrufe führt, die erforderlich sind, um eine Liste der Videos zu erhalten, die in einem bestimmten Kanal hochgeladen wurden, und Live-Demos mit dem API Explorer.

YouTube Developers Live: Uploads eines Channels in Version 3 - https://www.youtube.com/watch?v=RjUlmco7v2M

4

Falls es jemandem hier hilft, habe ich dies entdeckt und scheint bisher gut für mich zu funktionieren. Ich authentifiziere das Mitglied über OAuth 2.0, bevor ich diese Anfrage stelle, wodurch mir die authentifizierten Mitgliedervideos angezeigt werden. Wie immer können Ihre persönlichen Kilometer variieren: 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
Jonmark Weber

Das Äquivalent der von Ihnen geposteten Anforderung ist eine Suche in der 3.0-API, keine Wiedergabelistenanfrage. Es ist auch einfacher, es so zu machen. Sie müssen jedoch den Benutzernamen für eine Kanal-ID austauschen.

ex. GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUGhCVGZ0ZSpe5hJHWyiLwHA&key= {YOUR_API_KEY}

2
xangadix

Wenn Quotenkosten eine Überlegung sind, kann es von Vorteil sein, diesem einfachen Algorithmus zu folgen. 

Holen Sie sich zuerst die Daten von https://www.youtube.com/feeds/videos.xml?channel_id= ... Dies ist ein einfacher XML-Feed, der Ihnen die Video-IDs gibt. Sie können jedoch keine weiteren Angaben machen. Teile '(Statistiken usw.).

Führen Sie mithilfe der Video-IDs aus dieser Liste eine Abfrage am/videos-API-Endpunkt aus, die eine durch Kommas getrennte Liste der Video-IDs zulässt, die nur 1 Kontingentkosten ergeben sollte, zuzüglich 0-2 für alle zusätzlichen Teileparameter. Wie @chrismacp hervorhebt, ist die Verwendung des Endpunkts/search einfacher, hat jedoch einen Kontingentaufwand von 100, was sich schnell summieren kann.

Es gibt hier eine Ressourcenüberlegung (CPU, Speicher usw.), da Sie einen zweiten Anruf tätigen, aber ich glaube in vielen Szenarien kann dies eine nützliche Methode sein.

2
Appl3s

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


    });


}

Den vollständigen Code finden Sie hier https://thecodingshow.blogspot.com/2018/12/youtube-search-api-website.html

0
R P S Naik

In PHP: Ich habe das pageToken-Attribut verwendet, um zu allen Seiten der Playlist zu gelangen. Ich hoffe, es kann Ihnen helfen. 

//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

Bitte verwenden Sie nicht playlistitems.list, wenn Sie Videos von Playlisten mit mehr als 300 Videos erhalten möchten. Sie können es live unter google link " https://developers.google.com/youtube/v3/docs/playlistItems/list " im Abschnitt "Try it" ausprobieren. Es kehrt undefiniert zurück.

Ich habe auch in meinem Projekt verwendet. Es wird nur undefined zurückgegeben.

0
Sriharsha P K

In node.js kann dies mit folgendem Code erreicht werden. 

Benötigt authKey und channelId als options Objektparameter.

cb callback wird aufgerufen, nachdem Daten abgerufen wurden.

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);
      });
  });
}

Hinweis: Axios wird für RESTful-Anforderungen verwendet. Installieren

npm install axios
0

Eine alternative Methode kann sein, die Wiedergabelisten für den aktuell autorisierten Benutzer über folgende Adresse abzurufen: property mine = true

wo das oauth access_token nach der Authentifizierung abgerufen wird: https://developers.google.com/youtube/v3/guides/authentication

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

Hier finden Sie Code, der die offizielle Google APIs Node-Bibliothek verwendet ( 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
chrismacp
$.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);
});

      });

Uploads Funktion kann sein

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