youtube-api

A Node.JS module, which provides an object oriented wrapper for the Youtube v3 API.

youtube-api

A Node.JS module, which provides an object oriented wrapper for the Youtube v3 API.

$ npm i youtube-api

You may be interested to download this test application and play with the YouTube API resources there. Below you see an example how to use the library.

/**
 * This script uploads a video (specifically `video.mp4` from the current
 * directory) to YouTube,
 *
 * To run this script you have to create OAuth2 credentials and download them
 * as JSON and replace the `credentials.json` file. Then install the
 * dependencies:
 *
 * npm i r-json lien opn bug-killer
 *
 * Don't forget to run an `npm i` to install the `youtube-api` dependencies.
 * */
 
// Depende3ncies 
var Youtube = require("youtube-api")
  , Fs = require("fs")
  , ReadJson = require("r-json")
  , Lien = require("lien")
  , Logger = require("bug-killer")
  , Opn = require("opn")
  ;
 
// Constants 
// I downloaded the file from OAuth2 -> Download JSON 
const CREDENTIALS = ReadJson("./credentials.json");
 
// Init lien server 
var server = new Lien({
    host: "localhost"
  , port: 5000
});
 
var stdIn = ReadLine.createInterface({
    input: process.stdin
  , output: process.stdout
});
 
// Authenticate 
// You can access the Youtube resources via OAuth2 only. 
// https://developers.google.com/youtube/v3/guides/moving_to_oauth#service_accounts 
var oauth = Youtube.authenticate({
    type: "oauth"
  , client_id: CREDENTIALS.web.client_id
  , client_secret: CREDENTIALS.web.client_secret
  , redirect_url: CREDENTIALS.web.redirect_uris[0]
});
 
Opn(oauth.generateAuthUrl({
    access_type: "offline"
  , scope: ["https://www.googleapis.com/auth/youtube.upload"]
}));
 
// Handle oauth2 callback 
server.page.add("/oauth2callback", function (lien) {
    Logger.log("Trying to get the token using the following code: " + lien.search.code);
    oauth.getToken(lien.search.code, function(errtokens) {
        if (err) { lien(err, 400); return Logger.log(err); }
        oauth.setCredentials(tokens);
        Youtube.videos.insert({
            resource: {
                // Video title and description 
                snippet: {
                    title: "Testing YoutTube API NodeJS module"
                  , description: "Test video upload via YouTube API"
                }
                // I don't want to spam my subscribers 
              , status: {
                    privacyStatus: "private"
                }
            }
            // This is for the callback function 
          , part: "snippet,status"
 
            // Create the readable stream to upload the video 
          , media: {
                body: Fs.createReadStream("video.mp4")
            }
        }, function (errdata) {
            if (err) { return lien.end(err, 400); }
            lien.end(data);
        });
    });
});
 

The official Youtube documentation is a very useful resource.

If you have any questions, just open an issue.

Youtube.authenticate({
    type: "oauth"
  , token: "your access token"
});
Youtube.authenticate({
    type: "oauth"
  , refresh_token: "your refresh token"
  , client_id: "your client id"
  , client_secret: "your client secret"
  , redirect_url: "your refresh url"
});

Only for requests that don't require user authorization (certain list operations)

Youtube.authenticate({
    type: "key"
  , key: "your server key"
});

Have an idea? Found a bug? See how to contribute.

KINDLY © Ionică Bizău–The LICENSE file contains a copy of the license.