Skip to content

[WIP] revamped metadata layer#498

Draft
kettui wants to merge 3 commits into
Nezreka:devfrom
kettui:feat/metadata-engine
Draft

[WIP] revamped metadata layer#498
kettui wants to merge 3 commits into
Nezreka:devfrom
kettui:feat/metadata-engine

Conversation

@kettui

@kettui kettui commented May 5, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

Nezreka added a commit that referenced this pull request May 5, 2026
Cin's review feedback: external callers reach per-source clients
via attribute access (orch.hifi.reload_instances()) — needs
generic accessors so the registry IS the single source of truth.

Adds:
- orch.client(name) — public accessor for a per-source client.
  Resolves canonical names (deezer) AND legacy aliases (deezer_dl).
- orch.configured_clients() — returns {name: client} for every
  initialized AND is_configured() == True source. Replaces the
  6+ if/hasattr/is_configured chain Cin called out:
    if hasattr(orch, 'soulseek') and orch.soulseek and \
       orch.soulseek.is_configured(): ...
- orch.reload_instances(source=None) — generic dispatch for
  source-specific reload calls. Replaces orch.hifi.reload_instances()
  with orch.reload_instances('hifi').
- get_download_orchestrator() / set_download_orchestrator()
  singleton factory matching Cin's get_metadata_engine pattern in
  PR #498. web_server.py can install the orchestrator it builds
  at boot so future callers grab via the factory instead of
  importing the legacy `soulseek_client` global.

Phase Cin-3/Cin-4 will replace existing call sites; this commit
just provides the surface so those migrations are mechanical.

Suite still green (335 download tests + 6 new generic-accessor
tests).
@Nezreka Nezreka mentioned this pull request May 5, 2026
8 tasks
kettui added 3 commits May 9, 2026 11:44
- introduce the in-process metadata engine and fresh provider adapters
- normalize external identity through source_id while keeping id as a compatibility alias
- route metadata callers through the new seam and add regression coverage
- remove legacy _source/provider emission from the new metadata path
- update import, discovery, wishlist, and repair consumers to read source
- refresh the affected tests to match the new contract
- derive Deezer track album types from album metadata instead of the raw track type
- inject Deezer artist data into artist-album payloads
- keep the iTunes explicit-duplicate guard from swapping in broken releases
@kettui kettui force-pushed the feat/metadata-engine branch from 7fc68aa to bf0bfe5 Compare May 9, 2026 08:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant