我想用pytube下载音乐,但是用它下载的MP3文件不能显示ID3标签(专辑、艺术家等)。我用了eyed3、MoviePy和MP3tag,但是它们没有解决我的问题。而且我也不能用扬声器听这些音乐。
使用yt.streams.filter(only_audio=True).first()
下载的文件格式是mp4,我想使用mp3文件。我在网上找到的方法是直接更改文件扩展名。
from pytube import YouTube
import os
yt = YouTube(input('Url of the video...'))
print('Got', yt. title)
path = "C:/Users/USER/Music"
video = yt.streams.filter(only_audio=True).first()
out_file = video.download(output_path=path)
base, ext = os.path.splitext(out_file)
new_file = base + '.mp3' # Change.mp4 to .mp3
os.rename(out_file, new_file)
print(yt. title, "downloaded")
但是当我高兴地开始设置专辑和艺术家信息时,我发现它们无法修改,我尝试了eyed3,但发现只有几次标签可以正常添加,而且如果我在下载后编写程序更改标签,它根本不起作用。
artist = input('Artist...')
album = input('Album...')
file = eyed3. load(new_file)
file.initTag(); # Actually I don't know what this did
file.tag.artist = artist
file.tag.album = album
file.tag.track_num = i + 1 # I used a loap to set track num
file.tag.save()
我尝试了应用程序Mp3tag。它在程序界面上显示ERROR: MP3 header parse error
(见此:How to fix ERROR: MP3 header parse error,但可以编辑,但编辑过的标签不能在文件资源管理器中显示,编辑过的文件也不能播放,值得注意的是,没有用Mp3tag修改过的文件仍然可以在电脑上播放,但当我用带U盘的扬声器时,它就不能播放了(见此:Car doesnt recognize my music downloaded with my own python app)
PS:我试过MoviePy把文件转成MP3,但它返回了KeyError: 'video_fps'
。
1条答案
按热度按时间mwngjboj1#
将扩展名从
.mp4
更改为.mp3
只会欺骗您的音乐播放器,使其认为这是一个mp3文件,但实际上它仍然是一个mp4文件。您的扬声器可能不够智能,无法读取这些mp4文件,并且mp3标签库无法更改mp4文件上的标签,因为它是不同的文件类型。
您需要额外的步骤来正确地将mp4转换为mp3文件。解决方案可以通过MoviePy,如另一个堆栈溢出问题here所建议的那样。