Search code examples
javascriptnode.jsyoutubegoogle-api-nodejs-client

How to get video ids from an YouTube playlist?


"googleapis": "^16.1.0"

I have a playlist where there are two videos. How can I get the videos ids?

I tried this:

// Node.js
const google = require('googleapis');
const youtube = google.youtube('v3');
const secrets = require('./secrets.json');

const results = youtube.playlists.list({
  auth: secrets.web.api_key,
  part: 'id',
  id: 'PLvxLmGsmqdZc-GYVeLhS0N_6jfrzEleQm'
});

console.log(results);

Upon the code execution, I receive this: https://gist.github.com/SergeyBondarenko/ea6a2aad546ded32e4a9b3cf53228fef

And there is only the playlist id:

// Node.js
> results.responseContent.body.items
[ { kind: 'youtube#playlist',
    etag: '"gMxXHe-zinKdE9lTnzKu8vjcmDI/cYPhPXIoWu4acW3Qux1D5WZ3WwE"',
    id: 'PLvxLmGsmqdZc-GYVeLhS0N_6jfrzEleQm' } ]

I don't have items property inside the results object:

// Node.js
> request.i
request.isPrototypeOf  
request.init   

And as far as I understand the items property must contain the results, like in the following example:

 // Python
 results = youtube.playlists().list(
    part="snippet,localizations",
    id=playlist_id
  ).execute()

  playlist = results["items"][0]

https://developers.google.com/youtube/v3/docs/playlists/list


Solution

  • I used the wrong method to retrieve the playlist videos ids. The method to use is playlistItems:

    // Node.js
    const { google } = require('googleapis');
    const youtube = google.youtube('v3');
    const secrets = require('./secrets.json');
    
    youtube.playlistItems.list({
      key: secrets.web.api_key,
      part: 'id,snippet',
      playlistId: 'PLvxLmGsmqdZc-GYVeLhS0N_6jfrzEleQm',
      maxResult: 10,
    }, (err, results) => {
      console.log(err ? err.message : results.items[0].snippet);
    });
    

    Results:

    { publishedAt: '2017-01-21T13:16:09.000Z',
      channelId: 'UCSD9RekiljT4DzK_6VvYY6A',
      title: 'Monster (feat. Jay-Z, Nicki Minaj, Rick Ross, Bon Iver)',
      description: 'Oficial',
      thumbnails:
       { default:
          { url: 'https://i.ytimg.com/vi/EOpQdJ5F5TI/default.jpg',
            width: 120,
            height: 90 },
         medium:
          { url: 'https://i.ytimg.com/vi/EOpQdJ5F5TI/mqdefault.jpg',
            width: 320,
            height: 180 },
         high:
          { url: 'https://i.ytimg.com/vi/EOpQdJ5F5TI/hqdefault.jpg',
            width: 480,
            height: 360 },
         standard:
          { url: 'https://i.ytimg.com/vi/EOpQdJ5F5TI/sddefault.jpg',
            width: 640,
            height: 480 } },
      channelTitle: 'Sergey Bondarenko',
      playlistId: 'PLvxLmGsmqdZc-GYVeLhS0N_6jfrzEleQm',
      position: 0,
      resourceId: { kind: 'youtube#video', videoId: 'EOpQdJ5F5TI' } }