def individual_subitem_matches(self, subitem, data): musicbrainzngs.set_useragent('geordi', 'discogs-subitem-matches', 'http://geordi.musicbrainz.org') (discogs_type, discogs_id) = re.split('-', subitem, 1) if discogs_type == 'master': try: url_data = musicbrainzngs.browse_urls( resource='http://www.discogs.com/master/%s' % discogs_id, includes=['release-group-rels']) mbids = [release_group['release-group']['id'] for release_group in url_data['url']['release_group-relation-list']] return {'release-group': mbids} except: return {'unmatch': []} elif discogs_type in ['artist', 'label'] and data.get('name', False): names = data.get('name', []) mbids = [] for name in names: try: url_data = musicbrainzngs.browse_urls( resource='http://www.discogs.com/%s/%s' % (discogs_type, urllib.quote_plus(name.encode('utf-8'), '!\'()*-._~')), includes=['%s-rels' % discogs_type]) mbids = mbids + [entity[discogs_type]['id'] for entity in url_data['url']['%s-relation-list' % discogs_type]] except: continue mbids = uniq(mbids) if len(mbids) > 0: return {discogs_type: mbids} else: return {'unmatch': []} else: return {}
def test_browse_url(self): resource = "http://www.queenonline.com" musicbrainzngs.browse_urls(resource=resource) self.assertEqual("http://musicbrainz.org/ws/2/url/?resource=http%3A%2F%2Fwww.queenonline.com", self.opener.get_url()) # Resource is urlencoded, including ? and = resource = "http://www.splendidezine.com/review.html?reviewid=1109588405202831" musicbrainzngs.browse_urls(resource=resource) self.assertEqual("http://musicbrainz.org/ws/2/url/?resource=http%3A%2F%2Fwww.splendidezine.com%2Freview.html%3Freviewid%3D1109588405202831", self.opener.get_url())
def test_browse_url(self): resource = "http://www.queenonline.com" musicbrainzngs.browse_urls(resource=resource) self.assertEqual( "http://musicbrainz.org/ws/2/url/?resource=http%3A%2F%2Fwww.queenonline.com", self.opener.get_url()) # Resource is urlencoded, including ? and = resource = "http://www.splendidezine.com/review.html?reviewid=1109588405202831" musicbrainzngs.browse_urls(resource=resource) self.assertEqual( "http://musicbrainz.org/ws/2/url/?resource=http%3A%2F%2Fwww.splendidezine.com%2Freview.html%3Freviewid%3D1109588405202831", self.opener.get_url())
def automatic_item_matches(self, data): musicbrainzngs.set_useragent('geordi', 'discogs-item-matches', 'http://geordi.musicbrainz.org') try: url_data = musicbrainzngs.browse_urls( resource='http://www.discogs.com/release/%s' % data['discogs']['release']['_id'], includes=['release-rels']) mbids = [release['release']['id'] for release in url_data['url']['release-relation-list']] return {'release': mbids} except: return {'unmatch': []}
def individual_subitem_matches(self, subitem, data): musicbrainzngs.set_useragent('geordi', 'discogs-subitem-matches', 'http://geordi.musicbrainz.org') (discogs_type, discogs_id) = re.split('-', subitem, 1) if discogs_type == 'master': try: url_data = musicbrainzngs.browse_urls( resource='http://www.discogs.com/master/%s' % discogs_id, includes=['release-group-rels']) mbids = [ release_group['release-group']['id'] for release_group in url_data['url']['release_group-relation-list'] ] return {'release-group': mbids} except: return {'unmatch': []} elif discogs_type in ['artist', 'label'] and data.get('name', False): names = data.get('name', []) mbids = [] for name in names: try: url_data = musicbrainzngs.browse_urls( resource='http://www.discogs.com/%s/%s' % (discogs_type, urllib.quote_plus(name.encode('utf-8'), '!\'()*-._~')), includes=['%s-rels' % discogs_type]) mbids = mbids + [ entity[discogs_type]['id'] for entity in url_data['url']['%s-relation-list' % discogs_type] ] except: continue mbids = uniq(mbids) if len(mbids) > 0: return {discogs_type: mbids} else: return {'unmatch': []} else: return {}
def automatic_item_matches(self, data): musicbrainzngs.set_useragent('geordi', 'discogs-item-matches', 'http://geordi.musicbrainz.org') try: url_data = musicbrainzngs.browse_urls( resource='http://www.discogs.com/release/%s' % data['discogs']['release']['_id'], includes=['release-rels']) mbids = [ release['release']['id'] for release in url_data['url']['release-relation-list'] ] return {'release': mbids} except: return {'unmatch': []}