我有一个大约5000个视频的数据库,我注意到其中一些现在被删除了。所以我决定写一个php脚本来修复批量检查这个…从下面的各种来源是我实现的代码基于这里的大多数答案,但它没有给出正确的结果。IT给了3/4的视频一个403的标题,尽管实际上超过90%的视频是正常的,我错过了什么吗?
foreach ($video as $cat) {
$str = explode("=",$cat->videourl);
$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $str[1]);
if (!strpos($headers[0], '200')) {
print_r($headers[0].'<br>');
$i=$i+1;
print_r("Unpublish".$cat->id. PHP_EOL);
}
else{
print_r("publish".$cat->id. PHP_EOL);
}
}
我在这里打印头来调试它,对于大多数它给出,HTTP/1.0 403禁止编辑::我已经检查了视频是正确传递的(所以字符串处理没有问题)
对于任何试图实现这一点的人,这里是代码。我花了好几个小时才让它在新的api中工作。
$headers = checkYoutubeId ($str[1]);
if ($headers == false) {
$i=$i+1;
$db->query('UPDATE `ckf_hdflv_upload` SET `published`="0" Where `id`='.$cat->id);
print_r("Unpublished".$cat->id. PHP_EOL);
}
else{
$db->query('UPDATE `ckf_hdflv_upload` SET `published`="1" Where `id`='.$cat->id);
}
}
}
echo('done'.$i);
function checkYoutubeId($id) {
if (!$data = @file_get_contents("http://gdata.youtube.com/feeds/api/videos/".$id)) return false;
if ($data == "Video not found") return false;
if ($data == "Private video") return false;
return true;
}