・eyed3 の使い方
すぐに忘れてしまうのでメモ。
import eyed3 from eyed3 import id3 mp3file = '<filename>' new_tag = eyed3.id3.Tag() new_tag.file_info = eyed3.id3.FileInfo(mp3file) new_tag.title = u'タイトルの文字列' new_tag.artist = u'演奏者' new_tag.release_date = u'date_str' new_tag.comments.set(u'複数行のコメントも可') new_tag.lyrics.set(u'詩を入れるならこういう形') new_tag.save()
コメントは DESC と LANG を指定することで複数入れることも可能。その場合は
new_tag.comments.set(u'最初のコメント', u'例1', 'ja') new_tag.comments.set(u'2つめのコメント', u'例2', 'ja')
みたいな形になる。DESC/LANGが異なればコメントは区別されるが、 jukやamarokは複数のコメントを読めないようなので、DESC/LANG を指定したコメントは表示できない。
lyrics もコメント同じように指定できるけど、juk/amarok では表示しなかった。
import eyed3 mp3file = '<filename>' track = eyed3.load(mp3file) tag = track.tag tag.title = u'タイトルの文字列' tag.artist = u'演奏者' tag.release_date = u'date_str' tag.save()
id3タグが全く存在しないファイルの場合はエラーになるので、eyed3.id3.Tag() で初期化する必要がある。 eyeD3以外のアプリでid3タグを打った場合は、id3v2のバージョンで動作が変りそう。
print dir(tag) ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_chapters', '_comments', '_convertFrames', '_getAlbum', '_getArtist', '_getBpm', '_getDate', '_getEncodingDate', '_getGenre', '_getOrigReleaseDate', '_getPublisher', '_getRecordingDate', '_getReleaseDate', '_getTaggingDate', '_getTitle', '_getTrackNum', '_getUrlFrame', '_getV23OrignalReleaseDate', '_getV23RecordingDate', '_images', '_loadV1Tag', '_loadV2Tag', '_lyrics', '_objects', '_popularities', '_privates', '_render', '_saveV1Tag', '_saveV2Tag', '_setAlbum', '_setArtist', '_setBpm', '_setDate', '_setEncodingDate', '_setGenre', '_setNum', '_setOrigReleaseDate', '_setPublisher', '_setRecordingDate', '_setReleaseDate', '_setTaggingDate', '_setTitle', '_setTrackNum', '_setUrlFrame', '_splitNum', '_tocs', '_unique_file_ids', '_user_texts', '_user_urls', 'album', 'artist', 'artist_url', 'audio_file_url', 'audio_source_url', 'best_release_date', 'bpm', 'cd_id', 'chapters', 'clear', 'comments', 'commercial_url', 'copyright_url', 'disc_num', 'encoding_date', 'extended_header', 'file_info', 'frame_set', 'genre', 'getTextFrame', 'header', 'images', 'internet_radio_url', 'isV1', 'isV2', 'lyrics', 'objects', 'original_release_date', 'parse', 'payment_url', 'play_count', 'popularities', 'privates', 'publisher', 'publisher_url', 'recording_date', 'release_date', 'remove', 'save', 'setTextFrame', 'table_of_contents', 'tagging_date', 'terms_of_use', 'title', 'track_num', 'unique_file_ids', 'user_text_frames', 'user_url_frames', 'version']
このうち、"album" 以下が外部から操作できるはずだけど、albumやartistのように単純な文字列だけの部分もあれば、 comments や lyrics のように複数の文字列を入れることが可能な部分もあるので、必要に応じて調べること。