stable stat
This commit is contained in:
parent
050b28fde8
commit
013e8b139a
11 changed files with 181 additions and 174 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue