0

有什么方法可以从 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

4 回答 4

8

如果它是一个有效的 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 ;
}
于 2013-09-30T14:03:43.163 回答
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;
    }
}
于 2013-08-16T07:43:17.867 回答
1

Youtube 链接的格式如下:

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

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

事实证明可以有一个 watch?list= 并且 v= 接近尾声。

就我所知,参数可以是 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

于 2013-09-27T22:08:52.143 回答
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。

于 2021-05-03T16:38:31.240 回答