当前位置: 首页 > 知识库问答 >
问题:

使用 YouTube API 从用户提供的搜索词中获取 YouTube 视频 ID

厍光霁
2023-03-14

非常新的初学者。我目前正在做一个项目,用户可以输入一个搜索词,并使用YouTube数据API v3获得一个视频ID。然后这个视频ID被用来组装一个URL,我用它把视频下载到我的电脑上。这是我用来做这件事的。(忽略我已经导入的库,我稍后会清理它们)

from __future__ import print_function
import pathlib
from pathlib import Path
import pytube
import os
import os.path
import googleapiclient
import google_auth_httplib2
import google_auth_oauthlib
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from pytube import YouTube



import os

import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors

scopes = ["https://www.googleapis.com/auth/youtube.force-ssl"]
userVideoChoice=input("Please enter the title of the song you want to use. ")
def main():
    
    os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"

    api_service_name = "youtube"
    api_version = "v3"
    client_secrets_file = ("CLIENT SECRET FILE HERE")

    # Get credentials and create an API client
    flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
        client_secrets_file, scopes)
    credentials = flow.run_console()
    youtube = googleapiclient.discovery.build(
        api_service_name, api_version, credentials=credentials)

    request = youtube.search().list(
        part="snippet",
        maxResults=1,
        q=userVideoChoice
    )
    response = request.execute()

    print(response)

if __name__ == "__main__":
    main()

因此,对于“Youtube Rewind 2018”的搜索查询,Youtube API将返回以下内容:

{'kind': 'youtube#searchListResponse', 'etag': 'HEbvpHREbTpRzcvryx2ubH2tnDo', 'nextPageToken': 'CAEQAA', 'regionCode': 'US', 'pageInfo': {'totalResults': 1000000, 'resultsPerPage': 1}, 'items': [{'kind': 'youtube#searchResult', 'etag': 'VX4FEWIWXekE8cUP4SCMNhGl7Ek', 'id': {'kind': 'youtube#video', 'videoId': 'YbJOTdZBX1g'}, 'snippet': {'publishAt': '2018-12-06T17:58:29Z', 'channelId': 'UCBR8-60-B28hp2BmDPdntcQ', 'title': 'YouTube Rewind 2018: Everyone Controls Rewind |#YouTubeRewind“,”描述“:”YouTube倒带2018。庆祝定义2018年的视频,人物,音乐和时刻。#YouTubeRewind 如果没有创作者,就不会倒带:...“, ”缩略图“: {'默认': {'url': 'https://i.ytimg.com/vi/YbJOTdZBX1g/default.jpg', 'width': 120, 'height': 90}, 'medium': {'url': 'https://i.ytimg.com/vi/YbJOTdZBX1g/mqdefault.jpg', 'width': 320, 'height': 180}, 'high': {'url': 'https://i.ytimg.com/vi/YbJOTdZBX1g/hqdefault.jpg', 'width': 480, 'height': 360}}, 'channelTitle': 'YouTube', 'liveBroadcastContent': 'none', 'publishTime': '2018-12-06T17:58:29Z'}}]}

我想做的是分离“videoId”字符串,然后用它来组装URL。我觉得有一个非常简单的解决方案,我不是初学者。我可以得到一些帮助来隔离这个我需要继续我的项目的部分吗?

提前感谢您的帮助。

共有1个答案

咸育
2023-03-14

由于响应是一个字典,您可以通过索引访问它的元素response[items]是一个列表,因此最好遍历该列表中的所有项。有了它,我们可以生成如下的video_ id列表:

video_ids = []
for item in response['items']:
    video_ids.append(item['id']['videoId'])

print(video_ids)

此代码request.execute()

作为旁注,使用预印字机听写更容易理解。我想补充一点

import pprint
pp = pprint.PrettyPrinter(indent=2).pprint

在导入结束时,使用pp(响应),而不是print(响应)

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

  • 我如何从youtube频道获取持续时间和浏览量都很重要的视频? 我试过这个请求: https://www.googleapis.com/youtube/v3/search?part=snippet, id 但响应不包含持续时间/视图计数。有什么想法吗?谢谢。

  • 所以一般的问题是如何从开放流中播放视频?例如Chrome、Firefox和KMPlayer都很容易做到这一点。浏览器生成一个带有视频标签的简单页面,因此通过JS来管理播放器将是微不足道的。但是...内部WebBrowser控件不能,它建议下载文件。我尝试了CEFSharp(Chrome嵌入式框架),但没有成功。也许有人知道好的视频播放器WPF库,可以流视频吗?我也尝试了vlc.wpf和Shockw

  • 问题内容: 我想使用Java从YouTube网址获取v = id YouTube网址格式示例: &a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW ](http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW) //www.youtube.com/watch?v=u8nQa1cJy

  • 我在使用YouTube API v3时不断收到无效的SearchFilter错误。我有以下参数: 我正在使用API游乐场,并注意到如果我进行OAuth调用,它会工作,但仅使用API密钥(在没有OAuth的情况下执行),它会失败。同样的事情发生在我的代码中。基本的列表调用在两者中都有效,所以我怀疑他们的API中存在错误,或者我错过了一些东西。 其他人可以确认这一点,看看我是否错过了什么? 如果我去掉

  • 好的,我正在为我的服务器制作一个不协调的机器人,我想实现的是一个youtube命令 我一直在搜索Youtube API,我能找到的只是他们对类似浏览器的搜索 我用nodejs在我的笔记本电脑上运行它,而我的机器人运行的是discord。js 我有一个类似的命令,可以执行MAL和Urban字典搜索,但我什么也没找到,也不知道如何在youtube上执行同样的操作 我曾经有一个蟒蛇机器人的命令,它能够实