gpt4 book ai didi

youtube - 给定视频网址,如何从 Youtube API 获取 Youtube 视频 ID?

转载 作者:行者123 更新时间:2023-12-03 05:18:13 27 4
gpt4 key购买 nike

我有一个页面,用户可以在其中粘贴 Youtube 视频 url,然后我需要提取视频的 ID 以获取视频的缩略图。困难的部分是获得一种从视频 url 中提取视频 ID 的可靠方法。这里有许多正则表达式解决方案,但对我来说,这些解决方案都不是 100% 可靠的。这里有一些:

  • JavaScript REGEX: How do I get the YouTube video id from a URL?
  • Youtube API - Extract video ID

  • 这就像一场关于谁拥有更长正则表达式的比赛。我觉得正确的方法是从 Youtube 的 api 中获取此信息,但查看它,似乎此选项不可用:

    https://developers.google.com/apis-explorer/#p/youtube/v3/

    如您所见,一切都基于视频 ID。我觉得我需要实际的视频 ID 来获取有关视频的任何信息是荒谬的,因为现实世界中的用户甚至都不知道视频 ID 是什么。 Vimeo 在其 API 中内置了此功能。下面是一个例子:

    https://vimeo.com/api/oembed.json?url=https://vimeo.com/29474908

    有没有人有一个不涉及一些正则表达式的解决方案?

    最佳答案

    做一个 search with the API适用于不同的 YouTube URL 类型。 URL 作为查询项 传递q .

    https://www.googleapis.com/youtube/v3/search/?key=<YOUR_KEY>&part=snippet&q=youtu.be/M7lc1UVf-VE

    也许某些情况可能会导致多个项目,但正常的搜索结果只是一个匹配项:

    {
    kind: "youtube#searchListResponse",
    etag: ""m2yskBQFythfE4irbTIeOgYYfBU/j2Px-5q--mgJEsrfjg4L0Mgn_L8"",
    regionCode: "ES",
    pageInfo: {
    totalResults: 1,
    resultsPerPage: 5
    },
    items: [
    {
    kind: "youtube#searchResult",
    etag: ""m2yskBQFythfE4irbTIeOgYYfBU/_1gFVi_i_djlS4OZWPGtcZ3iSLQ"",
    id: {
    kind: "youtube#video",
    videoId: "M7lc1UVf-VE"
    },
    snippet: {
    publishedAt: "2013-04-10T17:25:04.000Z",
    channelId: "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    title: "YouTube Developers Live: Embedded Web Player Customization",
    description: "On this week's show, Jeff Posnick covers everything you need to know about using player parameters to customize the YouTube iframe-embedded player.",
    thumbnails: {
    default: {
    url: "https://i.ytimg.com/vi/M7lc1UVf-VE/default.jpg",
    width: 120,
    height: 90
    },
    medium: {
    url: "https://i.ytimg.com/vi/M7lc1UVf-VE/mqdefault.jpg",
    width: 320,
    height: 180
    },
    high: {
    url: "https://i.ytimg.com/vi/M7lc1UVf-VE/hqdefault.jpg",
    width: 480,
    height: 360
    }
    },
    channelTitle: "Google Developers",
    liveBroadcastContent: "none"
    }
    }
    ]
    }

    我测试了来自 this answer 的一些 URL 变体大多数工作:

    var urls = [
    '//www.youtube-nocookie.com/embed/M7lc1UVf-VE?rel=0',
    'https://www.youtube.com/watch?v=M7lc1UVf-VE&feature=channel',
    'https://www.youtube.com/watch?v=M7lc1UVf-VE&playnext_from=TL&videos=osPknwzXEas&feature=sub',
    'https://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I', // <---- invalid
    'https://youtu.be/M7lc1UVf-VE',
    'https://www.youtube.com/watch?v=M7lc1UVf-VE&feature=youtu.be',
    'https://youtu.be/M7lc1UVf-VE',
    'https://www.youtube.com/watch?v=M7lc1UVf-VE&feature=channel',
    'https://www.youtube.com/watch?v=M7lc1UVf-VE&playnext_from=TL&videos=osPknwzXEas&feature=sub',
    'https://www.youtube.com/ytscreeningroom?v=M7lc1UVf-VE', // <---- invalid
    'https://www.youtube.com/embed/M7lc1UVf-VE?rel=0',
    'https://www.youtube.com/watch?v=M7lc1UVf-VE',
    'https://youtube.com/v/M7lc1UVf-VE?feature=youtube_gdata_player',
    'https://youtube.com/vi/M7lc1UVf-VE?feature=youtube_gdata_player', // <---- invalid
    'https://youtube.com/?v=M7lc1UVf-VE&feature=youtube_gdata_player',
    'https://www.youtube.com/watch?v=M7lc1UVf-VE&feature=youtube_gdata_player',
    'https://youtube.com/?vi=M7lc1UVf-VE&feature=youtube_gdata_player', // <---- invalid
    'https://youtube.com/watch?v=M7lc1UVf-VE&feature=youtube_gdata_player',
    'https://youtube.com/watch?vi=M7lc1UVf-VE&feature=youtube_gdata_player',
    'https://youtu.be/M7lc1UVf-VE?feature=youtube_gdata_player'
    ];

    var my_key = '<YOUR_KEY>';

    function getUri(uri){
    $.get('https://www.googleapis.com/youtube/v3/search/?key='+my_key+'&part=snippet&q='+uri, function(data) {
    if(data.items.length !== 0)
    console.log(data.items[0].snippet.publishedAt);
    else
    console.warn('no items for',uri)
    });
    }

    for (i = 0; i < urls.length; ++i) {
    getUri(urls[i]);
    }

    关于youtube - 给定视频网址,如何从 Youtube API 获取 Youtube 视频 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43897180/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com