예제 #1
0
파일: lastid.py 프로젝트: mdecker/beets
    def track_distance(self, item, info):
        last_data = match(item.path)
        if not last_data:
            # Match failed.
            return 0.0, 0.0

        dist, dist_max = 0.0, 0.0

        # Track title distance.
        dist += autotag.string_dist(last_data['title'],
                                 info['title']) \
                * autotag.TRACK_TITLE_WEIGHT
        dist_max += autotag.TRACK_TITLE_WEIGHT

        # MusicBrainz track ID.
        if last_data['track_mbid']:
            # log.debug('Last track ID match: %s/%s' %
            #           (last_data['track_mbid'], track_data['id']))
            if last_data['track_mbid'] != track_data['id']:
                dist += autotag.TRACK_ID_WEIGHT
            dist_max += autotag.TRACK_ID_WEIGHT

        # log.debug('Last data: %s; distance: %f' %
        #           (str(last_data), dist/dist_max if dist_max > 0.0 else 0.0))

        return dist * DISTANCE_SCALE, dist_max * DISTANCE_SCALE
예제 #2
0
파일: lastid.py 프로젝트: mdecker/beets
    def track_distance(self, item, info):
        last_data = match(item.path)
        if not last_data:
            # Match failed.
            return 0.0, 0.0

        dist, dist_max = 0.0, 0.0

        # Track title distance.
        dist += autotag.string_dist(last_data['title'],
                                 info['title']) \
                * autotag.TRACK_TITLE_WEIGHT
        dist_max += autotag.TRACK_TITLE_WEIGHT
        
        # MusicBrainz track ID.
        if last_data['track_mbid']:
            # log.debug('Last track ID match: %s/%s' %
            #           (last_data['track_mbid'], track_data['id']))
            if last_data['track_mbid'] != track_data['id']:
                dist += autotag.TRACK_ID_WEIGHT
            dist_max += autotag.TRACK_ID_WEIGHT

        # log.debug('Last data: %s; distance: %f' %
        #           (str(last_data), dist/dist_max if dist_max > 0.0 else 0.0))

        return dist * DISTANCE_SCALE, dist_max * DISTANCE_SCALE
예제 #3
0
    def album_distance(self, items, info):
        last_artist, last_artist_id = get_cur_artist(items)

        # Compare artist to MusicBrainz metadata.
        dist, dist_max = 0.0, 0.0
        if last_artist:
            dist += autotag.string_dist(last_artist, info['artist']) \
                    * autotag.ARTIST_WEIGHT
            dist_max += autotag.ARTIST_WEIGHT

        log.debug('Last artist (%s/%s) distance: %f' %
                  (last_artist, info['artist'], dist/dist_max))

        #fixme: artist MBID currently ignored (as in vanilla tagger)
        return dist, dist_max
예제 #4
0
파일: lastid.py 프로젝트: mdecker/beets
    def album_distance(self, items, info):
        last_artist, last_artist_id = get_cur_artist(items)

        # Compare artist to MusicBrainz metadata.
        dist, dist_max = 0.0, 0.0
        if last_artist:
            dist += autotag.string_dist(last_artist, info['artist']) \
                    * autotag.ARTIST_WEIGHT
            dist_max += autotag.ARTIST_WEIGHT

        log.debug('Last artist (%s/%s) distance: %f' %
                  (last_artist, info['artist'],
                   dist / dist_max if dist_max > 0.0 else 0.0))

        #fixme: artist MBID currently ignored (as in vanilla tagger)
        return dist, dist_max
예제 #5
0
 def test_solo_pattern(self):
     # Just make sure these don't crash.
     autotag.string_dist('The ', '')
     autotag.string_dist('(EP)', '(EP)')
     autotag.string_dist(', An', '')
예제 #6
0
 def test_postfix_an(self):    
     dist = autotag.string_dist('An Album Title', 'Album Title, An')
     self.assertEqual(dist, 0.0)
예제 #7
0
 def test_postfix_the(self):    
     dist = autotag.string_dist('The Song Title', 'Song Title, The')
     self.assertEqual(dist, 0.0)
예제 #8
0
 def test_ep_label_has_zero_weight(self):    
     dist = autotag.string_dist('My Song (EP)', 'My Song')
     self.assertEqual(dist, 0.0)
예제 #9
0
 def test_parens_have_lower_weight(self):    
     dist1 = autotag.string_dist('One .Two.', 'One')
     dist2 = autotag.string_dist('One (Two)', 'One')
     self.assert_(dist2 < dist1)
예제 #10
0
 def test_case_ignored(self):
     dist = autotag.string_dist('Some String', 'sOME sTring')
     self.assertEqual(dist, 0.0)
예제 #11
0
 def test_different_strings(self):
     dist = autotag.string_dist('Some String', 'Totally Different')
     self.assertNotEqual(dist, 0.0)
