2016-06-18 3 views
2

Je voudrais pouvoir ajouter la couverture de l'album dans le fichier en utilisant Mutagène, mais quand je l'ajoute comme un fichier, il revient avec:Intégration pochette de l'album dans le fichier MP4 en utilisant Mutagène

File "D:\Download\pandora\renamingMETAEFF.pyw", line 71, in <module> 
    meta['covr'] = image 
File "C:\Users\AMD\AppData\Local\Programs\Python\Python35\lib\site-packages\mutagen\_file.py", line 67, in __setitem__ 
    self.tags[key] = value 
File "C:\Users\AMD\AppData\Local\Programs\Python\Python35\lib\site-packages\mutagen\mp4\__init__.py", line 357, in __setitem__ 
    self._render(key, value) 
File "C:\Users\AMD\AppData\Local\Programs\Python\Python35\lib\site-packages\mutagen\mp4\__init__.py", line 371, in _render 
    return render_func(self, key, value) 
File "C:\Users\AMD\AppData\Local\Programs\Python\Python35\lib\site-packages\mutagen\mp4\__init__.py", line 732, in __render_cover 
    b"data", struct.pack(">2I", imageformat, 0) + cover)) 

TypeError: can't concat bytes to str 

la pièce pertinente du code est la suivante:

from mutagen.mp4 import MP4 

image = jpgname + '.jpg' 
meta['\xa9nam'] = song 
meta['\xa9ART'] = artist 
meta['\xa9alb'] = album 
meta = MP4(songPath) 
meta['covr'] = image 
meta.save() 

le reste des métadonnées fonctionne parfaitement bien, mais la partie d'image rompt complètement l'ensemble du code.

Répondre

3

De l'mutagen docs:

MP4 méta 'covr' - Tableau de couverture, liste des objets MP4Cover (qui sont marqués strs).

MP4Cover ImageFormat - format de l'image (soit FORMAT_JPEG ou FORMAT_PNG)

from mutagen.mp4 import MP4, MP4Cover 

video = MP4("test.mp4") 

video["\xa9nam"] = "Test1" 
video["\xa9ART"] = "Test2" 
video["\xa9alb"] = "Test3" 

with open("cover.jpg", "rb") as f: 
    video["covr"] = [ 
     MP4Cover(f.read(), imageformat=MP4Cover.FORMAT_JPEG) 
    ] 

video.save() 
+0

échange la fonction de fichier pour la fonction ouverte rend le travail tout script merci –

+0

@ DanielRachfał Désolé, je voulais écrire ' ouvert'. Honnêtement, je ne sais pas pourquoi j'ai écrit 'fichier' qui ne fonctionne que dans python 2. En tout cas je suis heureux d'avoir pu aider. S'il vous plaît envisager d'accepter la réponse. –

+0

Pouvez-vous faire ce travail avec un fichier .mp3 à la place? Comment? –