使用MP3 ID3 Tag来批量重命名MP3文件

从网上下载的MP3文件,其文件名通常是不规则的,比如一些数字的组合。而MP3文件的元数据,比如歌曲名称,歌手名称,专辑名称等,都存放在其ID3标签中。

我使用ID3 Tagging in Python  来读取MP3文件的ID3标签。做了一点小小的修改,原来的实现在读取MP3文件之后没有关闭该文件,导致无法重命名,我增加了关闭文件的一行代码。

具体的重命名的代码如下:

python 代码
  1. import os  
  2. from ID3 import *   
  3.   
  4. #path="../testfiles/002"    
  5. path = 'C:\\TDDownload\Musictest'   
  6.   
  7. ACCEPTED_FILE_EXTENSIONS = (".mp3")   
  8.   
  9. def get_file_extension(filename) :    
  10.   return os.path.splitext(filename)[1].strip().lower()   
  11.   
  12. def is_acceptable_file(filename) :   
  13.   if (filename) :   
  14.     return get_file_extension(filename) in ACCEPTED_FILE_EXTENSIONS   
  15.   return 0   
  16.   
  17. def main() :   
  18.   renames = {}   
  19.   for root, dirs, files in os.walk(path) :   
  20.     for filename in files :   
  21.       if is_acceptable_file(filename) :    
  22.         extension = get_file_extension(filename)   
  23.         try:   
  24.           id3info = ID3(os.path.join(root, filename))   
  25.           title = id3info.title   
  26.           if (title.strip() != '' and not renames.has_key(title)) :   
  27.             renames[title] = (os.path.join(root, filename), os.path.join(root, title + extension))   
  28.           else :   
  29.             print "Skip file %s " % os.path.join(root, filename)               
  30.         except InvalidTagError, message:   
  31.           print 'Invalid ID3 tag:', message   
  32.   for src, target in renames.values() :    
  33.     print '*' * 3, "Rename file %s to %s " % (src, target), '*' * 3   
  34.     try :   
  35.       os.rename(src, target)   
  36.     except :   
  37.       print "Error occurs when renaming file %s " % src         
  38.        
  39. if __name__ == '__main__' :   
  40.   main()   


其输出如下:
*** Rename file ../testfiles/002\10001079.mp3 to ../testfiles/002\隐形的翅膀.mp3  ***
*** Rename file ../testfiles/002\200611294126.mp3 to ../testfiles/002\眼泪成诗.mp3  ***
*** Rename file ../testfiles/002\20070610190627.mp3 to ../testfiles/002\离歌.mp3  ***

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值