2017-02-11 8 views
0

私は、ビデオを提出する必要のある信頼できる人に与えられるノードjsアプリケーションを作成するように割り当てられています。予算は本当に小さく、クラウドストレージをレンタルするためのお金はありません。Youtube data api - ビデオを1つのチャンネルにアップロードする

ここで、ある種の鍵を生成し、デバイスから1つのYouTubeチャネルにビデオをアップロードすることが可能かどうかは疑問でした。ドキュメントを検索しましたが、関連するものが見つかりませんでした。

ユーザーは内部で信頼されているため、他の誰かにアプリが公開されることはありません。

これは可能ですか?そうでない場合、良い選択肢は何ですか? google-api-nodejs-clientレポで

おかげで、 ニック

答えて

2

は、あなたがサンプルドキュメント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の例[here](https://developers.google.com/youtube/v3/docs/videos/insert#例) –

+0

ええ、それも見つかりました:)ちょうど私の資格情報でGoogleのログインボタンを置き換える方法を混乱させる。 –

関連する問題