如何使用python将下载的音频文件扩展名重命名为mp3

2024-04-29

目前,我正在尝试根据艺术家姓名和歌曲标题将 YouTube 音乐视频下载为音频文件,下载所有视频后,我尝试将所有音频文件从 .webm 或 .mp4 扩展名重命名为 .mp3。但似乎我在将文件名和扩展名更改为 .mp3 时遇到了一些错误。我的代码基本上不会重命名音频文件的名称和扩展名。有人可以帮我将下载的文件重命名为 .mp 文件吗?

这是我的代码…………

import os
from requests import get
from yt_dlp import YoutubeDL

YDL_OPTIONS = {'format' : 'bestaudio/best', 'noplaylist' : 'True'}
filename=[]
old=[]
positions=[]
def search(arg, index):
  with YoutubeDL(YDL_OPTIONS) as ydl:
    try:
      get(arg)
    except:
      song =   ydl.extract_info(f"ytsearch:{arg}", download=True)['entries'][0]
    else:
      song =   ydl.extract_info(arg, download=True)

oldpath = song['title'] + '[' + song['id'] + ']' + '.' + song['ext'] 
old.append(oldpath)
newpath = f"{song['title']}.mp3"
if os.path.isfile(oldpath):
  os.rename(f"{oldpath}",newpath)
  filename.append(str(newpath))
else:
  filename.append(str(newpath))
  positions.append(index)


return filename , positions, old


title = (dataset['Title'] + " " + dataset['Artist']).tolist()
for index, arg in enumerate(title):
   filename, positions, old = search(arg, index=index )

这里 oldpath = 以此格式下载的原始文件 newpath = 我想将其重命名为哪种格式 标题包含歌曲标题和艺术家姓名(例如:Falling - Harry Styles)。还有一件事是,如果我在那里检查文件名,它会成功显示所有带有 .mp3 的音频文件名,但是如果我尝试使用重命名的名称和 .mp3 运行音频文件,它会给我这个错误“FileNotFoundError:[Errno 2]没有这样的文件或目录:'The Weeknd - Blinding Lights (Official Video).mp3'"


您确定文件已下载到预期位置吗?假设您的文件名正确,另一个选项是目录不正确。

范围outtmpl https://github.com/yt-dlp/yt-dlp/blob/059bc4db1975698dca53278a0fcc23d428b7658a/yt_dlp/YoutubeDL.py#L234允许您定义文件名和路径的模板。检查docs https://github.com/ytdl-org/youtube-dl/blob/master/README.md#output-template原来的youtube-dl了解详情。

这是一个例子:

ydl_options = {
    'outtmpl': '~/Music/%(extractor_key)s/%(extractor)s-%(id)s-%(title)s.%(ext)s'
}

ydl = yt_dlp.YoutubeDL(ydl_opts)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用python将下载的音频文件扩展名重命名为mp3 的相关文章

