いくつかのMP3ファイルにID3カバーアートを追加する必要があります。コマンドラインツール(GUIなし)が必要ですが、id3もid3v2ツールもそれができないようです。ヒントはありますか?
Mp3ファイルにカバーアートを追加するために日常的に使用する優れたPythonアプリケーションは、コマンドラインapplicationeyeD3
です。これは、次のようにターミナルからインストールできます。
Sudo apt-get install eyed3
cover.jpg
という名前の表紙画像をtest.mp3
という名前のmp3ファイルに追加するコマンドの例を次に示します。
eyeD3 --add-image "cover.jpg:FRONT_COVER" test.mp3
私自身のコンピューターで動作するこの下の例を参照してください。それ以外の場合はメタタグのないmp3に表紙画像を追加します。
andrew@ilium~$ eyeD3 --add-image "cover.jpg:FRONT_COVER" test.mp3
test.mp3 [ 946.12 KB ]
-------------------------------------------------------------------------------
Adding image cover.jpg
Time: 01:00 MPEG1, Layer III [ 128 kb/s @ 44100 Hz - Joint stereo ]
-------------------------------------------------------------------------------
ID3 v2.4:
title:
artist:
album:
album artist: None
track:
FRONT_COVER Image: [Size: 95788 bytes] [Type: image/jpeg]
Description:
Writing ID3 version v2.4
-------------------------------------------------------------------------------
andrew@ilium~$
上記の基本的な構文を示しましたが、画像を追加するためのmany他のオプションがあります。これらの他のオプションは次のとおりです。
--add-image IMG_PATH:TYPE[:DESCRIPTION]
Add or replace an image. There may be more than one
image in a tag, as long as the DESCRIPTION values are
unique. The default DESCRIPTION is ''. If PATH begins
with 'http[s]://' then it is interpreted as a URL
instead of a file containing image data. The TYPE must
be one of the following: OTHER, ICON, OTHER_ICON,
FRONT_COVER, BACK_COVER, LEAFLET, MEDIA, LEAD_ARTIST,
ARTIST, CONDUCTOR, BAND, COMPOSER, LYRICIST,
RECORDING_LOCATION, DURING_RECORDING,
DURING_PERFORMANCE, VIDEO, BRIGHT_COLORED_FISH,
ILLUSTRATION, BAND_LOGO, PUBLISHER_LOGO.
参照:
これが私のために働くPythonスクリプトです。 python script.py audiofile.mp3
で実行します。
mutagen
が必要です。 Sudo -H pip install mutagen
でインストールします。
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error
import sys
mp3file=sys.argv[1]
audio = MP3(mp3file, ID3=ID3)
try:
audio.add_tags()
except error:
pass
audio.tags.add(
APIC(
encoding=1,
mime='image/png',
type=3,
desc=u'Cover',
data=open('/path/to/artwork.png').read()
)
)
audio.save()