使用Node.js上传时设置YouTube视频节目(googleapi module v1.0)

时间:2014-08-24 22:00:07

标签: node.js upload youtube youtube-api google-api-nodejs-client

我尝试使用Node.js中的googleapi模块(YouTube API V3)将视频上传到我的YouTube频道

视频上传得很好 - 我无法找到如何将标题和说明传递给上传命令。

这是我的代码:

//Authorization stuff above

fs.readFile('./youtube_videos/in.avi', function(err, content){
    if(err){
        console.log('read file error: '+err);
    } else {
        yt.videos.insert({
            part: 'status,snippet',
            autoLevels: true,
            media: {
                body: content
            }
        }, function(error, data){
            if(error){
                console.log('error: '+error);
            } else {
                console.log('https://www.youtube.com/watch?v='+data.id+"\r\n\r\n");
                console.log(data);
            }
        });
    }
})

我知道如何传递一些snippet对象,如

snippet: {
    title: 'test upload2',
    description: 'My description2',
}

但是我无法找到它应该在哪里 - 我尝试了每一种(几乎)可能的组合

谢谢!

1 个答案:

答案 0 :(得分:1)

我找到了答案 如果有人正在寻找它 - 该代码段应该是请求选项中resource对象的一部分

(我还将fs.readFile转换为fs.createReadStream

function uploadToYoutube(video_file, title, description,tokens, callback){
    var google = require("googleapis"),
        yt = google.youtube('v3');

    var oauth2Client = new google.auth.OAuth2(clientId, appSecret, redirectUrl);
    oauth2Client.setCredentials(tokens);
    google.options({auth: oauth2Client});

    return yt.videos.insert({
        part: 'status,snippet',
        resource: {
            snippet: {
                title: title,
                description: description
            },
            status: { 
                privacyStatus: 'private' //if you want the video to be private
            }
        },
        media: {
            body: fs.createReadStream(video_file)
        }
    }, function(error, data){
        if(error){
            callback(error, null);
        } else {
            callback(null, data.id);
        }
    });
};