Пример #1
0
def create_or_update_numu_release(mb_release):
    """Parse an MB release and turn it into a release object.

    Returns (unsaved) release object."""
    numu_date = get_numu_date(mb_release.get('first-release-date'))
    if numu_date is None or mb_release.get('artist-credit') is None:
        return None

    release = get_numu_release(mb_release.get('id'))
    if release is None:
        release = Release()

    release.mbid = mb_release.get('id')
    release.title = mb_release.get('title')
    release.type = get_numu_type(mb_release)
    release.date_release = numu_date
    release.artists_string = mb_release.get('artist-credit-phrase')
    release.date_updated = func.now()

    db.session.add(release)
    db.session.commit()

    for mb_artist in mb_release.get('artist-credit'):
        if type(mb_artist) == dict and mb_artist['artist']:
            artist = get_numu_artist_by_mbid(mb_artist['artist']['id'])
            if artist is None:
                artist = add_numu_artist_from_mb(
                    artist_mbid=mb_artist['artist']['id'])
            if artist and artist not in release.artists:
                release.artists.append(artist)

    db.session.add(release)
    db.session.commit()

    return release