随机推荐

  • 如何在库的上下文中实例化 Spring?

    我正在寻找一个示例 该示例展示了如何在打包在普通旧的 不可执行的 java 库 JAR 中的一组类的上下文中实例化 Spring 容器 这里的核心目的是提供依赖注入 主要用于日志记录 我认为最根本的问题是不可执行的 jar 没有单一的启动点
  • 如何接收在 PHP 中使用“application/octet-stream”发送的 POST 数据?

    这就是我正在处理的事情 我们的一个计划有一个支持表格 用户可以使用它来请求支持 此表单的作用是 它向 PHP 脚本执行 HTTP POST 请求 该脚本应该收集信息并将其转发到支持电子邮件地址 POST 请求包含三个类型的文本字段Conte
  • 如何提取数字(以及比较形容词或范围)

    我正在用 Python 开发两个 NLP 项目 它们都有类似的任务提取数值和比较运算符来自句子 如下所示 greater than 10 weight not more than 200lbs height in 5 7 feets fas
  • 测试 WebApi 控制器时如何生成 Asp.net 用户身份

    我正在使用 Web API 2 在 web api 控制器中我使用过GetUserId使用 Asp net Identity 生成用户 ID 的方法 我必须为该控制器编写 MS 单元测试 如何从测试项目访问用户 ID 我在下面附上了示例代码
  • 从实体框架模型构建数据库架构

    我发现 EF 可以根据现有数据库架构更新模型 然而 我完全从头开始 那我不想建表了rebuild它们位于 EF 模型文件中 有没有一种方法可以绘制模型文件 并自动为我创建 SQL 表 不幸的是 您必须等待 EF 版本 2 这是一个链接 ht
  • HQL 对象命名参数

    我想知道是否可以从 HQL 中名为参数的对象中检索特定列 Example public class Product private int id private Supplier supplier private String name p
  • MDI应用程序中父窗体的问题

    我使用按钮作为容器中的控件 父窗体 当子窗体出现时 父窗体中的控件 按钮 图片 标签 出现在子窗体上并将其覆盖 我看不到子窗体 有谁知道如何防止这种情况 我不想将这些控件设置为 Control Visible false 因为当我最小化子表
  • 使用 Slick String 插值有条件地更新字段

    我有两个Options val name Option String val shared Option Boolean 我想建立一个UPDATE查询那个SET如果上述值是这些字段Some 但如果它们是 则保持不变None 我已经成功地实现
  • 页面内容中 html 实体的 Rspec 测试

    我正在编写一个请求规范 并想测试字符串 Reports Aging Reports 是否存在 如果我直接将字符放入匹配器表达式中 我会收到错误 无效的多字节字符 所以我尝试了以下操作 page should have content Rep
  • 尝试从 Excel 添加附件到电子邮件,但仅知道文件名的第一部分

    我有一个宏 每天用来将自动生成的文件附加到电子邮件中 文件名需要采用某种格式 其中包括日期和时间 并且由于这是自动的 因此只能固有地知道日期 无需手动检查文件 我在用 Attachments Add and format date etc
  • 如何反序列化数组 google-gson 内的数组

    我有这样的 JSON Answers Locale Ru Name Name1 Locale En Name Name2 Locale Ru Name Name3 Locale En Name Name4 正如你所看到的 我的数组里面有数组
  • 当使用客户端函数填充 DOM 时,如何等待从 puppeteer 中的 page.evaluate 函数加载所有图像

    我试图让代码执行等待所有图像加载之前木偶师截屏 当调用 initData 函数时 我的 DOM 会被填充 该函数是在客户端 js 文件中定义的 延迟或超时是一种选择 但我确信必须有一种更有效的方法来做到这一点 async dataObj g
  • C# - 获取 GPU 的总使用百分比

    我正在向我的程序添加一些新功能 这些功能当前通过串行连接将 CPU 使用情况和 RAM 使用情况发送到 Arduino 请参阅this https create arduino cc projecthub thesahilsaluja cp
  • Karate UI 中的 ShadowRoot dom 元素访问问题

    我正在尝试访问 ShadowRoot dom 树元素 但我面临的问题是我无法使用特定的 html 元素来调用 ShadowRoot 因为该元素是动态的 请参见下面的 html 片段 id vaadin text field error 0
  • 利用“写入时复制”将数据复制到 Multiprocessing.Pool() 工作进程

    我有一点multiprocessingPython 代码看起来有点像这样 import time from multiprocessing import Pool import numpy as np class MyClass objec
  • 如何使用 json 谷歌翻译 api?

    我正在尝试使用来自 python 的 google 翻译和 utf 8 文本 如何调用json api 他们有一个将其嵌入 html 的文档 但我在任何地方都找不到合适的 API 或 wsdl 谢谢 拉斐尔 这是最终对我有用的代码 使用没有
  • 资源生成器和控制器生成器之间的区别

    当我做 rails g model user name string rails g controller users index create new destroy show 并编辑 config routes rb 添加 resour
  • 通过选择插入时,如何在插入表之前检查重复项

    通过选择插入时 如何在插入表之前检查重复项 insert into table1 select col1 col2 from table2 我需要检查 table1 是否已经有 table1 col1 value table2 col1 v
  • Android数据库访问设计方法

    我有一个关于数据访问的一般 Android 设计问题 我的应用程序中有许多活动需要访问 SQLite 数据库 为了将所有数据访问逻辑包装在一个地方 我创建了一个 DatbaseHandler 类来处理所有数据访问逻辑 此类负责构建 wher
  • 如何使用python将下载的音频文件扩展名重命名为mp3

    目前 我正在尝试根据艺术家姓名和歌曲标题将 YouTube 音乐视频下载为音频文件 下载所有视频后 我尝试将所有音频文件从 webm 或 mp4 扩展名重命名为 mp3 但似乎我在将文件名和扩展名更改为 mp3 时遇到了一些错误 我的代码基