2009-01-03 43 views
25

Tôi đã sử dụng mutagen để đọc và viết các thẻ MP3, nhưng tôi muốn có thể nhúng trực tiếp album nghệ thuật vào tệp.Làm cách nào để nhúng ảnh bìa album vào MP3 bằng Python?

+1

không phải là một ý tưởng tồi sao? Bạn sẽ không tăng kích thước mp3 của bạn bằng cách nhúng cùng một hình ảnh nhiều lần trên tất cả mp3 của một album duy nhất? Album nghệ thuật phải thuộc về thư mục chứa album. – nosklo

+2

@nosklo có máy nghe nhạc mp3 chỉ hiển thị hình ảnh nhúng và không phải là một trong nằm trong thư mục – sdu

+0

@nosklo Tôi đã tìm thấy rằng các tệp mp3 của tôi quá lớn đến mức hình thu nhỏ không tạo ra nhiều khác biệt. Tôi ước tính kích thước trung bình của mình là 6MB, tôi cho phép hình thu nhỏ của mình lên tới 60KB để chúng chỉ thêm 1% vào kích thước tệp. Với JPEG hóa ra rất nhiều. –

Trả lời

3

Có vẻ như bạn phải thêm một loại khung đặc biệt vào MP3. Xem các trang web trên ID3 tags

Ngoài ra hướng dẫn cho mutagen ngụ ý rằng bạn có thể thêm các thẻ ID3 trong mutagen see

12

Tôi đã sử dụng các mô-đun eyeD3 để làm điều này chính xác.

def update_id3(mp3_file_name, artwork_file_name, artist, item_title):  
    #edit the ID3 tag to add the title, artist, artwork, date, and genre 
    tag = eyeD3.Tag() 
    tag.link(mp3_file_name) 
    tag.setVersion([2,3,0]) 
    tag.addImage(0x08, artwork_file_name) 
    tag.setArtist(artist) 
    tag.setDate(localtime().tm_year) 
    tag.setTitle(item_title) 
    tag.setGenre("Trance") 
    tag.update() 
+0

Theo v0.7, cách sử dụng giống như sau: 'audiofile = eyed43.load (file_name)' và 'audiofile.tag.artist = artist', v.v. Xem: http://eyed3.nicfit.net/ –

+0

Blog này thực hiện tốt công việc triển khai thực hiện eyed3 bằng API cập nhật và mới nhất. http://tuxpool.blogspot.in/2013/02/how-to-store-images-in-mp3-files-using.html –

35

Sau đây là cách để thêm example.png làm bìa album vào example.mp3 với mutagen:

from mutagen.mp3 import MP3 
from mutagen.id3 import ID3, APIC, error 

audio = MP3('example.mp3', ID3=ID3) 

# add ID3 tag if it doesn't exist 
try: 
    audio.add_tags() 
except error: 
    pass 

audio.tags.add(
    APIC(
     encoding=3, # 3 is for utf-8 
     mime='image/png', # image/jpeg or image/png 
     type=3, # 3 is for the cover image 
     desc=u'Cover', 
     data=open('example.png').read() 
    ) 
) 
audio.save() 
+2

Điều này không hiệu quả; Tôi làm theo các mã ở trên và tôi nhận được "TypeError: một số nguyên là cần thiết" – Tensigh

+1

Đối với tôi không, tôi nhận được: 'TypeError: 'str' đối tượng không thể được hiểu là một số nguyên'. Toàn bộ dấu vết và nguồn ở đây: https://gist.github.com/brutus/69c51cd706a6cf5d1594 – Brutus

+1

Tôi thấy cần sử dụng 'v2_version = 3' trong' save' để các thẻ mới có thể được đọc bởi Windows 7 và tôi đơn giản hóa mã này bằng cách đọc trực tiếp vào một đối tượng 'ID3'. Nếu không câu trả lời này là hoàn hảo, không có lỗi nào được báo cáo bởi người khác. –

0

A nice công cụ CLI nhỏ đó đã giúp tôi rất nhiều với việc kiểm tra những gì tôi đã làm trong khi phát triển id3 công cụ là mid3v2 là phiên bản mutagen của id3v2. Nó đi kèm với thư viện mutagen Python. Nguồn gốc của công cụ nhỏ này đã cho tôi rất nhiều câu trả lời về cách sử dụng mutagen.

1

Possible solution

Bạn đang cố gắng nhúng hình ảnh vào nhiều tệp? Nếu vậy, tôi tìm thấy một kịch bản (xem liên kết) mà đi qua một tập hợp các thư mục, tìm kiếm hình ảnh, và nhúng chúng vào các tập tin MP3. Điều này rất hữu ích cho tôi khi tôi muốn thực sự có một cái gì đó để xem xét trong CoverFlow trên iPhone của tôi (bây giờ không còn tồn tại).

+0

Liên kết đã hết hạn. – raincrash

Các vấn đề liên quan