예제 #12
0
 def test_featured_has_lower_weight(self):    
     dist1 = autotag.string_dist('My Song blah Someone', 'My Song')
     dist2 = autotag.string_dist('My Song feat Someone', 'My Song')
     self.assert_(dist2 < dist1)
예제 #13
0
 def test_ep_label_has_zero_weight(self):    
     dist = autotag.string_dist('My Song (EP)', 'My Song')
     self.assertEqual(dist, 0.0)
예제 #14
0
 def test_brackets_have_lower_weight(self):    
     dist1 = autotag.string_dist('One .Two.', 'One')
     dist2 = autotag.string_dist('One [Two]', 'One')
     self.assert_(dist2 < dist1)
예제 #15
0
 def test_parens_have_lower_weight(self):    
     dist1 = autotag.string_dist('One .Two.', 'One')
     dist2 = autotag.string_dist('One (Two)', 'One')
     self.assert_(dist2 < dist1)
예제 #16
0
 def test_leading_the_has_lower_weight(self):    
     dist1 = autotag.string_dist('XXX Band Name', 'Band Name')
     dist2 = autotag.string_dist('The Band Name', 'Band Name')
     self.assert_(dist2 < dist1)
예제 #17
0
 def test_case_ignored(self):
     dist = autotag.string_dist('Some String', 'sOME sTring')
     self.assertEqual(dist, 0.0)
예제 #18
0
 def test_punctuation_ignored(self):
     dist = autotag.string_dist('Some String', 'Some.String!')
     self.assertEqual(dist, 0.0)
예제 #19
0
 def test_different_strings(self):
     dist = autotag.string_dist('Some String', 'Totally Different')
     self.assertNotEqual(dist, 0.0)
예제 #20
0
 def test_postfix_the(self):    
     dist = autotag.string_dist('The Song Title', 'Song Title, The')
     self.assertEqual(dist, 0.0)
예제 #21
0
 def test_punctuation_ignored(self):
     dist = autotag.string_dist('Some String', 'Some.String!')
     self.assertEqual(dist, 0.0)
예제 #22
0
 def test_postfix_a(self):    
     dist = autotag.string_dist('A Song Title', 'Song Title, A')
     self.assertEqual(dist, 0.0)
예제 #23
0
 def test_leading_the_has_lower_weight(self):    
     dist1 = autotag.string_dist('XXX Band Name', 'Band Name')
     dist2 = autotag.string_dist('The Band Name', 'Band Name')
     self.assert_(dist2 < dist1)
예제 #24
0
 def test_postfix_an(self):    
     dist = autotag.string_dist('An Album Title', 'Album Title, An')
     self.assertEqual(dist, 0.0)
예제 #25
0
 def test_brackets_have_lower_weight(self):    
     dist1 = autotag.string_dist('One .Two.', 'One')
     dist2 = autotag.string_dist('One [Two]', 'One')
     self.assert_(dist2 < dist1)
예제 #26
0
 def test_empty_strings(self):
     dist = autotag.string_dist('', '')
     self.assertEqual(dist, 0.0)
예제 #27
0
 def test_featured_has_lower_weight(self):    
     dist1 = autotag.string_dist('My Song blah Someone', 'My Song')
     dist2 = autotag.string_dist('My Song feat Someone', 'My Song')
     self.assert_(dist2 < dist1)
예제 #28
0
 def test_solo_pattern(self):
     # Just make sure these don't crash.
     autotag.string_dist('The ', '')
     autotag.string_dist('(EP)', '(EP)')
     autotag.string_dist(', An', '')
예제 #29
0
 def test_postfix_a(self):    
     dist = autotag.string_dist('A Song Title', 'Song Title, A')
     self.assertEqual(dist, 0.0)
예제 #30
0
 def test_heuristic_does_not_harm_distance(self):
     dist = autotag.string_dist('Untitled', '[Untitled]')
     self.assertEqual(dist, 0.0)
예제 #31
0
 def test_empty_strings(self):
     dist = autotag.string_dist('', '')
     self.assertEqual(dist, 0.0)
예제 #32
0
 def test_accented_characters(self):
     dist = autotag.string_dist(u'\xe9\xe1\xf1', u'ean')
     self.assertEqual(dist, 0.0)
예제 #33
0
 def test_heuristic_does_not_harm_distance(self):
     dist = autotag.string_dist('Untitled', '[Untitled]')
     self.assertEqual(dist, 0.0)
예제 #34
0
 def test_equal_strings(self):
     dist = autotag.string_dist('Some String', 'Some String')
     self.assertEqual(dist, 0.0)
예제 #35
0
 def test_ampersand_expansion(self):
     dist = autotag.string_dist('And', '&')
     self.assertEqual(dist, 0.0)
예제 #36
0
 def test_equal_strings(self):
     dist = autotag.string_dist('Some String', 'Some String')
     self.assertEqual(dist, 0.0)