mirror of
https://github.com/fergalmoran/picard.git
synced 2026-01-06 16:44:06 +00:00
Move test for save_images_to_tags option to metadata.images_to_be_saved_to_tags
This commit is contained in:
@@ -119,7 +119,7 @@ class APEv2File(File):
|
||||
tags = mutagen.apev2.APEv2()
|
||||
if config.setting["clear_existing_tags"]:
|
||||
tags.clear()
|
||||
elif config.setting['save_images_to_tags'] and metadata.images:
|
||||
elif metadata.images_to_be_saved_to_tags:
|
||||
for name, value in tags.items():
|
||||
if name.lower().startswith('cover art') and value.kind == mutagen.apev2.BINARY:
|
||||
del tags[name]
|
||||
@@ -156,13 +156,12 @@ class APEv2File(File):
|
||||
temp.setdefault(name, []).append(value)
|
||||
for name, values in temp.items():
|
||||
tags[str(name)] = values
|
||||
if config.setting['save_images_to_tags']:
|
||||
for image in metadata.images_to_be_saved_to_tags:
|
||||
cover_filename = 'Cover Art (Front)'
|
||||
cover_filename += image.extension
|
||||
tags['Cover Art (Front)'] = mutagen.apev2.APEValue(cover_filename + '\0' + image.data, mutagen.apev2.BINARY)
|
||||
break # can't save more than one item with the same name
|
||||
# (mp3tags does this, but it's against the specs)
|
||||
for image in metadata.images_to_be_saved_to_tags:
|
||||
cover_filename = 'Cover Art (Front)'
|
||||
cover_filename += image.extension
|
||||
tags['Cover Art (Front)'] = mutagen.apev2.APEValue(cover_filename + '\0' + image.data, mutagen.apev2.BINARY)
|
||||
break # can't save more than one item with the same name
|
||||
# (mp3tags does this, but it's against the specs)
|
||||
tags.save(encode_filename(filename))
|
||||
|
||||
|
||||
|
||||
@@ -175,15 +175,14 @@ class ASFFile(File):
|
||||
|
||||
if config.setting['clear_existing_tags']:
|
||||
file.tags.clear()
|
||||
if config.setting['save_images_to_tags']:
|
||||
cover = []
|
||||
for image in metadata.images_to_be_saved_to_tags:
|
||||
tag_data = pack_image(image.mimetype, image.data,
|
||||
image_type_as_id3_num(image.maintype),
|
||||
image.comment)
|
||||
cover.append(ASFByteArrayAttribute(tag_data))
|
||||
if cover:
|
||||
file.tags['WM/Picture'] = cover
|
||||
cover = []
|
||||
for image in metadata.images_to_be_saved_to_tags:
|
||||
tag_data = pack_image(image.mimetype, image.data,
|
||||
image_type_as_id3_num(image.maintype),
|
||||
image.comment)
|
||||
cover.append(ASFByteArrayAttribute(tag_data))
|
||||
if cover:
|
||||
file.tags['WM/Picture'] = cover
|
||||
|
||||
for name, values in metadata.rawitems():
|
||||
if name.startswith('lyrics:'):
|
||||
|
||||
@@ -297,8 +297,7 @@ class ID3File(File):
|
||||
|
||||
if config.setting['clear_existing_tags']:
|
||||
tags.clear()
|
||||
if (config.setting['save_images_to_tags']
|
||||
and metadata.images_to_be_saved_to_tags):
|
||||
if metadata.images_to_be_saved_to_tags:
|
||||
tags.delall('APIC')
|
||||
|
||||
if config.setting['write_id3v1']:
|
||||
@@ -321,25 +320,24 @@ class ID3File(File):
|
||||
text = metadata['discnumber']
|
||||
tags.add(id3.TPOS(encoding=0, text=text))
|
||||
|
||||
if config.setting['save_images_to_tags']:
|
||||
# This is necessary because mutagens HashKey for APIC frames only
|
||||
# includes the FrameID (APIC) and description - it's basically
|
||||
# impossible to save two images, even of different types, without
|
||||
# any description.
|
||||
counters = defaultdict(lambda: 0)
|
||||
for image in metadata.images_to_be_saved_to_tags:
|
||||
desc = desctag = image.comment
|
||||
if counters[desc] > 0:
|
||||
if desc:
|
||||
desctag = "%s (%i)" % (desc, counters[desc])
|
||||
else:
|
||||
desctag = "(%i)" % counters[desc]
|
||||
counters[desc] += 1
|
||||
tags.add(id3.APIC(encoding=0,
|
||||
mime=image.mimetype,
|
||||
type=image_type_as_id3_num(image.maintype),
|
||||
desc=desctag,
|
||||
data=image.data))
|
||||
# This is necessary because mutagens HashKey for APIC frames only
|
||||
# includes the FrameID (APIC) and description - it's basically
|
||||
# impossible to save two images, even of different types, without
|
||||
# any description.
|
||||
counters = defaultdict(lambda: 0)
|
||||
for image in metadata.images_to_be_saved_to_tags:
|
||||
desc = desctag = image.comment
|
||||
if counters[desc] > 0:
|
||||
if desc:
|
||||
desctag = "%s (%i)" % (desc, counters[desc])
|
||||
else:
|
||||
desctag = "(%i)" % counters[desc]
|
||||
counters[desc] += 1
|
||||
tags.add(id3.APIC(encoding=0,
|
||||
mime=image.mimetype,
|
||||
type=image_type_as_id3_num(image.maintype),
|
||||
desc=desctag,
|
||||
data=image.data))
|
||||
|
||||
tmcl = mutagen.id3.TMCL(encoding=encoding, people=[])
|
||||
tipl = mutagen.id3.TIPL(encoding=encoding, people=[])
|
||||
|
||||
@@ -200,15 +200,14 @@ class MP4File(File):
|
||||
else:
|
||||
file.tags["disk"] = [(int(metadata["discnumber"]), 0)]
|
||||
|
||||
if config.setting['save_images_to_tags']:
|
||||
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:
|
||||
file.tags["covr"] = covr
|
||||
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:
|
||||
file.tags["covr"] = covr
|
||||
|
||||
file.save()
|
||||
|
||||
|
||||
@@ -154,15 +154,14 @@ class VCommentFile(File):
|
||||
def _save(self, filename, metadata):
|
||||
"""Save metadata to the file."""
|
||||
log.debug("Saving file %r", filename)
|
||||
is_flac = self._File == mutagen.flac.FLAC
|
||||
file = self._File(encode_filename(filename))
|
||||
if file.tags is None:
|
||||
file.add_tags()
|
||||
if config.setting["clear_existing_tags"]:
|
||||
file.tags.clear()
|
||||
if self._File == mutagen.flac.FLAC and (
|
||||
config.setting["clear_existing_tags"] or
|
||||
(config.setting['save_images_to_tags'] and
|
||||
metadata.images_to_be_saved_to_tags)):
|
||||
if (is_flac and (config.setting["clear_existing_tags"] or
|
||||
metadata.images_to_be_saved_to_tags)):
|
||||
file.clear_pictures()
|
||||
tags = {}
|
||||
for name, value in metadata.items():
|
||||
@@ -198,21 +197,21 @@ class VCommentFile(File):
|
||||
if "totaldiscs" in metadata:
|
||||
tags.setdefault(u"DISCTOTAL", []).append(metadata["totaldiscs"])
|
||||
|
||||
if config.setting['save_images_to_tags']:
|
||||
for image in metadata.images_to_be_saved_to_tags:
|
||||
picture = mutagen.flac.Picture()
|
||||
picture.data = image.data
|
||||
picture.mime = image.mimetype
|
||||
picture.desc = image.comment
|
||||
picture.type = image_type_as_id3_num(image.maintype)
|
||||
if self._File == mutagen.flac.FLAC:
|
||||
file.add_picture(picture)
|
||||
else:
|
||||
tags.setdefault(u"METADATA_BLOCK_PICTURE", []).append(
|
||||
base64.standard_b64encode(picture.write()))
|
||||
for image in metadata.images_to_be_saved_to_tags:
|
||||
picture = mutagen.flac.Picture()
|
||||
picture.data = image.data
|
||||
picture.mime = image.mimetype
|
||||
picture.desc = image.comment
|
||||
picture.type = image_type_as_id3_num(image.maintype)
|
||||
if self._File == mutagen.flac.FLAC:
|
||||
file.add_picture(picture)
|
||||
else:
|
||||
tags.setdefault(u"METADATA_BLOCK_PICTURE", []).append(
|
||||
base64.standard_b64encode(picture.write()))
|
||||
|
||||
file.tags.update(tags)
|
||||
kwargs = {}
|
||||
if self._File == mutagen.flac.FLAC and config.setting["remove_id3_from_flac"]:
|
||||
if is_flac and config.setting["remove_id3_from_flac"]:
|
||||
kwargs["deleteid3"] = True
|
||||
try:
|
||||
file.save(**kwargs)
|
||||
|
||||
@@ -53,6 +53,8 @@ class Metadata(dict):
|
||||
|
||||
@property
|
||||
def images_to_be_saved_to_tags(self):
|
||||
if not config.setting["save_images_to_tags"]:
|
||||
return ()
|
||||
if not config.setting["save_only_front_images_to_tags"]:
|
||||
return self.images
|
||||
return [img for img in self.images if img.is_front_image()]
|
||||
|
||||
Reference in New Issue
Block a user