942615348d
resolve conflicts
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
"""
|
|
Author: Uyanide pywang0608@foxmail.com
|
|
Date: 2026-03-25 02:33:26
|
|
Description: Fetcher pipeline — registry and types
|
|
"""
|
|
|
|
from typing import Literal
|
|
|
|
from .base import BaseFetcher
|
|
from .local import LocalFetcher
|
|
from .cache_search import CacheSearchFetcher
|
|
from .spotify import SpotifyFetcher
|
|
from .lrclib import LrclibFetcher
|
|
from .lrclib_search import LrclibSearchFetcher
|
|
from .netease import NeteaseFetcher
|
|
from .qqmusic import QQMusicFetcher
|
|
from ..cache import CacheEngine
|
|
|
|
FetcherMethodType = Literal[
|
|
"local",
|
|
"cache-search",
|
|
"spotify",
|
|
"lrclib",
|
|
"lrclib-search",
|
|
"netease",
|
|
"qqmusic",
|
|
]
|
|
|
|
|
|
def create_fetchers(cache: CacheEngine) -> dict[FetcherMethodType, BaseFetcher]:
|
|
"""Instantiate all fetchers. Returns a dict keyed by source name."""
|
|
fetchers: dict[FetcherMethodType, BaseFetcher] = {
|
|
"local": LocalFetcher(),
|
|
"cache-search": CacheSearchFetcher(cache),
|
|
"spotify": SpotifyFetcher(),
|
|
"lrclib": LrclibFetcher(),
|
|
"lrclib-search": LrclibSearchFetcher(),
|
|
"netease": NeteaseFetcher(),
|
|
"qqmusic": QQMusicFetcher(),
|
|
}
|
|
return fetchers
|