2017-02-11 6 views
0

Ich bin zugewiesen, um einen Knoten js App, die an ein paar vertrauenswürdige Personen, die Videos einreichen müssen, zu erstellen. Das Budget ist wirklich klein und sie haben nicht das Geld, um Cloud-Speicher zu mieten.Youtube Daten API - Upload von Videos auf einen Kanal

Jetzt habe ich mich gefragt, ob es möglich ist, eine Art Schlüssel zu generieren und Videos von einem Gerät auf einen einzigen Youtube-Kanal hochzuladen. Ich habe die Dokumente durchsucht, konnte aber nichts Relevantes finden.

Die Benutzer sind intern und vertrauenswürdig, es gibt keine Möglichkeit, dass die App in den Händen anderer ist.

Ist das möglich? Wenn nicht, was sind gute Alternativen?

Danke, Nick

Antwort

2

In google-api-nodejs-client Repo, haben Sie ein Beispiel für youtube video upload Code here mit der Probe doc here

Es Youtube insert API ein Video auf YouTube verwendet wird, verwendet zum Hochladen und setzt Metadaten des Video

Hier ist ein minimales funktionelles Beispiel (der Autorisierungscode muss in diesem Beispiel manuell eingestellt werden):

var google = require('googleapis'); 
var util = require('util'); 
var fs = require('fs'); 
var http = require('http'); 
var spawn = require('child_process').spawn; 
var querystring = require('querystring'); 
var url = require('url'); 

var OAuth2 = google.auth.OAuth2; 

var FILENAME = '/home/user/test.mp4'; 

// get these from https://console.developers.google.com/apis/credentials (don't forget to activate Youtube API) 
var YOUR_CLIENT_ID = "XXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"; 
var YOUR_CLIENT_SECRET = "XXXXX-XXXXXXXXXXXXXXXXXX"; 
var YOUR_REDIRECT_URL = "https://your-domain/redirect"; 

var oauth2Client = new OAuth2(
    YOUR_CLIENT_ID, 
    YOUR_CLIENT_SECRET, 
    YOUR_REDIRECT_URL 
); 

// initialize the Youtube API library 
var youtube = google.youtube({ 
    version: 'v3', 
    auth: oauth2Client 
}); 

// very basic example of uploading a video to youtube 
function uploadVideo() { 

    var req = youtube.videos.insert({ 
     part: 'id,snippet,status', 
     notifySubscribers: false, 
     resource: { 
      snippet: { 
       title: 'Node.js YouTube Upload Test', 
       description: 'Testing YouTube upload via Google APIs Node.js Client' 
      }, 
      status: { 
       privacyStatus: 'private' 
      } 
     }, 
     media: { 
      body: fs.createReadStream(FILENAME) 
     } 
    }, function(err, data) { 
     if (err) { 
      console.error('Error: ' + err); 
     } 
     if (data) { 
      console.log(util.inspect(data, false, null)); 
     } 
     process.exit(); 
    }); 

    var fileSize = fs.statSync(FILENAME).size; 

    // show some progress 
    var id = setInterval(function() { 
     var uploadedBytes = req.req.connection._bytesDispatched; 
     var uploadedMBytes = uploadedBytes/1000000; 
     var progress = uploadedBytes > fileSize ? 100 : (uploadedBytes/fileSize) * 100; 
     process.stdout.clearLine(); 
     process.stdout.cursorTo(0); 
     process.stdout.write(uploadedMBytes.toFixed(2) + ' MBs uploaded. ' + 
      progress.toFixed(2) + '% completed.'); 
     if (progress === 100) { 
      process.stdout.write('\nDone uploading, waiting for response...\n'); 
      clearInterval(id); 
     } 
    }, 250); 
} 

var scopes = [ 
    'https://www.googleapis.com/auth/youtube.upload', 
    'https://www.googleapis.com/auth/youtube' 
]; 

var authorizeUrl = oauth2Client.generateAuthUrl({ 
    access_type: 'offline', 
    scope: scopes.join(' ') 
}); 

console.log("go to " + authorizeUrl + " to get authorization code"); 

var AUTHORIZATION_CODE = "X/XXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXX"; 

oauth2Client.getToken(AUTHORIZATION_CODE, function(err, tokens) { 
    // Now tokens contains an access_token and an optional refresh_token. Save them. 
    if (!err) { 
     oauth2Client.setCredentials(tokens); 
     uploadVideo(); 
    } else { 
     console.log(err); 
    } 
}); 

Wenn der Benutzer den Autorisierungscode mit dem rechten Kanal erhält, wird das Video auf den gleichen Kanal

+0

ich vergessen hochgeladen wird, dass ich auf Client-Seite Winkel bin mit, so erfordern hier nicht funktionieren. Trotzdem gab mir das einen besseren Einblick. Ich werde Sie wissen lassen, ob es funktioniert :) –

+1

Wenn Sie die API-Clientseite aufrufen möchten, haben Sie ein Javascript-Beispiel [hier] (https://developers.google.com/youtube/v3/docs/videos/insert#) Beispiele) –

+0

Ja, fand es auch :) Nur verwirrt darüber, wie die Google-Login-Taste mit meinen Anmeldeinformationen zu ersetzen. –

Verwandte Themen