iTunesで曲の歌詞を表示するにはApple Musicに登録しているか、自分で歌詞を入力する必要があるみたい。
数日前に何を考えたのか、歌詞が表示されるといいよなと思って実際に入れようとしたんだけど、iTunesにある1,126曲を全て手入力するのはいやだなって思った。そこでなんとか自動で歌詞を入れることができないか調べたら、Lyrics Masterってツールがあったのでとりあえず入れてみた。
Lyrics MasterはiTunesと連携して、iTunes内にある曲に歌詞をつけてくれるんですよね、しかも自動で。わぁとっても便利ー。ってことでやってみたんですけど、歌詞が見つからない曲があったり、Instrumentalだけど歌詞が入ってしまったり、と自分が求めていたものと微妙に違くて途中で止めてしまった(適切な設定ができていなかっただけかも)。歌詞が入らなかったり、歌詞が間違っている曲を一つずつ修正していくのはめんどくさいし、間違ったまま放置しておくのは嫌だし、なんとなく歌詞が表示されればいいなー程度に考えていたため修正に対するモチベーションが低かった。なので、いっそのこと歌詞なんて表示されなくていいのではないかと思ってしまった。
歌詞は表示されなくてよくなったので、今回入力したカスタムの歌詞を消したい。しかし、中途半端に歌詞を入力してしまっているのでどの曲に歌詞が入力されているかわからない。なのでiTunes内にある全ての曲の歌詞を削除するPythonスクリプトを書いた。
mutagen
mp3とかのメタデータを書いたり消したりできるPythonモジュールのmutagenを使う。
インストール
普通にpip
でインストールする。
$ pip install mutagen
iTunes内の曲の歌詞を消す
実際にmutagenを使って、曲の歌詞を消していく。今回はiTunesにMP3とM4Aしかなかったので、それらに対応したものにした。ITUNES_MEDIA_PATH
は"iTunes Media"フォルダの場所にしておく。iTunes > 環境設定 > 詳細 に書いてある。
from mutagen.mp3 import MP3 from mutagen.mp4 import MP4 from mutagen import MutagenError import glob ITUNES_MEDIA_PATH = 'iTunes Mediaフォルダの場所' def delete_lyrics_in_mp3(path): try: tags = MP3(path) if 'USLT::eng' in tags: tags.pop('USLT::eng', None) tags.save() except MutagenError: pass def delete_lyrics_in_m4a(path): try: tags = MP4(path) if '\xa9lyr' in tags: tags.pop('\xa9lyr', None) tags.save() except MutagenError: pass if __name__ == '__main__': mp3_list = glob.glob(ITUNES_MEDIA_PATH + '/Music/**/*.mp3', recursive=True) m4a_list = glob.glob(ITUNES_MEDIA_PATH + '/Music/**/*.m4a', recursive=True) for i in mp3_list: delete_lyrics_in_mp3(i) for i in m4a_list: delete_lyrics_in_m4a(i)
mutagen.mp3.MP3()
とmutagen.mp4.MP4()
でメタデータを辞書形式で受け取り、歌詞の要素を削除するだけ。MP3ならUSLT::eng
、MP4なら\xa9lyr
となっている。
ということで、iTunes内の曲のカスタムの歌詞をPythonで消すことができた。正直Lyrics Masterを使う時点でもう少し調べておく必要があったとしか思えない...
追記(2021-03-24)
poetryを使ってpackageにした。