async def artist(request: web.Request) -> Union[dict, web.HTTPException]: artist = request.match_info.get('artist') ARTIST_DIR = ARTISTS_DIR / artist if ARTIST_DIR.exists():\ return load_meta(ARTIST_DIR) else: return web.HTTPBadRequest()
def load_release_meta(TARGET_DIR: Path) -> dict: meta = load_meta(TARGET_DIR) meta['artist'] = load_meta(ARTISTS_DIR / meta['artist']) # ITEM_DIR = ITEMS_DIR / meta['link'] # if ITEM_DIR.exists(): # meta['item'] = load_meta(ITEM_DIR) total_length = timedelta(0) for track in meta['tracklist']: track_minutes = int(track['length'].split(':')[0]) track_seconds = int(track['length'].split(':')[1]) track_length = timedelta(minutes=track_minutes, seconds=track_seconds) total_length += track_length meta['total_length'] = ':'.join(str(total_length).split(':')[1:]) return meta
async def artists(request: web.Request) -> dict: artists = [] for ARTIST_DIR in ARTISTS_DIR.glob('*/**'): artists.append(load_meta(ARTIST_DIR)) artists.sort(key=itemgetter('display_name')) return {'artists': artists}
def load_event_meta(TARGET_DIR: Path) -> dict: meta = load_meta(TARGET_DIR) meta['date'] = datetime.strptime(meta['date'], '%Y-%m-%d') return meta
def load_item_meta(TARGET_DIR: Path) -> dict: meta = load_meta(TARGET_DIR) meta['release'] = load_meta(RELEASES_DIR / meta['release']) meta['release']['artist'] = load_meta(ARTISTS_DIR / meta['release']['artist']) return meta
async def artists(request: web.Request) -> dict: artists = [] for ARTIST_DIR in ARTISTS_DIR.glob('*/**'): artists.append(load_meta(ARTIST_DIR)) artists.sort(key=itemgetter('id'), reverse=True) return {'artists': artists}