huge refactor of the entire codebase, with the goal of improving maintainability, readability, and extensibility. This commit includes changes to almost every file in the project, including:
This commit is contained in:
+55
-3
@@ -64,8 +64,7 @@ def _format_total_seconds(seconds: Any) -> str:
|
||||
|
||||
|
||||
class HIFI(Provider):
|
||||
|
||||
PROVIDER_NAME = "hifi"
|
||||
PLUGIN_NAME = "hifi"
|
||||
|
||||
TABLE_AUTO_STAGES = {
|
||||
"hifi.track": ["download-file"],
|
||||
@@ -2091,4 +2090,57 @@ class HIFI(Provider):
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return True
|
||||
return True
|
||||
|
||||
def expand_selection(
|
||||
self,
|
||||
selected_items: List[Any],
|
||||
*,
|
||||
ctx: Any,
|
||||
stage_is_last: bool = True,
|
||||
table_type: str = "",
|
||||
**_kwargs: Any,
|
||||
) -> Optional[List[Any]]:
|
||||
_ = ctx
|
||||
if stage_is_last:
|
||||
return None
|
||||
|
||||
normalized_table = str(table_type or "").strip().lower()
|
||||
if normalized_table != "hifi.album":
|
||||
return None
|
||||
|
||||
try:
|
||||
contexts = self._extract_album_selection_context(selected_items)
|
||||
except Exception:
|
||||
return None
|
||||
if not contexts:
|
||||
return None
|
||||
|
||||
track_items: List[Any] = []
|
||||
seen_track_ids: set[int] = set()
|
||||
for album_id, album_title, artist_name in contexts:
|
||||
try:
|
||||
track_results = self._tracks_for_album(
|
||||
album_id=album_id,
|
||||
album_title=album_title,
|
||||
artist_name=artist_name,
|
||||
limit=500,
|
||||
)
|
||||
except Exception:
|
||||
track_results = []
|
||||
for track in track_results or []:
|
||||
try:
|
||||
metadata = getattr(track, "full_metadata", None)
|
||||
track_id = None
|
||||
if isinstance(metadata, dict):
|
||||
raw_id = metadata.get("trackId") or metadata.get("id")
|
||||
track_id = int(raw_id) if raw_id is not None else None
|
||||
if track_id is not None:
|
||||
if track_id in seen_track_ids:
|
||||
continue
|
||||
seen_track_ids.add(track_id)
|
||||
except Exception:
|
||||
pass
|
||||
track_items.append(track)
|
||||
|
||||
return track_items or None
|
||||
Reference in New Issue
Block a user