我有一个嵌入youtube视频的音乐网站, 在某些视频中我收到此错误: "该视频包含来自...的内容,该内容已阻止其在本网站上显示" 如果视频在我的网站上被阻止,有没有办法检查PHP? 感谢
答案 0 :(得分:2)
通过在onPlayerStateChange事件中检查-1,只要播放器出现任何类型的错误,您的代码就会触发,而不仅仅是当内容被限制用于嵌入式播放时。更好的方法是连接api的onError
事件并检查错误代码101和150(它们是相同的)。这将允许您在发生其他错误(错误请求,HTML 5问题等)的情况下采取不同的行动
function onError(event){
switch(event.data){
case 2:
console.log('request contains an invalid parameter value')
break
case 5:
console.log('The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.')
break
case 100:
console.log('The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.')
break
case 101:
case 150:
console.log('Uploader has blocked this content from embedded playback')
break
default:
console.log('error code: '+event.data)
}
}
答案 1 :(得分:0)
您需要使用YouTube API v3进行检查。
https://developers.google.com/youtube/v3/docs/videos/list
它的两倍;
1:检查是否已将其从YouTube中移除并检查总结果是否为> 0
获取https://www.googleapis.com/youtube/v3/videos?part=id&id=123456&key= {YOUR_API_KEY}
2:检查访问限制,如果总结果> 0
获取https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=123456&key= {YOUR_API_KEY}
查找regionRestriction =被阻止(国家/地区代码与您的相同)
有关API的更多信息,请点击此处;
答案 2 :(得分:0)
在我读了一些关于这个问题的帖子之后,我明白我无法获得黑名单,所以我找到了一个虚拟解决方案, 如果youtube因任何原因无法播放视频,我会销毁播放器并做我想做的事情(显示另一个播放器/视频,或将用户移动到另一个页面)
function onPlayerStateChange(event) {
if(event.data === -1) {
// cant play the video, write here whatever you want
}
}