stable stat

This commit is contained in:
Шурупов Илья Викторович 2026-01-05 17:42:56 +03:00
parent 050b28fde8
commit 013e8b139a
11 changed files with 181 additions and 174 deletions

View file

@ -4,11 +4,13 @@ from datetime import datetime
from pathlib import Path
from typing import List, Optional, Any
class Artist:
def __init__(self):
self.id : str = None
self.title : str = None
self.tracks : List[Track] = []
self.albums : List[Album] = []
class Track:
@ -49,3 +51,30 @@ class Library:
self.top_tracks : List[Track]= []
self.top_artists : List[Artist] = []
self.artist_map : dict[str, Artist] = None
self.album_map : dict[str, Album] = None
self.track_map : dict[str, Track] = None
def update_cache(self):
self.update_id_maps()
self.create_reverse_links()
def update_id_maps(self):
self.artist_map : dict[str, Artist] = { artist.id : artist for artist in self.artists }
self.album_map : dict[str, Album] = { album.id : album for album in self.albums }
self.track_map : dict[str, Track] = { track.id : track for track in self.tracks }
def create_reverse_links(self):
for track_id, track in self.track_map.items():
for artist in track.artists:
if track not in artist.tracks:
artist.tracks.append(track)
if track not in track.album.tracks:
track.album.tracks.append(track)
for album_id, album in self.album_map.items():
for artist in album.artists:
if album not in artist.albums:
artist.albums.append(album)