javascript - jdownloader - Obtener ID de video de url Vimeo
guardar video blob (5)
Desde 2016. Y @Martin Ender dijo que no longer up to date
Así que aquí hay una solución API: (sin regexp pero API caller y segura!)
jQuery:
function GetVimeoIDbyUrl(url) {
var id = false;
$.ajax({
url: ''https://vimeo.com/api/oembed.json?url=''+url,
async: false,
success: function(response) {
if(response.video_id) {
id = response.video_id;
}
}
});
return id;
}
Reducir
function GetVimeoIDbyUrl(e){var i=!1;return $.ajax({url:"https://vimeo.com/api/oembed.json?url="+e,async:!1,success:function(e){e.video_id&&(i=e.video_id)}}),i}
Pure / Native JS: (IE9 + y navegadores modernos)
function GetVimeoIDbyUrl(url) {
var id = false;
var request = new XMLHttpRequest();
request.open(''GET'', ''https://vimeo.com/api/oembed.json?url=''+url , false);
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
var response = JSON.parse(request.responseText);
if(response.video_id) {
id = response.video_id;
}
}
};
request.send();
return id;
}
Reducir
function GetVimeoIDbyUrl(e){var t=!1,o=new XMLHttpRequest;return o.open("GET","https://vimeo.com/api/oembed.json?url="+e,!1),o.onload=function(){if(o.status>=200&&o.status<400){var e=JSON.parse(o.responseText);e.video_id&&(t=e.video_id)}},o.send(),t}
Demostración: https://jsbin.com/mevejoxudo/1/edit?js,output
¿Algún tipo de url no soporta? : https://vimeo.com/help/contact#tech-api (dígales, no me digas jeje: D)
Estoy tratando de encontrar la mejor expresión regular para obtener la ID de video de vimeo desde la URL.
Ejemplo de urls:
https://vimeo.com/11111111
http://vimeo.com/11111111
https://www.vimeo.com/11111111
http://www.vimeo.com/11111111
https://vimeo.com/channels/11111111
http://vimeo.com/channels/11111111
https://vimeo.com/groups/name/videos/11111111
http://vimeo.com/groups/name/videos/11111111
https://vimeo.com/album/2222222/video/11111111
http://vimeo.com/album/2222222/video/11111111
https://vimeo.com/11111111?param=test
http://vimeo.com/11111111?param=test
Mi regexp actual que no funciona:
/http:////(www/.)?vimeo.com//(/d+)($|//)/
Playground & Test aquí: http://jsbin.com/asuqic/1/edit?javascript,live
La siguiente expresión regular devolverá el ID en el grupo 1 para aquellos que solo desean recuperar esta información. Funciona con todas las URL de ejemplo dadas en la pregunta. También funciona sin http://
y https://
. También funciona con URL como player.vimeo.com/...
/^.*(?:vimeo.com)///(?:channels///|groups///[^///]*///videos///|album/////d+///video///|video///|)(//d+)(?:$|///|//?)/
Para php, el código siguiente funciona para las siguientes urls
es decir:
http://vimeo.com/88888888
http://player.vimeo.com/video/88888888
http://vimeo.com/channels/staffpicks/88888888
http://vimeo.com/groups/groupsname/88888888
Código PHP:
$vimeoUrl = ''http://vimeo.com/channels/channelsName/11111111'';
$fetchVimeoIdArr = explode(''/'', $vimeoUrl);
$idCounter = count($fetchVimeoIdArr) - 1;
$vimeoId = $fetchVimeoIdArr[$idCounter];
Actualización: Me doy cuenta de que esta respuesta está recibiendo atención de vez en cuando (mediante votos o comentarios). La respuesta tiene más de dos años y es probable que los tipos de URL admitidos ya no estén actualizados. No mantendré esta expresión regular de forma activa; simplemente pretende ser una respuesta a la pregunta y, por lo tanto, solo se ocupa de los formatos enumerados allí. Use esto bajo su propio riesgo o, mejor aún, úselo simplemente como punto de partida para desarrollar su propia expresión regular basada en una lista actualizada y completa de formatos de URL.
Consulte la respuesta de @ l2aelba para la solución de API https://.com/a/37695721/622813
Esta sería la expresión regular completa, que también garantiza que el formato sea correcto:
/https?:////(?:www/.|player/.)?vimeo.com//(?:channels//(?:/w+//)?|groups//([^//]*)//videos//|album//(/d+)//video//|video//|)(/d+)(?:$|//|/?)/
Ahora puede recuperar el nombre del grupo en el grupo de captura 1
(si está presente), la identificación del álbum en el grupo de captura 2
(si está presente) y la identificación del video en el grupo de captura 3
(siempre).
var r = /(videos|video|channels|/.com)//([/d]+)/,
a = "https://vimeo.com/album/2222222/video/11111111";
console.log(a.match(r)[2]); // 11111111;