从JavaScript链接获取Youtube视频ID

时间:2013-08-16 07:40:03

标签: javascript parsing youtube hyperlink

有没有办法从youtube链接获取视频ID。

我在PHP脚本中有一种方法,但我需要在javascript中使用它。

这是我的php脚本

function get_youtube($url){
  parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
  return $my_array_of_vars['v']; 
}

例如,我有一个youtube视频链接

http://www.youtube.com/watch?v=fWNaR-rxAic&list=RD029I9Ar6upx34

然后我得到 V 变量的内容= fWNaR-rxAic

4 个答案:

答案 0 :(得分:7)

如果视频是有效的YouTube视频网址,则以下函数会返回视频的视频ID。

function matchYoutubeUrl(url){
var p = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;
 return (url.match(p)) ? RegExp.$1 : false ;
}

答案 1 :(得分:2)

试试这段代码

    /*Function youtubeLinkParser parses youtube link for Video ID*/
function youtubeLinkParser(url) {
    var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
    var match = url.match(regExp);
    if (match && match[2].length == 11) {
        return match[2];
    } else {
        return null;
    }
}

答案 2 :(得分:1)

Youtube链接的格式如下:

http://www.youtube.com/watch 参数 = <强> VIDEO_ID &安培; bunch_of_other_stuff

现在,我错误地认为所有视频都有手表?v =

事实证明可以有一个手表?list =并且v =接近结束。

对于我所知道的所有人来说,

参数可以是v或list或其他东西。没关系。

所以这排除了?v =(这是在freaktechnik的irc.mozilla.org:8443上的#jetpack频道上指出的)。我们留下了v =

另一点是,几乎所有处理此的部分都假设长度为11个字符。为什么?只是因为它现在是

假设您有自己的网址,且网址为video_url。您只需使用两个分割即可获得video_id。我可以分两次进行,因为我花了几个小时使用JavaScript,但我确信更有经验的人可以做得更好。

编辑:

video_id = video_url.split("v=")[1];
ampersand_pos = video_id.indexOf("&");
if (ampersand_pos != -1) {
video_id = video_id.substring(0, ampersand_pos)
}

试试吧。它考虑到了这一点:

的YouTube(点)的COM /观看列表= WL2358B031ED8642DE&安培; V = FyUrrAqso-M

还有这个:

的YouTube(点)的COM /观看V = hUgCuFiZozc&安培;特征= C4-概述&安培;列表= UUyNpwxYpMdYpw8CNqqv3Bdw

答案 3 :(得分:0)

我找到了一种不使用正则表达式的简单方法。 注意:这适用于所有类型的可播放网址。

我做了一个函数来帮你:

function getLink(url){
    fetch('www.youtube.com/oembed?url=' + url).then(res => {
     var thumbnailUrl = res.thumbnail_url;
     var id = thumbnail_url.split('vi/')[1].substring(0, 11);
     return id;}
      )
}

console.log(getLink(your_url));
// here replace 'your_url' with your specified youtube url.

所有这一切都是,它使用 youtube api 并将您的 url 作为参数传递,而 youtube 会处理 url 的类型,因此您不必担心。接下来的事情是,该函数然后从该 api 中获取 'thumbnail_url' 数据,然后相应地拆分缩略图的 url 以找到视频的 ID。