refactor: extract _dispatch_chosen from main() for reuse
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
37
musicfetch
37
musicfetch
@@ -1284,6 +1284,26 @@ def parse_args():
|
||||
return p.parse_args()
|
||||
|
||||
|
||||
def _dispatch_chosen(chosen: Hit, hits: list[Hit], root: str, quality: str,
|
||||
dry_run: bool, lidarr_only: bool, search_all: bool) -> None:
|
||||
"""Act on a picked Hit: Lidarr album (add+search, fall to top YouTube hit on
|
||||
no release), Lidarr artist, or a YouTube track. Shared by main() and handle_link."""
|
||||
if chosen.source == "lidarr":
|
||||
if chosen.kind == "album":
|
||||
handled = act_lidarr_album(chosen, root, search_all, dry_run)
|
||||
if not handled and not lidarr_only:
|
||||
yt_fallback = next((h for h in hits if h.source == "youtube"), None)
|
||||
if yt_fallback:
|
||||
print("Using top YouTube hit as fallback.")
|
||||
act_youtube(yt_fallback, root, quality, dry_run)
|
||||
else:
|
||||
print("No YouTube fallback available.")
|
||||
else:
|
||||
act_lidarr_artist(chosen, root, search_all, dry_run)
|
||||
else:
|
||||
act_youtube(chosen, root, quality, dry_run)
|
||||
|
||||
|
||||
def main():
|
||||
global DEBUG, COOKIES_FILE, COOKIES_FROM_BROWSER
|
||||
args = parse_args()
|
||||
@@ -1325,21 +1345,8 @@ def main():
|
||||
print("Nothing selected.")
|
||||
return
|
||||
|
||||
if chosen.source == "lidarr":
|
||||
if chosen.kind == "album":
|
||||
handled = act_lidarr_album(chosen, args.root, args.search_all, args.dry_run)
|
||||
if not handled and not args.lidarr_only:
|
||||
# Fall through to the top YouTube hit for the same query.
|
||||
yt_fallback = next((h for h in hits if h.source == "youtube"), None)
|
||||
if yt_fallback:
|
||||
print("Using top YouTube hit as fallback.")
|
||||
act_youtube(yt_fallback, args.root, args.quality, args.dry_run)
|
||||
else:
|
||||
print("No YouTube fallback available.")
|
||||
else:
|
||||
act_lidarr_artist(chosen, args.root, args.search_all, args.dry_run)
|
||||
else:
|
||||
act_youtube(chosen, args.root, args.quality, args.dry_run)
|
||||
_dispatch_chosen(chosen, hits, args.root, args.quality, args.dry_run,
|
||||
args.lidarr_only, args.search_all)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user