Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_covr_blank_format(self):
data = Atom.render(b"data", b"\x00\x00\x00\x00" + b"\x00" * 4 + b"whee")
covr = Atom.render(b"covr", data)
tags = self.wrap_ilst(covr)
self.failUnlessEqual(MP4Cover.FORMAT_JPEG, tags[b"covr"][0].imageformat)
def test_cover_png(self):
self.set_key('covr', [
MP4Cover(b'woooo', MP4Cover.FORMAT_PNG),
MP4Cover(b'hoooo', MP4Cover.FORMAT_JPEG),
])
def __parse_cover(self, atom, data):
self[atom.name] = []
pos = 0
while pos < atom.length - 8:
length, name, imageformat = struct.unpack(">I4sI",
data[pos:pos+12])
if name != b"data":
if name == b"name":
pos += length
continue
raise MP4MetadataError(
"unexpected atom %r inside 'covr'" % name)
if imageformat not in (MP4Cover.FORMAT_JPEG, MP4Cover.FORMAT_PNG):
imageformat = MP4Cover.FORMAT_JPEG
cover = MP4Cover(data[pos+16:pos+length], imageformat)
self[atom.name].append(cover)
pos += length
def pic_to_bin(image):
data = image[util.DATA]
mime = imghdr.what(None, data)
if mime == 'png':
format = MP4Cover.FORMAT_PNG
elif mime == 'jpeg':
format = MP4Cover.FORMAT_JPEG
else:
return
return MP4Cover(data, format)
def __fixed_render_cover(self, key, value):
atom_data = []
for cover in value:
try:
imageformat = cover.imageformat
except AttributeError:
imageformat = MP4Cover.FORMAT_JPEG
atom_data.append(Atom.render(
b"data", struct.pack(">2I", imageformat, 0) + bytes(cover)))
return Atom.render(_key2name(key), b"".join(atom_data))
tags["trkn"] = [(int(metadata["tracknumber"]),
int(metadata["totaltracks"]))]
else:
tags["trkn"] = [(int(metadata["tracknumber"]), 0)]
if "discnumber" in metadata:
if "totaldiscs" in metadata:
tags["disk"] = [(int(metadata["discnumber"]),
int(metadata["totaldiscs"]))]
else:
tags["disk"] = [(int(metadata["discnumber"]), 0)]
covr = []
for image in metadata.images.to_be_saved_to_tags():
if image.mimetype == "image/jpeg":
covr.append(MP4Cover(image.data, MP4Cover.FORMAT_JPEG))
elif image.mimetype == "image/png":
covr.append(MP4Cover(image.data, MP4Cover.FORMAT_PNG))
if covr:
tags["covr"] = covr
self._remove_deleted_tags(metadata, tags)
file.save()
def serialize(self, image):
if image.mime_type == 'image/png':
kind = mutagen.mp4.MP4Cover.FORMAT_PNG
elif image.mime_type == 'image/jpeg':
kind = mutagen.mp4.MP4Cover.FORMAT_JPEG
else:
raise ValueError('MP4 files only supports PNG and JPEG images')
return mutagen.mp4.MP4Cover(image.data, kind)
def serialize(self, image):
if image.mime_type == 'image/png':
kind = mutagen.mp4.MP4Cover.FORMAT_PNG
elif image.mime_type == 'image/jpeg':
kind = mutagen.mp4.MP4Cover.FORMAT_JPEG
else:
raise ValueError('MP4 files only supports PNG and JPEG images')
return mutagen.mp4.MP4Cover(image.data, kind)