如何檢查是否在node.js的應用程序服務器端YouTube視頻的存在:檢查服務器端如果YouTube視頻的存在
var youtubeId = "adase268_";
// pseudo code
youtubeVideoExist = function (youtubeId){
return true; // if youtube video exists
}
如何檢查是否在node.js的應用程序服務器端YouTube視頻的存在:檢查服務器端如果YouTube視頻的存在
var youtubeId = "adase268_";
// pseudo code
youtubeVideoExist = function (youtubeId){
return true; // if youtube video exists
}
使用youtube-feeds模塊。工程快(200毫秒〜),無需API_KEY
youtube = require("youtube-feeds");
existsFunc = function(youtubeId, callback) {
youtube.video(youtubeId, function(err, result) {
var exists;
exists = result.id === youtubeId;
console.log("youtubeId");
console.log(youtubeId);
console.log("exists");
console.log(exists);
callback (exists);
});
};
var notExistentYoutubeId = "y0srjasdkfjcKC4eY"
existsFunc (notExistentYoutubeId, console.log)
var existentYoutubeId = "y0srjcKC4eY"
existsFunc (existentYoutubeId, console.log)
輸出:
❯ node /pathToFileWithCodeAbove/FileWithCodeAbove.js
youtubeId
y0srjcKC4eY
exists
true
true
youtubeId
y0srjasdkfjcKC4eY
exists
false
false
我想不出辦法的,不涉及製作一個單獨的HTTP請求視頻鏈接以查看它是否存在,除非您事先知道一組無效,無效或錯誤的視頻ID。
下面是一些可能適合您的示例。我不能立即告訴你是否將它用作獨立腳本或作爲Web服務器的一部分。下面的例子假設後者假設你調用了一個/video?123videoId
上的網絡服務器,並讓它響應或根據是否存在具有該ID的視頻進行操作。它使用節點的request庫,它可以用npm install request
安裝:
var request = require('request');
// Your route here. Example on what route may look like if called on /video?id=123videoId
app.get('/video', function(req, response, callback){
var videoId = 'adase268_'; // Could change to something like request.params['id']
request.get('https://www.youtube.com/watch?v='+videoId, function(error, response, body){
if(response.statusCode === 404){
// Video doesn't exist. Do what you need to do here.
}
else{
// Video exists.
// Can handle other HTTP response codes here if you like.
}
});
});
// You could refactor the above to take out the 'request.get()', wrap it in a function
// that takes a callback and re-use in multiple routes, depending on your problem.
@rodrigomartell是在正確的軌道,在您檢查功能將需要發出HTTP調用上;但是,在大多數情況下,僅檢查youtube.com網址將不起作用。如果videoID是一個格式不正確的ID(例如,少於11個字符或使用在他們的方案中無效的字符),那麼您將得到404,但如果它是正確形成的videoID,恰好與視頻不匹配,則會還是拿回了200元。這將是更好地使用API請求,像這樣的(注意,這可能是更容易使用的請求 - JSON庫,而不是僅僅要求庫):
request = require('request-json');
var client = request.newClient('https://www.googleapis.com/youtube/v3/');
youtubeVideoExist = function (youtubeId){
var apikey ='YOUR_API_KEY'; // register for a javascript API key at the Google Developer's Console ... https://console.developers.google.com/
client.get('videos/?part=id&id='+youtubeId+'&key='+apikey, function(err, res, body) {
if (body.items.length) {
return true; // if youtube video exists
}
else {
return false;
}
});
};
我有問題越來越'API_KEY',我配置了,但無論如何得迴應消息:'訪問未配置。請使用Google Developers Console爲您的項目啓用API –
你不」噸需要使用每本身YouTube的API,你可以看看縮略圖:
有效視頻= 200 - OK:
http://img.youtube.com/vi/gC4j-V585Ug/0.jpg
無效的視頻= 404 - 未發現:
http://img.youtube.com/vi/gC4j-V58xxx/0.jpg
我想我可以使從瀏覽器這項工作,因爲你可以加載第三方網站的圖片沒有安全問題。但是測試它時,它沒有將404報告爲錯誤,可能是因爲內容主體仍然是有效的圖像。由於您使用的是節點,因此您應該能夠直接查看HTTP響應代碼。
所有你需要的是尋找縮略圖。在NodeJS中,它可能類似於
var http = require('http');
function isValidYoutubeID(youtubeID) {
var options = {
method: 'HEAD',
host: 'img.youtube.com',
path: '/vi/' + youtubeID + '/0.jpg'
};
var req = http.request(options, function(res) {
if (res.statusCode == 200){
console.log("Valid Youtube ID");
} else {
console.log("Invalid Youtube ID");
}
});
req.end();
}
API_KEY不是必需的。這是相當快的,因爲只有狀態碼200/404的標題檢查和圖像未加載。
你可以用'HEAD',而不是'GET' –
抱歉,這個方法不是爲我工作:八方通狀態代碼200,即使沒有視頻存在 –