Refactoring function extract_data

This commit is contained in:
Fabio Scotto di Santolo
2024-10-23 11:38:01 +02:00
parent d1f6c12cba
commit 535148bf2a

View File

@@ -6,37 +6,33 @@ from models.track import TrackInfo, Album
async def __extract_data(data: dict[str, Any]) -> dict[str, Any]: async def __extract_data(data: dict[str, Any]) -> dict[str, Any]:
track_data = data["track"] def album_field(x: str, lst: list) -> str | int:
sections_data = track_data["sections"] for elem in lst:
items = list(itertools.chain(*[x["metadata"] for x in sections_data if "metadata" in x])) if x == elem["title"]:
return elem["text"]
def album_data(t: str) -> str | int: def seek_track(x: str, metadata: dict[str, Any]) -> dict[str, Any]:
for item in items: tts = metadata["data"][0]["relationships"]["tracks"]["data"]
if item["title"] == t: for t in tts:
return item["text"] if x == t["attributes"]["name"]:
return t["attributes"]
def seek_track(which: str, ad: dict[str, Any]) -> dict[str, Any]:
album_tracks = ad["data"][0]["relationships"]["tracks"]["data"]
for track in album_tracks:
if which == track["attributes"]["name"]:
return track["attributes"]
return {} return {}
title = track_data["title"] track_data = data["track"]
artist = track_data["subtitle"] track_attrs = list(itertools.chain(*[x["metadata"] for x in track_data["sections"] if "metadata" in x]))
album_id = int(track_data['albumadamid']) album_attrs = seek_track(
album_name = album_data("Album") x=track_data["title"],
album_release_year = album_data("Released") metadata=await shazam.album(album_id=int(track_data['albumadamid']))
album_data = seek_track(title, await shazam.album(album_id=album_id)) )
return { return {
"title": title, "title": track_data["title"],
"artist": artist, "artist": track_data["subtitle"],
"track_number": album_data["trackNumber"], "track_number": album_attrs["trackNumber"],
"album": { "album": {
"id": album_id, "id": int(track_data['albumadamid']),
"name": album_name, "name": album_field("Album", track_attrs),
"released": album_release_year "released": album_field("Released", track_attrs)
} }
} }