예제 #1
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)
예제 #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 generate_chart(format: str, weeks: int) -> list:
    from datetime import datetime, timedelta

    from klap4.db import Session
    session = Session()

    chart_list = None

    weeks_ago = datetime.now() - timedelta(weeks=int(weeks))
    new_album_limit = datetime.now() - timedelta(days=30 * 6)

    if format == "all":
        chart_list = session.query(Song, func.sum(Song.times_played)) \
            .filter(Song.last_played > weeks_ago
            ) \
            .group_by(Song.id, Song.album_id
            ) \
            .all()

    elif format == "new":
        chart_list = session.query(Song, func.sum(Song.times_played)) \
            .join(Album, and_(Album.date_added > new_album_limit, Song.album_id == Album.id)) \
            .filter(Song.last_played > weeks_ago) \
            .group_by(Song.id) \
            .all()

    better_charts = []
    ref_list = []
    for item in chart_list:
        genre_abbr = decompose_tag(item[0].ref).genre_abbr
        artist_num = decompose_tag(item[0].ref).artist_num
        album_letter = decompose_tag(item[0].ref).album_letter
        ref = genre_abbr + str(artist_num) + album_letter
        if ref in ref_list:
            continue
        else:
            better_charts.append(
                (genre_abbr, artist_num, album_letter, item[1]))
            ref_list.append(ref)

    sorted_charts = sorted(better_charts,
                           key=lambda x: (-x[3], x[0], x[1], x[2]))
    return sorted_charts
예제 #4
0
    def __init__(self, **kwargs):
        if "id" in kwargs:
            decomposed_tag = decompose_tag(kwargs["id"])
            ref_album = find_album(decomposed_tag.genre_abbr,
                                   decomposed_tag.artist_num,
                                   decomposed_tag.album_letter)
            kwargs["album_id"] = ref_album.id

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

            kwargs["dj_id"] = decomposed_tag.dj_id
            kwargs["name"] = decomposed_tag.name

            kwargs.pop("id")

        super().__init__(**kwargs)
예제 #6
0
    def __init__(self, **kwargs):
        if "id" in kwargs:
            decomposed_tag = decompose_tag(kwargs["id"])
            ref_album = find_album(decomposed_tag.genre_abbr,
                                   decomposed_tag.artist_num,
                                   decomposed_tag.album_letter)
            kwargs["album_id"] = ref_album.id

            kwargs["id"] = ref_album.next_review_id

        if "date_entered" not in kwargs:
            kwargs["date_entered"] = datetime.now()
        super().__init__(**kwargs)
예제 #7
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)
예제 #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)