2012-04-15 4 views
3

가능한 중복 :
Check if Youtube and Vimeo-clips are validPHP를 사용하여 YouTube 동영상이 삭제되었는지 확인 하시겠습니까?

나는 YouTube 동영상을 많이하지만,이 동영상은 사용자 또는 YouTube 중 하나에 의해 제거되는 많은 시간에 연결하는 웹 사이트가있다. 이것은 내 사이트에 많은 데드 비디오가 있다는 것을 의미하며 수동으로 모두 확인하는 것이 너무나 많은 악몽 일 것입니다.

그래서 YouTube 동영상이 PHP를 사용하여 유효한지 확인하는 방법을 찾고 있습니다. 나는 같은 질문을하는 사람들과 많은 실을 보았지만 게시 된 솔루션을 얻을 수는 없었다.

+0

삭제 된 동영상과 아직 작동중인 동영상의 링크 (또는 식별하는 데 사용하는 항목)의 예를 제공해주세요. – hakre

답변

7

youtube V3 API를 사용하여 동영상에 액세스 할 수 있는지 확인하십시오.

: 자세한 정보를 원하시면 당신은 같은 샘플 응답을 받게됩니다,

https://developers.google.com/youtube/v3/docs/videos/list

기본적으로 다음과 같은 문서를 참조

GET https://www.googleapis.com/youtube/v3/videos?part=id&id={VIDEO_ID}&key={YOUR_API_KEY} 

키 당신의 API를 사용하여 GET 요청을

{ 
"kind": "youtube#videoListResponse", 
"etag": "\"sZ5p5Mo8dPpfIzLYQBF8QIQJym0/N6KWrfNRyfPOarHfhvNS7j4jfxM\"", 
"pageInfo": { 
    "totalResults": 0, 
    "resultsPerPage": 0 
}, 
"items": [] 
}* 

응답이 items 인 빈 배열이 있으면 비디오에 액세스 할 수 없습니다. 다음


지금은 사용되지 않습니다의 API V2에 대해 말한다. (https://developers.google.com/youtube/2.0/developers_guide_protocol_video_entries).

참고 : YouTube Data API (v2)는 2014 년 3 월 4 일부터 공식 사용이 중단됩니다. 자세한 내용은 지원 중단 정책을 참조하십시오. 새로운 통합을 위해 YouTube 데이터 API (v3)를 사용하고 v2 API를 사용하는 응용 프로그램을 v3 API로 이전하십시오. 비디오 여기

http://gdata.youtube.com/feeds/api/videos/<videoid> 

의 존재를 확인하기 위해이 URL에

보내기 요청이 그것의 사용이다.

$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $videoId); 
if (!strpos($headers[0], '200')) { 
    echo "The YouTube video you entered does not exist"; 
    return false; 
} 
+2

@Downvoter, downvoting하는 동안 몇 가지 의견을 남길 수 없습니까? – Starx

+0

모든 페이지 뷰에서이 요청을하면 (즉, 사용자가 웹에 액세스하려고 할 때마다) youtube API가 나를 차단할 수있는 기회가 있습니까? – Ant100

+0

여전히 작동합니까? 유효한 유튜브 비디오 id도 "Video No Longer Available"이됩니다. – Sudar

5

당신은 단순히 당신은 다시

  • 비디오가 발견되지
  • 예를

    • 비공개 동영상
    • 잘못된 ID를 얻을 http://gdata.youtube.com/feeds/api/videos/$id

      의 반환 값을 확인할 수 있습니다

    그래서 일 전자 간단한 검사는 다음과 같습니다

    유튜브 API를 사용하여
    if (file_get_contents('http://gdata.youtube.com/feeds/api/videos/'.$videoId) == 'Video not found') { 
        echo 'Video deleted'; 
    } 
    
    +0

    Mr. Dan Lee, 언어를 기억하십시오. 그것의 중복 답변없이 깨끗한 게시물에 대한. 그리고 어쨌든 꽤 나쁜 품질 인 답을 생각해보십시오. – Starx

    0

    유튜브는 비디오가없는 인 HTTP 상태 코드 (404)를 반환합니다. See this made up url 등이 있습니다.

    특정 오류 메시지는 다르지만 중요하지 않은 코드가 반환됩니다.

    PHP에서 Curl을 사용하여 URL을 가져온 다음 반환되는 상태 코드를 확인하십시오. 당신은 이런 일에 컬의 상태 코드를 얻을 수 있습니다 :

    $http_status = curl_getinfo($handle, CURLINFO_HTTP_CODE); 
    

    당신은 데이터베이스의 각 URL과 함께 last_checked 타임 스탬프를 저장할 수는 다음 URL을 작은 수를 확인하기 위해 모든 N의 분을 실행하는 cronjob에 있고, 완료되면 타임 스탬프를 업데이트하십시오. 데이터베이스에 상태 코드도 저장해야합니다.

    그런 다음 URL을 표시 할 때 코드 에서처럼 200 개가 아닌 상태 코드를 처리 할 수 ​​있습니다.

    관련 문제