d
This commit is contained in:
@@ -215,6 +215,38 @@ class Download_File(Cmdlet):
|
||||
if availability or reason:
|
||||
msg += f" (availability={availability or ''} reason={reason or ''})"
|
||||
log(msg, file=sys.stderr)
|
||||
|
||||
# Fallback: run a LibGen title search so the user can pick an alternative source.
|
||||
try:
|
||||
title_text = str(title or "").strip()
|
||||
if not title_text and isinstance(full_metadata, dict):
|
||||
title_text = str(full_metadata.get("title") or "").strip()
|
||||
if title_text:
|
||||
log(f"[download-file] Not available on OpenLibrary; searching LibGen for: {title_text}", file=sys.stderr)
|
||||
from cmdlet.search_provider import CMDLET as _SEARCH_PROVIDER_CMDLET
|
||||
# Use plain title text (LibGen mirrors can be finicky with fielded query prefixes).
|
||||
fallback_query = title_text
|
||||
|
||||
ret = _SEARCH_PROVIDER_CMDLET.exec(
|
||||
None,
|
||||
["-provider", "libgen", "-query", fallback_query],
|
||||
config,
|
||||
)
|
||||
|
||||
# download-file is treated as an action command by the pipeline printer.
|
||||
# Promote the search-provider table to a display overlay so it renders.
|
||||
try:
|
||||
table = pipeline_context.get_last_result_table()
|
||||
items = pipeline_context.get_last_result_items()
|
||||
if table is not None:
|
||||
pipeline_context.set_last_result_table_overlay(table, items)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return int(ret)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
continue
|
||||
|
||||
# Fallback: if we have a direct HTTP URL, download it directly
|
||||
|
||||
Reference in New Issue
Block a user