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()
|
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():
|
def main():
|
||||||
global DEBUG, COOKIES_FILE, COOKIES_FROM_BROWSER
|
global DEBUG, COOKIES_FILE, COOKIES_FROM_BROWSER
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
@@ -1325,21 +1345,8 @@ def main():
|
|||||||
print("Nothing selected.")
|
print("Nothing selected.")
|
||||||
return
|
return
|
||||||
|
|
||||||
if chosen.source == "lidarr":
|
_dispatch_chosen(chosen, hits, args.root, args.quality, args.dry_run,
|
||||||
if chosen.kind == "album":
|
args.lidarr_only, args.search_all)
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user