我正在使用MEAN构建Web应用程序,应用程序应检查给定URL的YouTube视频可用性
应用程序从数据库中获取视频ID,为每个ID调用YouTube API以检查视频是否存在,然后使用结果更新数据库
即时通过一些ID
随机获取此错误{[错误:getaddrinfo ENOTFOUND www.googleapis.com www.googleapis.com:443]代码:'ENOTFOUND',错误:'ENOTFOUND',
系统调用:'getaddrinfo',主机名:'www.googleapis.com',主持人: 'www.googleapis.com',port:443}
我搜索了,我发现它在连接中发生了应有的错误。
但是,如果失败,我无法再次回想起YouTube API
这是我的代码
致电YouTube API
function (youtubeId,id){
var searchParams = {
part: 'id',
id: youtubeId
}
youtube.videos.list(searchParams, function(err, body) {
if (err) {
console.log(err)
return
}
MongoClient.connect(config.databaseUrl, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err)
} else {
if (body.items.length) {
db.collection(config.collectionName).update({_id:id},{$currentDate:{"lastChecked": true}, $set: {"lastResponse":1}},function (err, numUpdated) {
if (err) {
console.log(err)
} else if (numUpdated) {
console.log(youtubeId+ ' is available >> ID '+ id)
} else {
console.log('No document found with defined "find" criteria!')
}
//Close connection
db.close()
})
}
else {
db.collection(config.collectionName).update({_id:id},{$currentDate:{"lastChecked": true}, $set: {"lastResponse":0}},function (err, numUpdated) {
if (err) {
console.log(err)
} else if (numUpdated) {
console.log(youtubeId+ ' is unavailable >> ID '+ id)
} else {
console.log('No document found with defined "find" criteria!')
}
//Close connection
db.close()
})
}
}
})
})
}
获取视频ID
app.get('/run', function (req, res) {
MongoClient.connect(config.databaseUrl, function (err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err)
} else {
console.log('Connection established to', config.databaseUrl)
var cursor = db.collection(config.collectionName).find()
cursor.sort({"priority": 1, 'lastChecked': 1})
cursor.skip(0)
cursor.each(function (err, doc) {
if (err) {
console.log(err)
} else {
if(doc !== null){
//check which video to check
if (checkPriority(doc.lastChecked,doc.priority)) {
youtubeChecker(doc.youtubeID,doc._id)
}
else {
console.log("No Videos to check");
}
}
}
})
}
})
})