- 语言:Python 3.5.5
- 使用到的库:os库、Mutagen库(均可以使用pip方法安装)
- 目录结构限制:歌曲存储目录结构为 “根目录——歌手名——专辑名——歌曲”
- 歌曲格式限制:仅支持MP3格式
- 功能实现:重命名音乐格式为**“音轨——歌曲名——歌手名.mp3”**
关键功能实现,通过mutagen库函数得到相关信息:
mu = mutagen.File(srcFile)
trackNum = mu.get("TRCK").text[0] #得到音轨号
performer = mu.get("TPE1").text[0] #得到表演者
songName = mu.get("TIT2").text[0] #得到歌曲名称
完整代码
import os
import mutagen
dir = "E:/CloudMusic/" #保存下载歌曲的根目录,此处以网易云为例
performerList = os.listdir(dir)
for performer in performerList:
performerDir = dir + performer + '/'
albumList = os.listdir(performerDir)
for album in albumList:
albumDir = performerDir + album + '/'
print(albumDir)
os.chdir(albumDir)
songsList = os.listdir(albumDir)
for song in songsList:
srcFile = albumDir + song
mu = mutagen.File(srcFile) #得到音轨号等信息
if(mu == None or mu.get("TRCK") == None):
continue
trackNum = mu.get("TRCK").text[0]
performer = mu.get("TPE1").text[0]
songName = mu.get("TIT2").text[0]
if (int(trackNum) < 10):
trackNum = '0' + trackNum
newName = trackNum + ' - ' + songName + ' - ' + performer + '.mp3'
print(newName)
try:
os.rename(song, newName)
except:
continue
仅更改一张专辑下的文件:
import os
import mutagen
dir = "E:/CloudMusic/Television/Marquee Moon" #需要处理的歌曲目录,请根据实际情况替换
os.chdir(dir)
songsList = os.listdir(dir)
for song in songsList:
srcFile = dir + "/" + song
mu = mutagen.File(srcFile)
trackNum = mu.get("TRCK").text[0] #得到音轨号
performer = mu.get("TPE1").text[0] #得到表演者
songName = mu.get("TIT2").text[0] #得到歌曲名称
if(int(trackNum) < 10):
trackNum = '0' + trackNum
newName = trackNum + ' - ' + songName + ' - ' + performer + '.mp3'
print(newName)
os.rename(song, newName)
程序运行前:
程序运行后:
参考资料: