`core/download_plugins/` defines the canonical interface every download source must satisfy and the registry that holds them. Single source of truth replacing the orchestrator's hardcoded `[self.soulseek, self.youtube, ...]` lists scattered across 6+ dispatch sites. Pure additive — no consumers wired through the registry yet.
25 lines
984 B
Python
25 lines
984 B
Python
"""Download source plugin contract + registry.
|
|
|
|
This package defines the canonical interface every download source
|
|
(Soulseek, YouTube, Tidal, Qobuz, HiFi, Deezer, Lidarr, SoundCloud,
|
|
and future additions like Usenet) must satisfy. The orchestrator
|
|
dispatches through this contract instead of hardcoded
|
|
`if self.youtube ... elif self.tidal ...` chains.
|
|
|
|
This is the foundation step of a multi-commit refactor. Subsequent
|
|
commits extract shared logic (background download worker, search
|
|
query normalization, post-processing context building) into the
|
|
contract so adding a new source becomes a one-class plugin instead
|
|
of a 700+ LOC copy-paste loop.
|
|
|
|
See `core/download_plugins/base.py` for the protocol contract and
|
|
`core/download_plugins/registry.py` for the dispatch entry point.
|
|
"""
|
|
|
|
from core.download_plugins.base import DownloadSourcePlugin
|
|
from core.download_plugins.registry import DownloadPluginRegistry
|
|
|
|
__all__ = [
|
|
"DownloadSourcePlugin",
|
|
"DownloadPluginRegistry",
|
|
]
|