Ejemplo n.º 1
0
Archivo: artist.py Proyecto: lidel/mmda
def get_basic_artist(mbid):
    """
    Make sure basic artist document is present and contains required data.

    @param mbid:    a string containing a MusicBrainz ID of an artist

    @return: a CachedArtist object containing required minimal data set
    """
    #TODO: handle Various Artists' artist (VARIOUS_ARTISTS_ID)
    try:
        artist = CachedArtist.get(mbid)
        mmda_logger('db','present',artist._doc_type, artist.get_id)
    except ResourceNotFound:
        artist = _create_mb_artist(mbid)
    return  artist
Ejemplo n.º 2
0
Archivo: artist.py Proyecto: lidel/mmda
    @param mbid: a string containing a MusicBrainz ID of an artist

    @return: a CachedArtist object with basic MusicBrainz data
    """
    try:
        t = mmda_logger('mb','request','artist',mbid)
        mb_artist = mb_query.getArtistById(mbid, MB_ARTIST_INCLUDES)
        mmda_logger('mb','result', 'artist',mb_artist.name,t)
    except WebServiceError, e:
        # TODO: hard error page here
        # TODO: 404 not found redirect to different page? conditional?
        # TODO:  HTTP Error 503: Service Temporarily Unavailable -> special case:  please wait few seconds and hit F5
        mmda_logger('mb-artist','ERROR',e)
        raise e
    else:
        artist                      = CachedArtist.get_or_create(mbid)
        artist                      = _populate_artist_mb(artist, mb_artist)
        artist.cache_state['mb']    = [1,datetime.utcnow()]
        artist.save()
        mmda_logger('db','store',artist)

        # since we have some basic release data fetched with artist, store it
        _create_shallow_releases_mb(mb_artist)

        # TODO: think about genres and origin - fetch from freebase(?)
        # freebase.mqlread({"type":"/music/artist", "limit": 1, "key": [{"namespace" : '/authority/musicbrainz',"value" : '579ef111-19dd-4ae8-ad50-d5fa435472b9'}], "genre":[], "origin":None} )
    return artist

def _populate_artist_mb(artist, mb_artist):
    """
    Process data from MusicBrainz and store it in dedicated structures of CachedArtist.