【问题标题】:Add video to Youtube playlist NodeJS将视频添加到 Youtube 播放列表 NodeJS
【发布时间】:2018-03-10 14:41:10
【问题描述】:

我目前正在编写代码以使用我从a previous question I had 收到的 nodejs 服务器以编程方式创建一个 youtube 播放列表,并使用下面的工作代码来执行此操作:

var google = require('googleapis');
var Lien = require("lien");
var OAuth2 = google.auth.OAuth2;

var server = new Lien({
    host: "localhost"
  , port: 5000
});

var oauth2Client = new OAuth2(
  'YOUR_CLIENT_ID',
  'YOUR_CLIENT_SECRET',
  'http://localhost:5000/oauthcallback'
);

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

var youtube = google.youtube({
  version: 'v3',
  auth: oauth2Client
});

server.addPage("/", lien => {
    var url = oauth2Client.generateAuthUrl({
        access_type: "offline",
        scope: scopes
    });
    lien.end("<a href='"+url+"'>Authenticate yourself</a>");
})

server.addPage("/oauthcallback", lien => {
    console.log("Code obtained: " + lien.query.code);
    oauth2Client.getToken(lien.query.code, (err, tokens) => {
        if(err){
            return console.log(err);
        }

        oauth2Client.setCredentials(tokens);
        youtube.playlists.insert({
            part: 'id,snippet',
            resource: {
                snippet: {
                    title:"Test",
                    description:"Description",
                }
            }
        }, function (err, data, response) {
            if (err) {
                lien.end('Error: ' + err);
            }
            else if (data) {
                lien.end(data);
            }
            if (response) {
                console.log('Status code: ' + response.statusCode);
            }
        });
    });
});

我现在正在继续我的项目部分,我需要一种方法在创建此播放列表后将视频添加到该播放列表中。 The sample code that I am following along with 仅用 JS 编写,并没有详细说明 nodejs,因此我被困在如何使用 nodejs 实现此实现上。我怎样才能创建这样的方法(从上面链接的 JS 实现中获得):

function addToPlaylist(id, startPos, endPos) {
  var details = {
    videoId: id,
    kind: 'youtube#video'
  }
  if (startPos != undefined) {
    details['startAt'] = startPos;
  }
  if (endPos != undefined) {
    details['endAt'] = endPos;
  }
  var request = gapi.client.youtube.playlistItems.insert({
    part: 'snippet',
    resource: {
      snippet: {
        playlistId: playlistId,
        resourceId: details
      }
    }
  });
  request.execute(function(response) {
    $('#status').html('<pre>' + JSON.stringify(response.result) + '</pre>');
  });
}

在 NodeJS 语言中使用我已经开始的实现?

【问题讨论】:

  • 你的代码成功了吗?我不知道如何在没有 OAuth 令牌生成的情况下使用 Youtube api。谢谢。

标签: javascript node.js youtube youtube-api youtube-data-api


【解决方案1】:

如果你想将结果呈现为 HTML,首先你需要使用像(jade 或 pug)这样的视图引擎,然后创建一个模板,最后将它与响应一起呈现。

根据您的示例,您可以这样做:

首先创建一个模板(我使用 Pug)将其保存为 results.pug

html
  head
    title= title
  body
    h1= title
    p=description

    img(src=thumbnails.medium.url)

然后在下面更新您的代码:

var google = require('googleapis');
var Lien = require("lien");
var OAuth2 = google.auth.OAuth2;
var pug = require('pug')
var server = new Lien({
    host: "localhost"
  , port: 5000,
  views:{
    path:__dirname,
    name:'pug'
  }
});

var oauth2Client = new OAuth2(
  'YOUR_CLIENT_ID',
  'YOUR_CLIENT_SECRET',
  'http://localhost:5000/oauthcallback'
);

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

var youtube = google.youtube({
  version: 'v3',
  auth: oauth2Client
});

server.addPage("/", lien => {
    var url = oauth2Client.generateAuthUrl({
        access_type: "offline",
        scope: scopes
    });
    lien.end("<a href='"+url+"'>Authenticate yourself</a>");
})

server.addPage("/oauthcallback", lien => {
    console.log("Code obtained: " + lien.query.code);
    oauth2Client.getToken(lien.query.code, (err, tokens) => {
        if(err){
            return console.log(err);
        }

        oauth2Client.setCredentials(tokens);
        youtube.playlists.insert({
            part: 'id,snippet',
            resource: {
                snippet: {
                    title:"Test",
                    description:"Description",
                }
            }
        }, function (err, data, response) {
            if (err) {
                lien.end('Error: ' + err);
            }
            else if (data) {
                //lien.end(data);
                lien.render('results',data.snippet)
            }
            if (response) {
                console.log('Status code: ' + response.statusCode);
            }
        });
    });
});

我在您的代码上更新的内容是:

var server = new Lien({
        host: "localhost"
      , port: 5000,
      views:{
        path:__dirname,
        name:'pug'
      }
    });

和

//lien.end(data);
lien.render('results',data.snippet)

【讨论】:

  • 我认为你误解了这个问题或者我误解了你的答案,我没有尝试在 HTML 中呈现任何内容,我没有在这里制作任何视觉效果。我只想知道如何使用 nodejs 将视频添加到 youtube 上的播放列表
【解决方案2】:

我现在明白你的意思了。如果你想在你的播放列表中添加一个视频,那么你可以在 Node 中使用它来做到这一点。

  youtube.playlistItems.insert({
            part: 'id,snippet',
            resource: {
                snippet: {
                    playlistId:"YOUR_PLAYLIST_ID",
                    resourceId:{
                        videoId:"THE_VIDEO_ID_THAT_YOU_WANT_TO_ADD",
                        kind:"youtube#video"
                    }
                }
            }
        }, function (err, data, response) {
            if (err) {
                lien.end('Error: ' + err);
            }
            else if (data) {
                lien.end(data);
            }
            if (response) {
                console.log('Status code: ' + response.statusCode);
            }
        });

【讨论】:

    猜你喜欢
    • 2018-04-09
    • 2014-02-09
    • 2015-12-31
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多