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_cmd_performer_custom_join(self):
context = Metadata()
context['performer:guitar'] = 'Foo1'
context['performer:rhythm-guitar'] = 'Foo2'
context['performer:drums'] = 'Drummer'
result = self.parser.eval("$performer(guitar, / )", context=context)
performers = result.split(' / ')
self.assertIn('Foo1', performers)
self.assertIn('Foo2', performers)
self.assertEqual(2, len(performers))
def test_preserve_unchanged_tags(self):
metadata = Metadata(self.tags)
save_metadata(self.filename, metadata)
loaded_metadata = save_and_load_metadata(self.filename, Metadata())
for (key, value) in self.tags.items():
self.assertEqual(loaded_metadata[key], value, '%s: %r != %r' % (key, loaded_metadata[key], value))
def test_cmd_copymerge_nosource(self):
context = Metadata()
target = ["tag1", "tag2"]
context["target"] = target
self._eval_and_check_copymerge(context, target)
def test_comment_delete(self):
metadata = Metadata()
for (key, value) in self.tags.items():
metadata[key] = value
metadata['comment:bar'] = 'Foo'
original_metadata = save_and_load_metadata(self.filename, metadata)
metadata.delete('comment:bar')
new_metadata = save_and_load_metadata(self.filename, metadata)
self.assertIn('comment:foo', original_metadata)
self.assertIn('comment:bar', original_metadata)
self.assertIn('comment:foo', new_metadata)
self.assertNotIn('comment:bar', new_metadata)
def test_compare_tracknumber_difference(self):
m1 = Metadata()
m1["tracknumber"] = "1"
m2 = Metadata()
m2["tracknumber"] = "2"
self.assertEqual(m1.compare(m2), 0)
def _load(self, filename):
log.debug("Loading file %r", filename)
self.__casemap = {}
file = MP4(encode_filename(filename))
tags = file.tags or {}
metadata = Metadata()
for name, values in tags.items():
name_lower = name.lower()
if name in self.__text_tags:
for value in values:
metadata.add(self.__text_tags[name], value)
elif name in self.__bool_tags:
metadata.add(self.__bool_tags[name], values and '1' or '0')
elif name in self.__int_tags:
for value in values:
metadata.add(self.__int_tags[name], value)
elif name in self.__freeform_tags:
tag_name = self.__freeform_tags[name]
_add_text_values_to_metadata(metadata, tag_name, values)
elif name_lower in self.__freeform_tags_ci:
tag_name = self.__freeform_tags_ci[name_lower]
self.__casemap[tag_name] = name
def _load_tracks(self, release_node, album):
# this happens after the album metadata processor in picard
self.tracks = []
for medium_node in release_node['media']:
mm = Metadata()
mm.copy(album._new_metadata) # noqa
medium_to_metadata(medium_node, mm)
for track_node in medium_node['tracks']:
track = Track(track_node['recording']['id'], album)
self.tracks.append(track)
# Get track metadata
tm = track.metadata
tm.copy(mm)
track_to_metadata(track_node, track)
track._customize_metadata() # noqa
def _script_to_filename(self, naming_format, file_metadata, settings=None):
if settings is None:
settings = config.setting
metadata = Metadata()
if settings["clear_existing_tags"]:
metadata.copy(file_metadata)
else:
metadata.copy(self.orig_metadata)
metadata.update(file_metadata)
return script_to_filename(naming_format, metadata, file=self, settings=settings)
def save(self):
self.set_pending()
metadata = Metadata()
metadata.copy(self.metadata)
thread.run_task(
partial(self._save_and_rename, self.filename, metadata),
self._saving_finished,
priority=2,
thread_pool=self.tagger.save_thread_pool)
def parse_artists(self, artists):
for node in artists:
artist = Metadata()
artist_to_metadata(node, artist)
artist['score'] = node['score']
self.search_results.append(artist)