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)
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)
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
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)
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)
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)
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)
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)