Youtube 数据 API:获取播放列表中每个视频的标题和文字记录

2023-12-24

我正在尝试获取播放列表中所有视频的标题和文字记录。这是到目前为止的代码:

from googleapiclient.discovery import build
from youtube_transcript_api import YouTubeTranscriptApi

api_key = "************************"

#1.query API 

rq = build("youtube", "v3", developerKey=api_key).playlistItems().list(
        part="contentDetails, snippet",
        playlistId="PL590CCC2BC5AF3BC1",
        maxResults=39,        
        ).execute()
        
#2.Create a list with video Ids and Titles

vid_ids = []
vid_title = []
for item in rq["items"]:
    vid_ids.append(item["contentDetails"]["videoId"])
    vid_title.append(item["snippet"]["title"])

#3.Get transcripts

srt = YouTubeTranscriptApi.get_transcripts(vid_ids)

#4.For each video id extract the Key:"text" from a list of dictionaries 

for i in vid_ids:
    get_key_text = " ".join([a_dict["text"] for a_dict in srt[0][i]])       

#5.Create a dictionary with the title and transcript for each video id

pl_dict = dict(zip(vid_title,get_key_text))

#6.print trancript under title

for key, value in pl_dict.items():
    print(key,"\n", value)

当我运行它时,我得到这个结果:

Lec 1 | MIT 18.01 Single Variable Calculus, Fall 2007 
 T
Lec 2 | MIT 18.01 Single Variable Calculus, Fall 2007 
 h
Lec 3 | MIT 18.01 Single Variable Calculus, Fall 2007 
 e
Lec 4 | MIT 18.01 Single Variable Calculus, Fall 2007 
  
Lec 5 | MIT 18.01 Single Variable Calculus, Fall 2007 
 f
Lec 6 | MIT 18.01 Single Variable Calculus, Fall 2007 
 o

在步骤 3 中,我获取了成绩单,并且存储在变量“srt”中的结果是一个元组 ---> 元组 [dict, list]。此外,字典内有一个列表字典(每个视频一个),包含 3 个键:“文本”、“开始”和“持续时间”。

在步骤 4 中,我从所有字典中提取 key: "text",将它们连接起来(不使用双引号),并将它们存储在变量 get_key_text 中。但问题是,该变量将所有视频的转录本存储在一个文字字符串中,因此在下一步中,当我尝试打印标题和每个转录本时,我只得到第一个字符、第二个字母等。

我应该怎样做才能在标题后打印每份成绩单?


电流输出说明

get_key_text是一个字符数组(又名字符串,这里它的值类似于'The following content is provided under ...') while vid_title是一个字符数组的数组(又名字符串数组,这里它是这样的['7K1sB05pE0A', 'ryLdyDrBfvI', ...]),所以当做zip(vid_title,get_key_text)您正在创建一个pair数组,其中第一个条目是字符串vid_title第二个条目是(当您在每次迭代时覆盖的最后一个视频脚本)的字符get_key_text,所以你会得到类似的东西[['7K1sB05pE0A', 'T'], ['ryLdyDrBfvI', 'h'], ...].

解决方案:

所以你应该改变:

for i in vid_ids:
    get_key_text = " ".join([a_dict["text"] for a_dict in srt[0][i]])     

To:

get_key_text = [" ".join([a_dict["text"] for a_dict in srt[0][i]]) for i in vid_ids]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Youtube 数据 API:获取播放列表中每个视频的标题和文字记录 的相关文章

  • Python Popen 与 psexec 挂起 - 不良结果

    我对 subprocess Popen 和我认为是管道的问题有疑问 我有以下代码块 从 cli 运行时 100 都不会出现问题 p subprocess Popen psexec serverName get cmd c ver echo
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • 在 Tensorflow tf.nn.nce_loss 中出现 TypeError:'Mul' Op 的输入 'y' 的类型为 float32,与参数 'x' 的 int32 类型不匹配

    我正在研究 Tensor Flow 中的 Bag of Words 实现 并得到了 类型错误 Mul Op 的输入 y 的类型为 float32 与参数 x 的 int32 类型不匹配 在 tf nn nce loss 中 我尝试查看 tf
  • Youtube 退出全屏模式 TextView 可见性问题

    我正在全屏模式下播放视频 当我单击后退按钮时 我可以退出全屏模式 但无法显示我在全屏情况下隐藏的 TextView 要在全屏模式下隐藏 textView 我使用以下代码 Override public void onInitializati
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 奇怪的 MySQL Python mod_wsgi 无法连接到 'localhost' (49) 上的 MySQL 服务器问题

    StackOverflow上也有类似的问题 但我还没有发现完全相同的情况 这是在使用 MySQL 的 OS X Leopard 机器上 一些起始信息 MySQL Server version 5 1 30 Apache 2 2 13 Uni
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default

随机推荐