Beispiel #1
0
 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')
Beispiel #2
0
    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)
Beispiel #3
0
    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)
Beispiel #4
0
    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')
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #8
0
 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')
Beispiel #9
0
 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, {})