2012-05-07 27 views
20

मैं सिर्फ एक vimeo यूआरएल से आईडी प्राप्त करने की कोशिश कर रहा हूं। क्या इससे कोई आसान तरीका है? सभी Vimeo वीडियो यूआरएल मैं देख रहा हूँ हमेशा से रहे हैं:एक vimeo url से Vimeo आईडी प्राप्त करने का आसान तरीका

https://vimeo.com/29474908

https://vimeo.com/38648446

// VIMEO 


$vimeo = $_POST['vimeo']; 

function getVimeoInfo($vimeo) 
{ 
    $url = parse_url($vimeo); 
    if($url['host'] !== 'vimeo.com' && 
      $url['host'] !== 'www.vimeo.com') 
     return false; 
    if (preg_match('~^http://(?:www\.)?vimeo\.com/(?:clip:)?(\d+)~', $vimeo, $match)) 
    { 
     $id = $match[1]; 
    } 
    else 
    { 
     $id = substr($link,10,strlen($link)); 
    } 

    if (!function_exists('curl_init')) die('CURL is not installed!'); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "http://vimeo.com/api/v2/video/$id.php"); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    $output = unserialize(curl_exec($ch)); 
    $output = $output[0]; 
    curl_close($ch); 
    return $output['id']; 
} 

$vimeo_id = getVimeoInfo($vimeo); 

उत्तर

21

मैं parse_url() का उपयोग कर लगता है कि सबसे अच्छा विकल्प है:

$vimeo = 'https://vimeo.com/29474908'; 

echo (int) substr(parse_url($vimeo, PHP_URL_PATH), 1); 
+0

नोट: यह जवाब अब मान्य नहीं है, और "असूचीबद्ध" गोपनीयता मोड के साथ जुड़े अतिरिक्त समस्याओं को कवर नहीं करता। पूरी तरह से भविष्य के सबूत समाधान के लिए कृपया http://stackoverflow.com/a/34027757/1886079 देखें। – Dashron

33

बहुत कई Vimeo यूआरएल रहे हैं कि वैध हैं।

http://vimeo.com/6701902 
http://vimeo.com/670190233 
http://player.vimeo.com/video/67019023 
http://player.vimeo.com/video/6701902 
http://player.vimeo.com/video/67019022?title=0&byline=0&portrait=0 
http://player.vimeo.com/video/6719022?title=0&byline=0&portrait=0 
http://vimeo.com/channels/vimeogirls/6701902 
http://vimeo.com/channels/vimeogirls/67019023 
http://vimeo.com/channels/staffpicks/67019026 
http://vimeo.com/15414122 
http://vimeo.com/channels/vimeogirls/66882931 

सभी अमान्य URL:

http://vimeo.com/videoschool 
http://vimeo.com/videoschool/archive/behind_the_scenes 
http://vimeo.com/forums/screening_room 
http://vimeo.com/forums/screening_room/topic:42708 

मैं इस जावा regex कि सब से ऊपर मान्य URL को पकड़ता है और अवैध लोगों को खारिज कर दिया लिखा कुछ उदाहरण

सभी मान्य URL को कर रहे हैं। मुझे यकीन नहीं है कि अगर वे Vimeo के पास अधिक वैध यूआरएल हैं।

