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

How to rename downloaded audio files extensions to mp3 with python

目前,我正在尝试根据艺术家姓名和歌曲名称将 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 )

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

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

参数outtmpl allows you to define a template for a file name and path. Check the docsyoutube-dl详情

这是一个例子:

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

ydl = yt_dlp.YoutubeDL(ydl_opts)