2015-04-17 2 views
2

У меня есть видеовидео и другие видео-ролики. Как я могу проверить, что видео удалено или нет?Video Host Broken link check

http://www.nowvideo.co/video/cd2950fb2561c //Working link 
http://www.nowvideo.sx/video/72de6ef0d8519 // Not work 

И Мой код

function check_url($url) { 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1); 
$data = curl_exec($ch); 
$headers = curl_getinfo($ch); 
curl_close($ch); 

return $headers['http_code']; 
} 

$url = "http://www.nowvideo.sx/video/72de6ef0d8519"; 

$check_url_status = check_url($url); 
if ($check_url_status == '200') 
echo "Link Works"; 
else 
    echo "Broken Link"; 
?> 

это возвращение "Link Works". Но это видео ссылку удаляется. Но работающий домен Как я могу найти, что ссылка удалено или нет?

+0

Страница по-прежнему возвращает рабочий отклик, содержимое страницы изменяется в зависимости от того, удалено ли видео или нет. Вам нужно проверить содержимое, а не только код состояния. – jbman223

ответ

2

Теперь у видео есть API, который вы можете использовать для проверки этого. Однако, согласно the documentation, нет никакой проверки, чтобы узнать, было ли что-то ранее доступным и с тех пор было удалено, только проверка, чтобы узнать, доступна ли она в настоящее время.

Таким образом, вы можете использовать ссылку

http://www.nowvideo.sx/api-v2/alive.php?link=http://www.nowvideo.sx/video/[yourVideoId] 

Чтобы получить ответ JSon, существует ли видео:

{"resultCode":"200","message":"OK","result":1,"data":null} 

или (и я предполагаю, потому что это не указано в документации)

{"resultCode":"404","message":"NOT_FOUND","result":0,"data":null} 
+0

Обратите внимание, что это только для Now Video. Другие службы предоставят свои собственные API-интерфейсы для проверки такого рода вещей. – DanielM

+0

намного лучше, чем другие ответы здесь, которые работают по совпадению, а не по дизайну. – jheriko

+0

Есть ли другой способ? – Mullinsangebn

1

Возможно, вы не можете использовать HTTP-заголовки для определения того, содержит ли страница видео или нет. Вы можете выполнить поиск страницы HTML для сообщения об ошибке (или использовать API, который также может быть доступен). Попробуйте следующее:

$data = curl_exec($ch); 
$novideo = "This file no longer exists on our servers." 
if(strpos($data, $novideo) === FALSE) { 
    echo "Link Works"; 
} 
else { 
    echo "Broken Link"; 
} 
+0

Я не могу понять .. Этот тоже не работает – Mullinsangebn

+0

Одна из проблем заключается в том, что это зависит от того, что они никогда не меняют содержимое страницы. Если они это сделают, это сломается. – DanielM