예제 #1
0
def charts_format(chart_list):
    formatted_list = []
    for entry in chart_list:
        genre_tag = entry[0]
        artist_tag = genre_tag + str(entry[1])
        album_tag = artist_tag + entry[2]

        genre = get_entity_from_tag(genre_tag)
        artist = get_entity_from_tag(artist_tag)
        album = get_entity_from_tag(album_tag)

        formatted_album = {
            "album_id":
            album_tag,
            "rank":
            chart_list.index(entry) + 1,
            "genre":
            genre.name,
            "artist_name":
            artist.name,
            "album_name":
            album.name,
            "label_name":
            None if album.label_id is None else album.label.name,
            "promoter_name":
            None if album.promoter_id is None else album.promoter.name,
            "times_played":
            entry[3]
        }
        formatted_list.append(formatted_album)

    return formatted_list
예제 #2
0
    def __init__(self, **kwargs):
        if "id" in kwargs:
            decomposed_tag = decompose_tag(kwargs["id"])

            kwargs["album_id"] = find_album_id(decomposed_tag.genre_abbr, decomposed_tag.artist_num, decomposed_tag.album_letter)

            if decomposed_tag.song_num is not None:
                kwargs["number"] = decomposed_tag.song_num

            kwargs.pop("id")

        if "number" not in kwargs:
            from klap4.db_entities import get_entity_from_tag
            album = get_entity_from_tag(f"{kwargs['genre_abbr']}{kwargs['artist_num']}{kwargs['album_letter']}")
            kwargs["number"] = len(album.songs) + 1

        if "fcc_status" not in kwargs:
            kwargs["fcc_status"] = Song.FCC_STATUS.UNRATED

        if "times_played" not in kwargs:
            kwargs["times_played"] = 0

        if "recommended" not in kwargs:
            kwargs["recommended"] = False

        if "last_played" not in kwargs:
            kwargs["last_played"] = datetime.fromtimestamp(0)

        super().__init__(**kwargs)
예제 #3
0
    def __init__(self, **kwargs):
        if "id" in kwargs:
            decomposed_tag = decompose_tag(kwargs["id"], regex_hint="playlist")

            kwargs["playlist_id"] = find_playlist_id(decomposed_tag.dj_id,
                                                     decomposed_tag.name)

            if decomposed_tag.song_num is not None:
                kwargs["index"] = decomposed_tag.song_num

            kwargs.pop("id")

        if "index" not in kwargs:
            from klap4.db_entities import get_entity_from_tag
            playlist = get_entity_from_tag(
                f"{kwargs['dj_id']}+{kwargs['playlist_name']}")
            kwargs["index"] = len(playlist.playlist_entries) + 1
            kwargs["playlist_id"] = playlist.id
            kwargs.pop("dj_id")
            kwargs.pop("playlist_name")

            print(playlist)

        #kwargs["reference"] = normalize_metadata[kwargs["reference_type"]](kwargs["reference"])

        super().__init__(**kwargs)
예제 #4
0
def get_klap4_metadata(song_key: str) -> json:
    from klap4.db_entities import get_entity_from_tag

    song = get_entity_from_tag(song_key)

    return {
        "artist": song.artist.name,
        "album": song.album.name,
        "song": song.name
    }
예제 #5
0
def change_album_fcc(ref, fcc):
    from klap4.db import Session
    session = Session()

    album = get_entity_from_tag(ref)

    for song in album.songs:
        song.fcc_status = fcc
        session.commit()
    
    return get_json(album)
예제 #6
0
    def __init__(self, **kwargs):
        if "id" in kwargs:
            decomposed_tag = decompose_tag(kwargs["id"])
            kwargs["genre_id"] = find_genre_id(decomposed_tag.genre_abbr)

            if decomposed_tag.artist_num is not None:
                kwargs["number"] = decomposed_tag.artist_num

            kwargs.pop("id")

        if "number" not in kwargs:
            from klap4.db_entities import get_entity_from_tag
            genre = get_entity_from_tag(kwargs["genre_abbr"])
            kwargs["number"] = genre.next_artist_num

        super().__init__(**kwargs)
예제 #7
0
def change_single_fcc(ref, song_number, fcc):
    from klap4.db import Session
    session = Session()

    album = get_entity_from_tag(ref)
    album_id = album.id

    update_song = session.query(Song) \
        .join(Album, and_(Album.id == Song.album_id, album.id == album_id)) \
        .filter(Song.number == song_number) \
        .one()
    
    update_song.fcc_status = fcc
    session.commit()

    return get_json(update_song)
예제 #8
0
    def __init__(self, **kwargs):
        if "id" in kwargs:
            decomposed_tag = decompose_tag(kwargs["id"])
            kwargs["artist_id"] = find_artist_id(decomposed_tag.genre_abbr,
                                                 decomposed_tag.artist_num)

            if decomposed_tag.album_letter is not None:
                kwargs["letter"] = decomposed_tag.album_letter

            kwargs.pop("id")

        if "letter" not in kwargs:
            from klap4.db_entities import get_entity_from_tag
            artist = get_entity_from_tag(
                f"{kwargs['genre_abbr']}{kwargs['artist_num']}")
            kwargs["letter"] = artist.next_album_letter

        defaults = {
            "date_added": datetime.now(),
            "missing": False,
        }
        kwargs = {**defaults, **kwargs}

        super().__init__(**kwargs)
예제 #9
0
 def get(self, ref):
     album = get_entity_from_tag(ref)
     serialized_album = album.serialize()
     return serialized_album
예제 #10
0
 def get(self, ref):
     artist = get_entity_from_tag(ref)
     serialized_artist = artist.serialize()
     return jsonify(serialized_artist)