記事はこちら
音楽ファイルタグ追記/編集をするスクリプト
from mutagen.id3 import ID3, TIT2, TALB, TPE1, TRCK, APIC, TDRC, TCON from mutagen.mp3 import MP3 import mutagen.id3 import glob import os import time import datetime # ================================================ # 目的: # SONY/Music Centerへ曲データ挿入前に、タグ名を整理 # Music Centerはタグで整理/並び替えをするため # (タグがないとグチャグチャになる) # ================================================ # 機能:フォルダ内のMP3ファイルに対して、タグ付けをする # file_path:【自動取得】 # filename:【自動取得】 # album:任意 # artist:任意 # title:【自動取得】/ファイル名から取得 # track:任意 # genre:任意 # date:【自動取得】 # description:任意 # savepath:なし/不要なので削除 # ================================================ # =================================== # function # =================================== # get today def Getdate(): # datetime dt1 = datetime.date.today() dt2 = dt1.strftime('%Y-%m-%d') return dt2 #dt1 = datetime.datetime.now() #dt2 = dt1.strftime('%Y-%m%d-%H%M-%S') # see inside of directory def Seedir(targetDir): # Check inside of directory files = glob.glob(targetDir + "/*.mp3") # pick up files as Dictionary(itemms=keys,values) l={} for f in files: # filefullpath filePath = os.path.abspath(f) # filename basename = os.path.basename(f) # Dictionary / collect filefullpath,basename l[filePath]=basename return l # Chaeck files def CheckEachFile(fileList,album, artist, track, genre, date, description): for f,v in fileList.items(): print(f,v) Mp3tagRename(f,v,album, artist, track, genre, date, description) # edit filename/ remove '.mp3' from filename def RenameFilename(s): r = s.replace('.mp3','') return r # Put the tag on MP3 file def Mp3tagRename(f,v,album, artist, track, genre, date, description): title = RenameFilename(v) m = MP3(f, ID3=ID3) try: m.add_tags(ID3=ID3) except mutagen.id3.error: pass m["TPE1"] = TPE1(encoding=3, text=artist) m["TIT2"] = TIT2(encoding=3, text=title) m["TALB"] = TALB(encoding=3, text=album) m['TCON'] = TCON(encoding=3, text=genre) m['TDRC'] = TDRC(encoding=3, text=date) m["TRCK"] = TRCK(encoding=3, text=[str(track)]) m.save() # =================================== # ready for exe 1 # =================================== # current directory currentdir = os.getcwd() # Directory name where files move to targetDir = currentdir + '/gamemusic1' # =================================== # ready for exe 2 # =================================== album='GAMEMUSIC_Edited1(mp3)' artist='' track='' genre='GameMusic' description='' # =================================== # execution # =================================== dtToday = Getdate() fileList = Seedir(targetDir) CheckEachFile(fileList,album, artist,track, genre, dtToday, description)
目的がMusic Centerへ取り込んだ際に綺麗に並ぶように・・・なので、今回はこんなもんで十分。
Music Centerって、アルバム名でまとめてしまったりするので、取り込んだ際に「あれ?どこいった?」とかなるんだよね。。。。
この法則で考えると、「アルバム名でまとめてしまうこともできる」ってことで、タグ編集が重要になってくる。
スクリプトについて
ファイルのタグ編集をするに際して「フルパス」が必要になるので、globを使って引っ張ることに。で、そのフルパスと一緒に「ファイルネーム」を使用したいので、今回はリストではなく、辞書を使って「フルパス」と「ファイルネーム」を管理。dictionary.itemsで引数渡しをして、keysとvaluesで使い分けることに。
ちょっとやりくりが過ぎるとややこしくなるなぁ。。。ま、いっか。