当前位置: 首页 > 面试题库 >

YouTube API-提取视频ID

闻人志
2023-03-14
问题内容

我正在编写一种功能,允许用户输入Youtube视频URL。我想从这些网址中提取视频ID。

Youtube API是否支持某种函数,我可以通过该函数传递链接,它会返回视频ID。还是我必须自己解析字符串?

我正在使用PHP …在这方面,我将不胜感激任何指针/代码示例。

谢谢


问题答案:

以下是使用正则表达式从URL提取youtube ID的示例函数:

/**
 * get youtube video ID from URL
 *
 * @param string $url
 * @return string Youtube video id or FALSE if none found. 
 */
function youtube_id_from_url($url) {
    $pattern = 
        '%^# Match any youtube URL
        (?:https?://)?  # Optional scheme. Either http or https
        (?:www\.)?      # Optional www subdomain
        (?:             # Group host alternatives
          youtu\.be/    # Either youtu.be,
        | youtube\.com  # or youtube.com
          (?:           # Group path alternatives
            /embed/     # Either /embed/
          | /v/         # or /v/
          | /watch\?v=  # or /watch\?v=
          )             # End path alternatives.
        )               # End host alternatives.
        ([\w-]{10,12})  # Allow 10-12 for 11 char youtube id.
        $%x'
        ;
    $result = preg_match($pattern, $url, $matches);
    if ($result) {
        return $matches[1];
    }
    return false;
}

echo youtube_id_from_url('http://youtu.be/NLqAF9hrVbY'); # NLqAF9hrVbY

它不是您要查找的API的直接来源,但可能会有所帮助。Youtube有一项固定服务:

$url = 'http://youtu.be/NLqAF9hrVbY';
var_dump(json_decode(file_get_contents(sprintf('http://www.youtube.com/oembed?url=%s&format=json', urlencode($url)))));

其中提供了有关URL的更多元信息:

object(stdClass)#1 (13) {
  ["provider_url"]=>
  string(23) "http://www.youtube.com/"
  ["title"]=>
  string(63) "Hang Gliding: 3 Flights in 8 Days at Northside Point of the Mtn"
  ["html"]=>
  string(411) "<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/NLqAF9hrVbY?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/NLqAF9hrVbY?version=3" type="application/x-shockwave-flash" width="425" height="344" allowscriptaccess="always" allowfullscreen="true"></embed></object>"
  ["author_name"]=>
  string(11) "widgewunner"
  ["height"]=>
  int(344)
  ["thumbnail_width"]=>
  int(480)
  ["width"]=>
  int(425)
  ["version"]=>
  string(3) "1.0"
  ["author_url"]=>
  string(39) "http://www.youtube.com/user/widgewunner"
  ["provider_name"]=>
  string(7) "YouTube"
  ["thumbnail_url"]=>
  string(48) "http://i3.ytimg.com/vi/NLqAF9hrVbY/hqdefault.jpg"
  ["type"]=>
  string(5) "video"
  ["thumbnail_height"]=>
  int(360)
}

但是ID并不是响应的直接部分。但是,它可能包含您要查找的信息,并且可能对验证youtube URL有用。



 类似资料:
  • 所以我试图从用户上传的视频中抓取10个最新视频。 现在唯一的问题是,播放列表请求中唯一可见的日期是已发布的,这是视频上传的日期 - 而不是公开的日期,这会产生巨大的差异。 我注意到我可以通过视频请求获取正确的日期,但它似乎不是最好的地方。 让我给你看一个我正在处理的例子。 我们走Maroon5频道吧。 forUserName: Maroon5VEVO 获取 https://www.googleap

  • 我需要提取5年前公司YouTube频道上的活动。我遇到了一个YouTube分析API的问题,因为它限制了我最近30天的活动。我正在考虑接下来尝试YouTube数据API V3,但我想首先在这里问一下,是否有人知道如何从YouTube频道中提取深层历史数据。我感兴趣的主要是每天每个视频的浏览量。我正在使用谷歌云平台,需要将数据存储在BigQuery中。 https://developers.goog

  • 我们有一个网站,显示我们的YouTube视频频道和我们频道中最喜欢的视频等。我们使用YouTube数据API v2.0来获取数据。 例如: https://gdata.youtube.com/feeds/api/users/“ 用户标识 ”/播放列表?v=2 但现在这些链接返回“NetworkError: 410 Gone”。我们检查了新的YouTube Javascript API,但我们不知道

  • 我需要视频的id,例如 https://www.youtube.com/watch?v=wIN0tTy-Jmg 我需要的id是wIN0tTy-Jmg 我知道https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.activities.list?part=snippet 但它只返回50个视频,有时我无法获得具有我需要的标题的

  • 目前,我使用它是为了从给定频道获得视频ID列表: 去找https://www.googleapis.com/youtube/v3/search?order=date 这是可行的,但是我想从中获取视频的频道有超过50个在线视频。我已经研究过这个问题,YouTube API可以在一个频道上获取所有视频,但每个在线解决方案最多只能获取50个视频。 我怎样才能得到每一个视频,而不仅仅是50个?

  • 我正在研究YouTubeAPI:https://developers.google.com/youtube/v3/docs/search/list 但是我找不到通过HTTP请求获取360视频列表的任何参数。我想获取q参数为“Ronaldo”的360视频(例如) 有没有人知道如何通过HTTP请求获取360视频或者另一种获取360视频的解决方案?