2009-09-01 12 views
12

मैं यह जांचने के लिए थोड़ी देर के लिए प्रयास कर रहा हूं कि सबमिट किए गए लिंक youtube.com या vimeo.com से मान्य फिल्म-क्लिप हैं, लेकिन मैं सफल नहीं हुआ।जांचें कि क्या यूट्यूब और वीमियो-क्लिप वैध हैं

http://www.youtube.com/watch?v=jc0rnCBCX2c&feature=fvhl (valid) 
http://www.youtube.com/watch?v=jc0FFCBCX2c&feature=fvhl (not valid) 
http://www.youtube.com/v/jc0rnCBCX2c (valid) 
http://www.youtube.com/v/ddjcddddX2c (not valid) 
http://www.vimeo.com/463l522 (not valid) 
http://www.vimeo.com/1483909 (valid) 
http://www.vimeo.com/lumiblue (not valid) 
http://www.youtube.com/user/dd181921 (not valid) 

:

कोई कैसे यूआरएल की तरह जांच करने के लिए विचार?

मैं PHP का उपयोग करता हूं।

उत्तर

7

मैं इस साइट में एक जवाब देखें: www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_23765374.html

और उन्होंने कहा:

मैं यूट्यूब के एपीआई का उपयोग कर सुझाव है चूंकि आप वीडियो मौजूद होने पर मान्य करने की कोशिश कर रहे हैं। या यदि आप एपीआई सामान में नहीं जाना चाहते हैं तो आप सरल चाल कर सकते हैं।

http://gdata.youtube.com/feeds/api/videos/videoID

:

http://code.google.com/apis/youtube/developers_guide_php.html#RetrievingVideoEntry

एक वीडियो के अस्तित्व आप "वी" मूल्य निकालने और एक अनुरोध है कि करने के लिए वीडियो आईडी में शामिल भेजने की आवश्यकता होगी के लिए जाँच करने के लिए: इस लिंक की जाँच

जहां वीडियोआईडी "v" मान उदाहरण के लिए एक वीडियो FLE2htv9oxc इस http://gdata.youtube.com/feeds/api/videos/FLE2htv9oxc की तरह पूछताछ की जाएगी यदि यह अस्तित्व में नहीं है तो आपको एक pa "अमान्य आईडी" के साथ जीई मौजूद होने पर, वीडियो के बारे में विभिन्न जानकारी वाले एक XML फ़ीड को वापस कर देगा। इस तरह आप जांच सकते हैं कि वीडियो मौजूद है।

आशा है कि यह आपको सही दिशा में ले जाएगा।

vimeo के साथ एक ही चीज़, साइट पर एपीआई दस्तावेज देखने की कोशिश करें। http://www.vimeo.com/api

+8

कृपया तो सीधे अपने जवाब में कि नीच विशेषज्ञों एक्सचेंज साइट को जोड़ने नहीं पर विचार करें। यह साइट उन समस्याओं में से एक है जो एसओ प्रभावी ढंग से हल हो गई हैं। 'पेवल' को कभी भी ध्यान न दें। मैंने लगभग आपके उत्तर को इसे लिंक करने के लिए संपादित किया है, लेकिन .. यह मेरा जवाब नहीं है, इसलिए मैं नहीं करूँगा। आप स्रोत को उद्धृत कर सकते हैं, लिंक को हटाने के लिए बस "http" भाग लें। –

+0

एपीआई का उपयोग करना यह जांचने का सही तरीका है कि कोई वीडियो मौजूद है या नहीं, लेकिन मुझे पता है कि मैंने यूट्यूब वीडियो का अनुभव किया है जो हमेशा एपीआई के माध्यम से साइट पर देखने के लिए उपलब्ध नहीं होते हैं। असल में, एक लिंक मान्य हो सकता है, जबकि एपीआई का कहना है कि यह कई मिनट के लिए नहीं है। –

0

अगर वीडियो अब मान्य नहीं है

2

मैं अगर लिंक में मान्य यूट्यूब लिंक है की जाँच करने के लिए इस समारोह में लिखा था आप 301 हैडर कि आप ट्यूब फेंकता पकड़ने की कोशिश कर सकते हैं।

/** 
* This function will check if 'url' is valid youtube video and return the ID. 
* If the return value === false then this is **not** a valid youtube url, otherwise the youtube id is returned. 
* 
* @param <type> $url 
* @return <type> 
*/ 


private static function get_youtube_id($url) { 
     $link = parse_url($url,PHP_URL_QUERY); 

    /**split the query string into an array**/ 
    if($link == null) $arr['v'] = $url; 
    else parse_str($link, $arr); 
    /** end split the query string into an array**/ 
    if(! isset($arr['v'])) return false; //fast fail for links with no v attrib - youtube only 

    $checklink = YOUTUBE_CHECK . $arr['v']; 

    //** curl the check link ***// 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$checklink); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
    $result = curl_exec($ch); 
    curl_close($ch); 

    $return = $arr['v']; 
    if(trim($result)=="Invalid id") $return = false; //you tube response 

    return $return; //the stream is a valid youtube id. 
} 
+0

यहां YOUTUBE_CHECK मेनस?क्या आप विवरण दे सकते हैं – naveen

+0

YOUTUBE_CHECK = http://gdata.youtube.com/feeds/api/videos/ आप कोड के आधे से दूर हो सकते हैं, और केवल कर्ल भाग का उपयोग कर सकते हैं, और शायद कुछ preg_match या ऐसा कर सकते हैं कोड छोटा करें। अन्यथा यह काम करता है, और आज मुझे बचा लिया है। –

22

आप http://gdata.youtube.com/feeds/api/videos/videoId के लिए एक अनुरोध से प्रतिक्रिया हेडर को चेक करते हैं, जहां VIDEOID गूगल वीडियो पहचानकर्ता है, तो आप एक 200 अगर वीडियो मौजूद है और एक 400 (अमान्य अनुरोध) अगर वीडियो मौजूद नहीं है मिलना चाहिए।

// PHP code 

// Check if youtube video item exists by the existance of the the 200 response 
$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $youtubeId); 
if (!strpos($headers[0], '200')) { 
    echo "The YouTube video you entered does not exist"; 
    return false; 
} 
+0

मैंने अभी यह कोशिश की, और ऐसा लगता है कि यह अब और काम नहीं कर रहा है। –

+0

@ डेविड लॉरेंस: अजीब, यह मेरे लिए काम करता है। मैंने अनुमान लगाया है कि हेडर पहले ही भेज दिए गए हैं, लेकिन स्क्रीन पर कुछ मुद्रित होने के बाद भी यह काम करता है (यानी जब हेडर पहले से ही भेजे जा चुके हैं)। मुझे नहीं पता कि जब आपने कोशिश की तो समस्या क्या थी। –

0
/* 
* Verify YouTube video status 
*/ 

    $videoID = "o8UCI7r1Aqw"; 
    $header = get_headers("http://gdata.youtube.com/feeds/api/videos/". $videoID); 

    switch($headers[0]) { 
    case '200': 
    // video valid 
    break; 

    case '403': 
    // private video 
    break; 

    case '404': 
    // video not found 
    break; 

    default: 
    // nothing above 
    break; 
    } 
+0

अब और काम नहीं कर रहा है – Pons

संबंधित मुद्दे