feat(server): load musicfetch binary as importable module
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
24
server/mf.py
Normal file
24
server/mf.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""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
|
||||
|
||||
_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__
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user