Подтвердить что ты не робот

Легкий способ получить идентификатор Vimeo из URL-адреса vimeo

Я пытаюсь получить только идентификатор из URL-адреса vimeo. Есть ли более простой способ, чем это? Все видеоролики 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);
4b9b3361

Ответ 1

Я думаю, что использование parse_url() - лучший вариант:

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

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

Ответ 2

Есть много URL-адресов vimeo, которые действительны. Несколько примеров:

Все действующие URL:

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

Я написал это java-регулярное выражение, которое ловит все допустимые URL-адреса и отклоняет недействительные. Я не уверен, хотя если у них vimeo есть более допустимые URL-адреса.

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

Надеюсь, что это поможет...

Ответ 3

Для тех из вас, кто хочет увидеть полностью реализованный код с использованием PHP, я использую регулярное выражение, предоставленное пользователем2200660 и отформатированное для 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

Ответ 4

[Изменить] Теперь вы можете сделать это через API!

Если вы предоставили список ваших Vimeo-адресов с запятыми через параметр "links" в конечную точку поиска (https://developer.vimeo.com/api/endpoints/videos#GET/videos), мы вернет эти видео как ответы API.

например.

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

[Оригинал]

Vimeo предоставляет много разных типов видеороликов, некоторые из которых не включают идентификатор. Чтобы обеспечить поддержку всех URL-адресов Vimeo, вы должны задать vimeo непосредственно для идентификатора.

Вы можете запросить vimeo через oEmbed конечная точка.

Существует много вариантов, но самый простой вариант - сделать HTTP-запрос GET URL-адресу https://vimeo.com/api/oembed.json?url={vimeo_url}, заменив {vimeo_url} на соответствующий URL-адрес.

Например, чтобы получить идентификатор указанного выше URL-адреса (https://vimeo.com/29474908), сделайте запрос HTTP GET на

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

Разберите ответ JSON и возьмите параметр video_id.

Ответ 5

Это должно получить идентификатор из всех видов URL-адресов 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];

Ответ 6

Если кому-то это нужно в JavaScript на основе @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];
    }
}

Ответ 7

Текущее, работающее регулярное выражение:

function getIdFromVimeoURL(url) {
  return /(vimeo(pro)?\.com)\/(?:[^\d]+)?(\d+)\??(.*)?$/.exec(url)[3];
}

console.log(getIdFromVimeoURL("https://vimeo.com/channels/staffpicks/272053388"))
console.log(getIdFromVimeoURL("https://vimeo.com/272053388"))
console.log(getIdFromVimeoURL("https://player.vimeo.com/video/272053388"))

// ...etc.

Ответ 8

Если вам нужен только Vimeo ID, вы можете использовать не захватывающие группы RegExp:

(?:https?:\/\/)?(?:www\.)?vimeo\.com\/(?:(?:[a-z0-9]*\/)*\/?)?([0-9]+)

Ответ 9

Работает для всех типов URL-адресов vimeo

то есть.:

http://vimeo.com/11111111
http://player.vimeo.com/video/11111111
http://vimeo.com/channels/vimeogirls/11111111
http://vimeo.com/channels/staffpicks/11111111
http://vimeo.com/groups/vimeogirls/11111111

Код:

    $vimeoUrl = 'http://vimeo.com/channels/staffpicks/11111111';
    $fetchVimeoIdArr = explode('/', $vimeoUrl);
    $idCounter = count($fetchVimeoIdArr) - 1;
    $vimeoId = $fetchVimeoIdArr[$idCounter];