online jdownloader guardar from downloader javascript regex vimeo

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).

Demo


var r = /(videos|video|channels|/.com)//([/d]+)/, a = "https://vimeo.com/album/2222222/video/11111111"; console.log(a.match(r)[2]); // 11111111;

http://jsbin.com/asuqic/7/edit