2017-02-11 124 views
0

我被分配創建一個節點js應用程序,該應用程序被提供給一些需要提交視頻的可信人員。預算非常小,他們沒有錢租用雲存儲。Youtube數據api - 將視頻上傳到一個頻道

現在我想知道是否有可能生成某種鍵並將視頻從設備上傳到單個YouTube頻道。我搜索了文檔,但找不到相關的內容。

用戶是內部和可信任的,應用程序將不會在別人的手中。

這可能嗎?如果不是,有什麼好的選擇?

感謝, 尼克

回答

2

google-api-nodejs-client回購,你的YouTube視頻上傳代碼here一個例子與樣本文檔here

它使用用於上傳到YouTube的視頻Youtube insert API並設置視頻的元數據

這是一個最小的功能示例(在此示例中需要手動設置授權碼):

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

如果用戶獲得與右聲道的授權碼,視頻將被上傳到同一通道

+0

我忘了提,我使用在客戶端的角度,所以需要將在這裏工作。儘管如此,這給了我更好的見解。我會讓你知道它是否工作:) –

+1

如果你想調用api客戶端,你有一個Javascript的例子[這裏](https://developers.google.com/youtube/v3/docs/videos/insert#示例) –

+0

是的,也發現它:)只是混淆瞭如何用我的憑據替換谷歌登錄按鈕。 –

相關問題