Установите заголовок видео YouTube при загрузке с помощью Node.js (модуль googleapi v1.0)

Я пытаюсь загрузить видео на свой канал YouTube, используя модуль googleapi в Node.js (YouTube API V3)

Видео загружается нормально - я просто не могу найти, как передать заголовок и описание в команду загрузки.

Это мой код:

//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',
}

но я не могу найти, где это должно быть - я перепробовал все (почти) возможные комбинации

Спасибо!


person Yaron U.    schedule 24.08.2014    source источник


Ответы (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);
        }
    });
};
person Yaron U.    schedule 25.08.2014