Tom*_*Tom 40 youtube api validation
我想在访问Youtube API之前验证youtube视频ID在我的网站的网址中插入,但我不知道允许的字符在这样的ID中是什么.我看到网上的人猜测它可以包含数字和字符,但我还没有看到这些视频ID的官方规范.
有吗?
rom*_*n m 58
有关官方信息,请参阅此主题.
你可以点击这个:http://gdata.youtube.com/feeds/api/videos/VIDEO_ID (页面现在返回:"不再可用".)
并根据响应确定视频是否有效
您无法使用RegEx检查ID的有效性,因为并非所有字母数字值都是有效ID.
ps我很确定我在视频ID中看到了"破折号"
pps"下划线"也是一个有效的角色:http://www.youtube.com/watch?v = nkGk0AuFd_9
[a-zA-Z0-9 _-] {11}是正则表达式(源),但即使正则表达式有效,也无法保证视频会在那里
ric*_*wol 13
使用YouTube API的v3,我通过调用以下方式实现了此目的:
GET https://www.googleapis.com/youtube/v3/videos?part=id&id=Tr5WcGSDqDg&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)
这返回类似于:
{
"kind": "youtube#videoListResponse",
"etag": "\"dc9DtKVuP_z_ZIF9BZmHcN8kvWQ/P2cGwKgbH6EYZAGxiKCZSH8R1KY\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [{
"kind": "youtube#video",
"etag": "\"dc9DtKVuP_z_ZIF9BZmHcN8kvWQ/Rgd0_ApwigPcJHVX1Z2SIQ5FJtU\"",
"id": "Tr5WcGSDqDg"
}]
}
Run Code Online (Sandbox Code Playgroud)
所以你可以做一个检查:
if(json.hasOwnProperty('pageInfo') && json.pageInfo.totalResults === 1) {
if(items[0].kind==='youtube#video') {
//valid video ID
}
}
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找一种更快速,更具可扩展性的解决方案,我会说如果youtube将来更改其ID,则可以使用REGEX和一些日志记录/回退来纠正错误.
我一直在使用YouTube API一段时间处理数百万个视频,通过它们循环我发现这是最理想的:
/^[A-Za-z0-9_-]{11}$/
Run Code Online (Sandbox Code Playgroud)
一个更详细的例子在PHP中说:
public static function validId($id) {
return preg_match('/^[a-zA-Z0-9_-]{11}$/', $id) > 0;
}
Run Code Online (Sandbox Code Playgroud)
我用罗马推荐的方式解决了这个问题.在我的帮手中:
请务必在文件顶部包含您的要求:
require "net/http"
require "uri"
Run Code Online (Sandbox Code Playgroud)
然后:
def validate_id(youtube_id)
uri = URI.parse("http://gdata.youtube.com/feeds/api/videos/#{ youtube_id }")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
%Q{ #{response.code} }
end
Run Code Online (Sandbox Code Playgroud)
确保"#{response.code}"中括号之间没有空格
最后,将其与期望的响应进行比较:
def youtube_data(youtube_id)
if validate_id(youtube_id) == "200"
#video is good code
else %Q{ Video is no longer valid }
end
end
Run Code Online (Sandbox Code Playgroud)
小智 6
下面是一个简单的 JavaScript 实现:
async function validVideoId(id) {
const url = "http://img.youtube.com/vi/" + id + "/mqdefault.jpg";
const { status } = await fetch(url);
if (status === 404) return false;
return true;
}
console.log(validVideoId('60ItHLz5WEA'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25536 次 |
| 最近记录: |