refactor initial not fully recovered
This commit is contained in:
parent
892568d668
commit
a620e7a4f5
16 changed files with 925 additions and 267 deletions
40
src/local/ParseLocal.py
Normal file
40
src/local/ParseLocal.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
from datetime import datetime
|
||||
from typing import Any, Iterable
|
||||
from pathlib import Path
|
||||
import json
|
||||
|
||||
from src.Library import *
|
||||
|
||||
class LocalParser:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def parse_track_item(self, id, track: dict[str, Any]) -> Track:
|
||||
track = Track(
|
||||
title=track["name"],
|
||||
artists=[track.get("artist", [])],
|
||||
album=track["album"] if track.get("album") else None,
|
||||
duration_ms=None,
|
||||
added_at=None,
|
||||
spotify=None,
|
||||
id=id,
|
||||
local=LocalData(path=track["path"])
|
||||
)
|
||||
return track
|
||||
|
||||
|
||||
def parse_all_tracks(self, items: dict[str, list[dict[str, Any]]]) -> list[Track]:
|
||||
return [self.parse_track_item(id, track) for id, track in items.items()]
|
||||
|
||||
def build_library_from_tracks(self, tracks_content_json: dict[str, list[dict[str, Any]]]) -> Library:
|
||||
library = Library()
|
||||
|
||||
tracks = self.parse_all_tracks(tracks_content_json)
|
||||
library.tracklists.append(TrackList(tracks=list(tracks)))
|
||||
library.tracks.extend(tracks)
|
||||
|
||||
return library
|
||||
|
||||
def parse(self, tracks_file: Path) -> Library:
|
||||
tracks_content = json.loads(tracks_file.read_text())
|
||||
return self.build_library_from_tracks(tracks_content)
|
||||
Loading…
Add table
Add a link
Reference in a new issue