def test_recording(self): parsed_recording = parse_recording(self.json_doc) release = parsed_recording['releases'][0] artist_credit = parsed_recording['artist-credit'][0] self.assertEqual(parsed_recording['id'], '017830c1-d1cf-46f3-8801-aaaa0a930223') self.assertEqual(parsed_recording['length'], 225000) self.assertEqual(parsed_recording['title'], 'Nina') self.assertEqual(release['media'], [{ 'track': {}, 'format': 'CD', 'track-count': 12 }]) self.assertEqual(release['title'], 'x') self.assertEqual(release['id'], 'a2b25883-306f-4a53-809a-a234737c209d') self.assertEqual(release['release-group'], {'id': 'c24e5416-cd2e-4cff-851b-5faa78db98a2'}) self.assertEqual(release['country'], 'XE') self.assertEqual( artist_credit['artist'], { 'sort-name': 'Ed Sheeran', 'name': 'Ed Sheeran', 'id': 'b8a7c51f-362c-4dcb-a259-bc6e0095f0a6' }) self.assertEqual(artist_credit['name'], 'Ed Sheeran')
def _on_lookup_finished(self, next_func, file, document, http, error): doc = {} if error: mparms = { 'error': http.errorString(), 'body': document, 'filename': file.filename, } log.error( "AcoustID: Lookup network error for '%(filename)s': %(error)r, %(body)s" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup network error for '%(filename)s'!"), mparms, echo=None) else: try: recording_list = doc['recordings'] = [] status = document['status'] if status == 'ok': results = document.get('results') or [] for result in results: recordings = result.get('recordings') or [] max_sources = max( [r.get('sources', 1) for r in recordings] + [1]) result_score = get_score(result) for recording in recordings: parsed_recording = parse_recording(recording) if parsed_recording is not None: # Calculate a score based on result score and sources for this # recording relative to other recordings in this result score = recording.get('sources', 1) / max_sources * 100 parsed_recording[ 'score'] = score * result_score parsed_recording['acoustid'] = result['id'] recording_list.append(parsed_recording) log.debug("AcoustID: Lookup successful for '%s'", file.filename) else: mparms = { 'error': document['error']['message'], 'filename': file.filename } log.error( "AcoustID: Lookup error for '%(filename)s': %(error)r" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup failed for '%(filename)s'!"), mparms, echo=None) except (AttributeError, KeyError, TypeError) as e: log.error("AcoustID: Error reading response", exc_info=True) error = e next_func(doc, http, error)
def _on_lookup_finished(self, next_func, file, document, http, error): doc = {} if error: mparms = { 'error': http.errorString(), 'body': document, 'filename': file.filename, } log.error( "AcoustID: Lookup network error for '%(filename)s': %(error)r, %(body)s" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup network error for '%(filename)s'!"), mparms, echo=None) else: try: recording_list = doc['recordings'] = [] status = document['status'] if status == 'ok': results = document['results'] if results: result = results[0] file.metadata['acoustid_id'] = result['id'] if 'recordings' in result and result['recordings']: max_sources = max([ r.get('sources', 1) for r in result['recordings'] ] + [1]) for recording in result['recordings']: parsed_recording = parse_recording(recording) if parsed_recording is not None: parsed_recording['score'] = recording.get( 'sources', 1) / max_sources * 100 recording_list.append(parsed_recording) log.debug("AcoustID: Lookup successful for '%s'", file.filename) else: mparms = { 'error': document['error']['message'], 'filename': file.filename } log.error( "AcoustID: Lookup error for '%(filename)s': %(error)r" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup failed for '%(filename)s'!"), mparms, echo=None) except (AttributeError, KeyError, TypeError) as e: log.error("AcoustID: Error reading response", exc_info=True) error = e next_func(doc, http, error)
def _on_lookup_finished(self, next_func, file, document, http, error): doc = {} if error: mparms = { 'error': http.errorString(), 'body': document, 'filename': file.filename, } log.error( "AcoustID: Lookup network error for '%(filename)s': %(error)r, %(body)s" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup network error for '%(filename)s'!"), mparms, echo=None ) else: try: recording_list = doc['recordings'] = [] status = document['status'] if status == 'ok': results = document['results'] if results: result = results[0] file.metadata['acoustid_id'] = result['id'] if 'recordings' in result and result['recordings']: max_sources = max([r.get('sources', 1) for r in result['recordings']] + [1]) for recording in result['recordings']: parsed_recording = parse_recording(recording) if parsed_recording is not None: parsed_recording['score'] = recording.get('sources', 1) / max_sources * 100 recording_list.append(parsed_recording) log.debug("AcoustID: Lookup successful for '%s'", file.filename) else: mparms = { 'error': document['error']['message'], 'filename': file.filename } log.error( "AcoustID: Lookup error for '%(filename)s': %(error)r" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup failed for '%(filename)s'!"), mparms, echo=None ) except (AttributeError, KeyError, TypeError) as e: log.error("AcoustID: Error reading response", exc_info=True) error = e next_func(doc, http, error)
def test_recording(self): parsed_recording = parse_recording(self.json_doc) release = parsed_recording['releases'][0] artist_credit = parsed_recording['artist-credit'][0] self.assertEqual(parsed_recording['id'], '017830c1-d1cf-46f3-8801-aaaa0a930223') self.assertEqual(parsed_recording['length'], 225000) self.assertEqual(parsed_recording['title'], 'Nina') self.assertEqual(release['media'], [{'track': {}, 'format': 'CD', 'track-count': 12}]) self.assertEqual(release['title'], 'x') self.assertEqual(release['id'], 'a2b25883-306f-4a53-809a-a234737c209d') self.assertEqual(release['release-group'], {'id': 'c24e5416-cd2e-4cff-851b-5faa78db98a2'}) self.assertEqual(release['country'], 'XE') self.assertEqual(artist_credit['artist'], {'sort-name': 'Ed Sheeran', 'name': 'Ed Sheeran', 'id': 'b8a7c51f-362c-4dcb-a259-bc6e0095f0a6'}) self.assertEqual(artist_credit['name'], 'Ed Sheeran')
def _on_lookup_finished(self, next_func, file, document, http, error): doc = {} if error: mparms = { 'error': http.errorString(), 'filename': file.filename, } log.error( "AcoustID: Lookup network error for '%(filename)s': %(error)r" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup network error for '%(filename)s'!"), mparms, echo=None ) else: recording_list = doc['recordings'] = [] status = document['status'] if status == 'ok': results = document['results'] if results: result = results[0] file.metadata['acoustid_id'] = result['id'] if 'recordings' in result: for recording in result['recordings']: parsed_recording = parse_recording(recording) if parsed_recording is not None: recording_list.append(parsed_recording) log.debug("AcoustID: Lookup successful for '%s'", file.filename) else: mparms = { 'error': document['error']['message'], 'filename': file.filename } log.error( "AcoustID: Lookup error for '%(filename)s': %(error)r" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup failed for '%(filename)s'!"), mparms, echo=None ) next_func(doc, http, error)
def _on_lookup_finished(self, next_func, file, document, http, error): doc = {} if error: mparms = { 'error': http.errorString(), 'filename': file.filename, } log.error( "AcoustID: Lookup network error for '%(filename)s': %(error)r" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup network error for '%(filename)s'!"), mparms, echo=None ) else: recording_list = doc['recordings'] = [] status = document['status'] if status == 'ok': results = document['results'] if results: result = results[0] file.metadata['acoustid_id'] = result['id'] if 'recordings' in result: for recording in result['recordings']: parsed_recording = parse_recording(recording) if parsed_recording is not None: recording_list.append(parsed_recording) log.debug("AcoustID: Lookup successful for '%s'", file.filename) else: mparms = { 'error': document['error']['message'], 'filename': file.filename } log.error( "AcoustID: Lookup error for '%(filename)s': %(error)r" % mparms) self.tagger.window.set_statusbar_message( N_("AcoustID lookup failed for '%(filename)s'!"), mparms, echo=None ) next_func(doc, http, error)
def test_recording(self): parsed_recording = parse_recording(self.json_doc) release = parsed_recording['releases'][0] artist_credit = parsed_recording['artist-credit'][0] self.assertEqual(parsed_recording['id'], '017830c1-d1cf-46f3-8801-aaaa0a930223') self.assertEqual(parsed_recording['length'], 225000) self.assertEqual(parsed_recording['title'], 'Nina') self.assertEqual(release['media'], [{ 'format': 'CD', 'track-count': 12, 'position': 1, 'track': [{ 'position': 5, 'id': '16affcc3-9f34-48e5-88dc-68378c4cc208', 'number': 5 }] }]) self.assertEqual(release['title'], 'x') self.assertEqual(release['id'], 'a2b25883-306f-4a53-809a-a234737c209d') self.assertEqual( release['release-group'], { 'id': 'c24e5416-cd2e-4cff-851b-5faa78db98a2', 'primary-type': 'Album', 'secondary-types': ['Compilation'] }) self.assertEqual(release['country'], 'XE') self.assertEqual(release['date'], { 'month': 6, 'day': 23, 'year': 2014 }) self.assertEqual(release['medium-count'], 1) self.assertEqual(release['track-count'], 12) self.assertEqual( artist_credit['artist'], { 'sort-name': 'Ed Sheeran', 'name': 'Ed Sheeran', 'id': 'b8a7c51f-362c-4dcb-a259-bc6e0095f0a6' }) self.assertEqual(artist_credit['name'], 'Ed Sheeran')
def test_recording(self): m = Metadata() t = Track("1") parsed_recording = parse_recording(self.json_doc) recording_to_metadata(parsed_recording, m, t) self.assertEqual(m, {})
def test_recording(self): m = Metadata() t = Track("1") parsed_recording = parse_recording(self.json_doc) recording_to_metadata(parsed_recording, m, t) self.assertEqual(m, {})