5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonを利用したMP3カバーアート取得・更新のやり方

Posted at

前回の記事「Pythonを利用したMP3メタデータ編集のやり方」で、MP3メタデータ編集について紹介しました。この記事では、MP3カバーアートの取得・更新方法を紹介します。

下記サイトのフリーBGMをMP3のサンプルデータとして利用しています。
なんでしょう? @ フリーBGM DOVA-SYNDROME

実行環境

下記pipコマンドにより音楽メタデータ操作ライブラリmutagen及びイメージ操作ライブラリpillowをインストール
pip install mutagen pillow

python 3.8.10 で実行可能なことを確認

カバーアート取得

mutagenのID3を利用することで、カバーアート(APIC:Attached Picture)を取得することができる。

from io import BytesIO

from mutagen.id3 import ID3
from PIL import Image

mp3_file_path = "なんでしょう?.mp3"
tags = ID3(mp3_file_path)

# カバーアート情報取得
apic = tags.get("APIC:")
if apic is not None:
    cover_img = Image.open(BytesIO(apic.data))
    artist, title = tags.get("TPE1"), tags.get("TIT2")
    cover_img.save(f"{artist}_{title}.jpg")

下記カバーアートが出力される(KK_なんでしょう?.jpg)
なんでしょう?_KK.jpg

カバーアート更新

from io import BytesIO

from mutagen.id3 import APIC, ID3
from PIL import Image

mp3_file_path = "なんでしょう?.mp3"
tags = ID3(mp3_file_path)

# 更新用カバーアート画像ファイル作成
new_cover_file_path = "new_cover.jpg"
Image.new("RGB", (300, 300), (128, 0, 0)).save(new_cover_file_path)

# カバーアート更新
with open(new_cover_file_path, "rb") as img_file:
    cover_img_byte_str = img_file.read()
    tags.add(APIC(mime="image/jpeg", type=3, data=cover_img_byte_str))
tags.save()

# カバーアート更新結果確認
tags = ID3(mp3_file_path)
apic = tags.get("APIC:")
if apic is not None:
    cover_img = Image.open(BytesIO(apic.data))
    cover_img.show()

更新後の下記カバーアートが表示される(new_cover.jpg)
cover_update.jpg

参考

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?