"""Loads the sibling standalone `musicfetch` script (no .py extension) as a module and re-exports the symbols the API reuses. This is the single seam between the REST API and the CLI; musicfetch itself is unchanged.""" import importlib.machinery import importlib.util import os import sys _HERE = os.path.dirname(os.path.abspath(__file__)) _MF_PATH = os.environ.get("MUSICFETCH_BIN", os.path.join(_HERE, "..", "musicfetch")) # spec_from_file_location returns None for extension-less files, so use # SourceFileLoader directly to handle the bare `musicfetch` binary. _loader = importlib.machinery.SourceFileLoader("musicfetch_core", _MF_PATH) _spec = importlib.util.spec_from_loader("musicfetch_core", _loader) _mod = importlib.util.module_from_spec(_spec) _spec.loader.exec_module(_mod) # safe: musicfetch guards main() behind __main__ sys.modules["musicfetch_core"] = _mod Hit = _mod.Hit build_combined_hits = _mod.build_combined_hits pick = _mod.pick act_youtube = _mod.act_youtube act_lidarr_album = _mod.act_lidarr_album act_lidarr_artist = _mod.act_lidarr_artist QUALITY_CHOICES = _mod.QUALITY_CHOICES is_url = _mod.is_url is_playlist_url = _mod.is_playlist_url download_playlist = _mod.download_playlist download_single = _mod.download_single __all__ = ["Hit", "build_combined_hits", "pick", "act_youtube", "act_lidarr_album", "act_lidarr_artist", "QUALITY_CHOICES", "is_url", "is_playlist_url", "download_playlist", "download_single"]