2016-11-09 25 views
0

Я работаю над скриптом python, который загружает музыкальный файл с сервера, а затем добавляет к нему изображение альбома с URL-адреса, для этого я использую библиотеку python eyeD3, свой оригинальный код ниже.Использование eyeD3 для встраивания обложек альбомов из URL

import eyed3 

mySong = eyed3.load('C:\Users\PC\Music\Test.mp3') 
mySong.tag.album_artist = u'Artist-Name' 
mySong.tag.images.remove(u'') 
mySong.tag.images.set(3, 'None', 'https://upload.wikimedia.org/wikipedia/en/6/60/Recovery_Album_Cover.jpg') 
mySong.tag.save() 

Я пробовал разные версии этой команды, и он либо не возвращает никаких ошибок, но не встраивать изображение как приведенный выше код делает или возвращает сообщение об ошибке «ValueError: img_url не должен быть ни когда нет данных изображения ».

Любой человек имел какой-либо успех в этой части eyeD3, прежде чем моя другая альтернатива - загрузить изображение прямо из хранилища URL-адресов в папке и вставить оттуда, а затем удалить, очевидно, мое другое решение будет лучше.

ответ

0

Вы можете использовать urllib2, чтобы получить данные изображения изображения из URL, а затем использовать его в eyed3

import urllib2 
response = urllib2.urlopen(your image url) 
imagedata=response.read() 

import eyed3 
file = eyed3.load("song.mp3") 
file.tag.images.set(3, imagedata , "image/jpeg" ,u"Discription") 
file.tag.save() 
0

Использование

mySong.tag.images.set(type_=3, img_data=None, mime_type=None, description=u"you can put a description here", img_url=u"https://upload.wikimedia.org/wikipedia/en/6/60/Recovery_Album_Cover.jpg") 

Объяснение:

mySong.tag.images.set является вызовом функции set класса ImagesAccessor, определенного в src/eyed3/id3/tag.py.

подпись выглядит следующим образом:

def set(self, type_, img_data, mime_type, description=u"", img_url=None): 
    """Add an image of ``type_`` (a type constant from ImageFrame). 
    The ``img_data`` is either bytes or ``None``. In the latter case 
    ``img_url`` MUST be the URL to the image. In this case ``mime_type`` 
    is ignored and "-->" is used to signal this as a link and not data 
    (per the ID3 spec)."""