Javascript 将视频添加到Youtube播放列表NodeJS

Javascript 将视频添加到Youtube播放列表NodeJS,javascript,node.js,youtube,youtube-api,youtube-data-api,Javascript,Node.js,Youtube,Youtube Api,Youtube Data Api,我目前正在编写代码,使用我从中收到的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

我目前正在编写代码,使用我从中收到的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);
            }
        });
    });
});
var google=require('googleapis');
var留置权=要求(“留置权”);
var OAuth2=google.auth.OAuth2;
var服务器=新留置权({
主机:“本地主机”
,港口:5000
});
var oauth2Client=新的OAuth2(
“您的客户ID”,
“你的客户的秘密”,
'http://localhost:5000/oauthcallback'
);
变量作用域=[
'https://www.googleapis.com/auth/youtube'
];
var youtube=google.youtube({
版本:“v3”,
授权:oauth2Client
});
server.addPage(“/”,lien=>{
var url=oauth2Client.generateAuthUrl({
访问类型:“脱机”,
范围:范围
});
留置权。结束(“”);
})
server.addPage(“/oauthcallback”,lien=>{
log(“获取代码:+lien.query.Code”);
oauth2Client.getToken(lien.query.code,(err,tokens)=>{
如果(错误){
返回console.log(err);
}
oauth2Client.setCredentials(令牌);
youtube.playlists.insert({
部分:'id,snippet',
资源:{
片段:{
标题:“测试”,
description:“description”,
}
}
},函数(错误、数据、响应){
如果(错误){
结束('错误:'+err);
}
else if(数据){
留置权。结束(数据);
}
如果(答复){
console.log('状态代码:'+响应.statusCode);
}
});
});
});
我现在转到我的项目的一部分,我需要一种方法,一旦我创建了这个播放列表,就可以将视频添加到这个播放列表中。只是用JS编写的,没有详细介绍nodejs,因此我一直在研究如何用nodejs实现这个实现。我如何创建这样的方法(从上面链接的JS实现接收):

函数addToPlaylist(id、startPos、endPos){
变量详细信息={
视频id:id,
种类:“youtube#视频”
}
if(startPos!=未定义){
详细信息['startAt']=startPos;
}
如果(endPos!=未定义){
详细信息['endAt']=endPos;
}
var request=gapi.client.youtube.playlitems.insert({
部分:'代码片段',
资源:{
片段:{
playlid:playlid,
resourceId:详细信息
}
}
});
请求.执行(函数(响应){
$('#status').html(''+JSON.stringify(response.result)+'';
});
}

使用NodeJS语言,使用我已经启动的实现?

如果要将结果呈现为HTML,首先需要使用视图引擎(如jade或pug),然后创建模板,最后将其与响应一起呈现

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

首先创建模板(Im使用Pug)并将其另存为results.Pug

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


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


我想你误解了这个问题或者我误解了你的答案,我没有试图用HTML呈现任何东西,我没有在这里使任何东西可视化。我想知道的是,如何使用nodejsDid将视频添加到youtube上的播放列表代码成功了吗?如果没有OAuth令牌生成,我无法找到如何使用Youtube api。谢谢
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)
  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);
            }
        });