php - sacar - Una forma fácil de obtener la identificación de Vimeo desde una url de vimeo
vimeo api wordpress (7)
Estoy tratando de obtener solo el ID de una URL vimeo. ¿Hay alguna forma más sencilla que esta? Todos los urls de video vimeo que veo son siempre:
// 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);
Creo que usar parse_url()
es la mejor opción:
$vimeo = ''https://vimeo.com/29474908'';
echo (int) substr(parse_url($vimeo, PHP_URL_PATH), 1);
Esto debería recuperar el ID de todos los tipos de urls 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];
Hay muchas URLs de vimeo que son válidas. Pocos ejemplos son
Todas las URL válidas:
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
Todas las URL inválidas:
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
Escribí esta expresión regular en Java que captura todas las URL válidas anteriores y rechaza las inválidas. No estoy seguro de si vimeo tiene más URL válidas.
(https?://)?(www.)?(player.)?vimeo.com/([a-z]*/)*([0-9]{6,11})[?]?.*
Espero que esto ayude...
Para aquellos de ustedes que quieran ver el código completamente implementado utilizando PHP, estoy usando la expresión regular proporcionada por user2200660 y formateada para PHP por Morgan Delaney, aquí está:
$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
Si alguien lo necesita en JavaScript basado en @ user2200660 responda:
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];
}
}
Una expresión regular de trabajo actual:
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.
[Editar] ¡Ahora puedes hacerlo todo a través de la API!
Si proporciona una lista separada por comas de sus URL de Vimeo a través del parámetro "enlaces" al punto final de búsqueda ( https://developer.vimeo.com/api/endpoints/videos#GET/videos ) devolveremos esos videos como respuestas API .
p.ej
GET https://api.vimeo.com/videos?links=https://vimeo.com/74648232,https://vimeo.com/232323497
[Original]
Vimeo proporciona muchos tipos diferentes de urls de video, algunos de los cuales no incluyen el ID. Para garantizar el soporte en todas las URL de Vimeo, debe solicitar a Vimeo directamente la ID.
Puede solicitar vimeo a través del punto final oEmbed .
Hay muchas opciones, pero la opción más fácil es hacer una solicitud GET de HTTP a la URL https://vimeo.com/api/oembed.json?url={vimeo_url}
, reemplazando {vimeo_url}
con la url adecuada.
Por ejemplo, para obtener el ID de la URL que proporcionó anteriormente ( https://vimeo.com/29474908 ) realice una solicitud HTTP GET para
https://vimeo.com/api/oembed.json?url=https://vimeo.com/29474908
Analice la respuesta JSON y video_id
parámetro video_id
.