(https?://)?(www.)?(player.)?vimeo.com/([a-z]*/)*([0-9]{6,11})[?]?.* 

आशा इस मदद करता है ...

+14

PHP के preg_match के लिए यह मित्रवत बनाने के लिए, मैं बस आगे की स्लैश और डॉट्स से बच निकला: '/ (https?: \/\ /)? (Www \।)? (प्लेयर \।)? Vimeo \ .com \/([एजी] * \ /) * ([0-9] {6,11}) [?]? * * '' –

+2

मैंने वीमियो से आईड्स प्राप्त करने के लिए उन समाधानों का एक पुनरावृत्ति किया, और यहां यूट्यूब और डेलीमोशन, यहां : https://github.com/lingtalfi/video-ids-and- थंबनेल /blob/master/testvideo.php। – ling

+0

उदाहरण ऑनलाइन: https://regex101.com/r/7NAAd0/2 –

1

यह Vimeo यूआरएल के सभी प्रकार से आईडी पुनः प्राप्त करना चाहिए।

$url = 'https://vimeo.com/cool/29474908?title=0&byline=0&portrait=0'; 
$urlParts = explode("/", parse_url($url, PHP_URL_PATH)); 
$videoId = (int)$urlParts[count($urlParts)-1]; 
18

आप में से जो लोग कोड पूरी तरह से PHP का उपयोग लागू किया, मैं regex user2200660 द्वारा प्रदान की और मॉर्गन डेलाने से PHP के लिए स्वरूपित उपयोग कर रहा हूँ देखना चाहता हूँ के लिए, यहाँ यह है:

$vimeo = 'http://player.vimeo.com/video/67019023'; 

if(preg_match("/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/", $vimeo, $output_array)) { 
    echo "Vimeo ID: $output_array[5]"; 
} 

//outputs: Vimeo ID: 67019023 
+0

नोट: यह regex अब मान्य नहीं है, और "असूचीबद्ध" गोपनीयता मोड से जुड़ी अतिरिक्त समस्याओं को शामिल नहीं करता है। पूरी तरह से भविष्य के सबूत समाधान के लिए कृपया https://stackoverflow.com/a/34027757/1886079 देखें। – Dashron

11

[संपादित करें] अब आप एपीआई के माध्यम से यह सब कर सकते हैं!

यदि आप खोज एंडपॉइंट (https://developer.vimeo.com/api/endpoints/videos#GET/videos) पर "लिंक" पैरामीटर के माध्यम से अपने Vimeo urls की अल्पविराम से अलग सूची प्रदान करते हैं तो हम उन वीडियो को एपीआई प्रतिक्रियाओं के रूप में वापस कर देंगे।

उदा।

GET https://api.vimeo.com/videos?links=https://vimeo.com/74648232,https://vimeo.com/232323497 

[मूल रूप]

Vimeo वीडियो यूआरएल, जिनमें से कुछ आईडी शामिल नहीं हैं के कई अलग अलग प्रकार प्रदान करता है। Vimeo के सभी यूआरएल में समर्थन सुनिश्चित करने के लिए आपको सीधे आईडी के लिए Vimeo से पूछना चाहिए।

आप oEmbed endpoint के माध्यम से vimeo से पूछ सकते हैं।

कई विकल्प हैं, लेकिन सबसे आसान विकल्प यूआरएल https://vimeo.com/api/oembed.json?url={vimeo_url} पर HTTP GET अनुरोध करना है, उचित यूआरएल के साथ {vimeo_url} को प्रतिस्थापित करना।

उदाहरण के लिए, यूआरएल आप ऊपर (https://vimeo.com/29474908) प्रदान की की आईडी प्राप्त करने JSON उत्तर पार्स

https://vimeo.com/api/oembed.json?url=https://vimeo.com/29474908

एक HTTP GET अनुरोध करता है, और video_id पैरामीटर हड़पने।

+0

अच्छा भविष्य का सबूत समाधान जो Vimeo के अतिरिक्त अनुरोध के लायक है। Thnx! – JurgenR

+0

हमने हाल ही में इस समस्या को हल करने का एक बेहतर तरीका जारी किया है। संपादन की जांच करें! – Dashron

1

किसी @ के आधार पर जावास्क्रिप्ट में यह की जरूरत है जवाब user2200660:

function getVimeoVideoId(url){ 

    var regex = new RegExp(/(https?:\/\/)?(www.)?(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/); 

    if (regex.test(url)) { 
     return regex.exec(url)[5]; 
    } 
}