summaryrefslogtreecommitdiffstats
path: root/addons/metadata.generic.artists/lib/musicbrainz.py
blob: d5bdaf35c2a9bfc7442038bd79473cf7c586124d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# -*- coding: utf-8 -*-

def musicbrainz_artistfind(data, artist):
    artists = []
    for item in data.get('artists',[]):
        artistdata = {}
        artistdata['artist'] = item['name']
        artistdata['thumb'] = ''
        artistdata['genre'] = ''
        artistdata['born'] = item['life-span'].get('begin', '')
        if 'type' in item:
            artistdata['type'] = item['type']
        if 'gender' in item:
            artistdata['gender'] = item['gender']
        if 'disambiguation' in item:
            artistdata['disambiguation'] = item['disambiguation']
        artistdata['mbartistid'] = item['id']
        if item.get('score',1):
            artistdata['relevance'] = str(item['score'] / 100.00)
        artists.append(artistdata)
    return artists

def musicbrainz_artistdetails(data):
    artistdata = {}
    artistdata['artist'] = data['name']
    artistdata['mbartistid'] = data['id']
    artistdata['type'] = data['type']
    artistdata['gender'] = data['gender']
    artistdata['disambiguation'] = data['disambiguation']
    if data.get('life-span','') and data.get('type',''):
        begin = data['life-span'].get('begin', '')
        end = data['life-span'].get('end', '')
        if data['type'] in ['Group', 'Orchestra', 'Choir']:
            artistdata['formed'] = begin
            artistdata['disbanded'] = end
        elif data['type'] in ['Person', 'Character']:
            artistdata['born'] = begin
            artistdata['died'] = end
    albums = []
    for item in data.get('release-groups',[]):
        albumdata = {}
        albumdata['title'] = item.get('title','')
        albumdata['year'] = item.get('first-release-date','')
        albumdata['musicbrainzreleasegroupid'] = item.get('id','')
        albums.append(albumdata)
    if albums:
        artistdata['albums'] = albums
    for item in data['relations']:
        if item['type'] == 'allmusic':
            artistdata['allmusic'] = item['url']['resource']
        elif item['type'] == 'discogs':
            dataid = item['url']['resource'].rsplit('/', 1)[1]
            artistdata['discogs'] = dataid
        elif item['type'] == 'wikidata':
            dataid = item['url']['resource'].rsplit('/', 1)[1]
            artistdata['wikidata'] = dataid
        elif item['type'] == 'wikipedia':
            dataid = item['url']['resource'].rsplit('/', 1)[1]
            artistdata['wikipedia'] = dataid
    return artistdata