【问题标题】:Get Youtube Video ID From Link With JavaScript使用 JavaScript 从链接获取 Youtube 视频 ID
【发布时间】:2013-08-16 07:40:03
【问题描述】:

有没有办法从 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

的内容

【问题讨论】:

标签: javascript parsing youtube hyperlink


【解决方案1】:

如果是有效的 youtube url,下面的函数将返回视频的视频 ID,否则返回 false。

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 ;
}

【讨论】:

    【解决方案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;
        }
    }
    

    【讨论】:

      【解决方案3】:

      Youtube 链接的格式如下:

      http://www.youtube.com/watch?参数=video_id&bunch_of_other_stuff

      现在,我错误地假设所有视频都有观看?v=

      原来可以有一个 watch?list= 并且 v= 接近尾声。

      parameter 可以是 v 或 list 或其他我知道的东西。没关系。

      所以这不包括 ?v= (这在 irc.mozilla.org:8443 上的 #jetpack 频道上由freaktechnik 指出)。我们只剩下 v=

      另外一点是,几乎每一个处理这个假设长度为 11 个字符的片段。为什么 ?就因为是现在

      假设您有自己的 URL,它是 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(dot)com/watch?list=WL2358B031ED8642DE&v=FyUrrAqso-M

      还有这个:

      youtube(dot)com/watch?v=hUgCuFiZozc&feature=c4-overview&list=UUyNpwxYpMdYpw8CNqqv3Bdw

      【讨论】:

        【解决方案4】:

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

        我为你做了一个函数:

        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。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-28
          • 2014-05-26
          • 1970-01-01
          • 2012-01-28
          • 2020-11-05
          • 1970-01-01
          相关资源
          最近更新 更多