updating and refining plugin system refactor
This commit is contained in:
+22
-22
@@ -15,10 +15,10 @@ import sys
|
||||
from SYS.logger import log, debug
|
||||
|
||||
from plugins.metadata_provider import (
|
||||
get_default_subject_scrape_provider,
|
||||
get_metadata_provider,
|
||||
get_metadata_provider_for_url,
|
||||
list_metadata_providers,
|
||||
get_default_subject_scrape_plugin,
|
||||
get_metadata_plugin,
|
||||
get_metadata_plugin_for_url,
|
||||
list_metadata_plugins,
|
||||
scrape_isbn_metadata,
|
||||
scrape_openlibrary_metadata,
|
||||
)
|
||||
@@ -393,33 +393,33 @@ def _run_impl(result: Any, args: Sequence[str], config: Dict[str, Any]) -> int:
|
||||
scrape_url = parsed_args.get("scrape")
|
||||
scrape_requested = scrape_flag_present or scrape_url is not None
|
||||
|
||||
# Handle URL or provider scraping mode.
|
||||
# Handle URL or metadata-plugin scraping mode.
|
||||
if scrape_requested:
|
||||
import json as json_module
|
||||
|
||||
scrape_target = str(scrape_url or "").strip() if scrape_url is not None else ""
|
||||
provider = None
|
||||
plugin = None
|
||||
if scrape_target.startswith(("http://", "https://")):
|
||||
provider = get_metadata_provider_for_url(scrape_target, config)
|
||||
if provider is None:
|
||||
log("No metadata provider can scrape this URL", file=sys.stderr)
|
||||
plugin = get_metadata_plugin_for_url(scrape_target, config)
|
||||
if plugin is None:
|
||||
log("No metadata plugin can scrape this URL", file=sys.stderr)
|
||||
return 1
|
||||
payload = provider.scrape_url_payload(scrape_target)
|
||||
payload = plugin.scrape_url_payload(scrape_target)
|
||||
if not isinstance(payload, dict):
|
||||
log(f"No metadata extracted from URL via {provider.name}", file=sys.stderr)
|
||||
log(f"No metadata extracted from URL via {plugin.name}", file=sys.stderr)
|
||||
return 1
|
||||
print(json_module.dumps(payload, ensure_ascii=False))
|
||||
return 0
|
||||
|
||||
if scrape_target:
|
||||
provider = get_metadata_provider(scrape_target, config)
|
||||
plugin = get_metadata_plugin(scrape_target, config)
|
||||
else:
|
||||
provider = get_default_subject_scrape_provider(config)
|
||||
if provider is None:
|
||||
plugin = get_default_subject_scrape_plugin(config)
|
||||
if plugin is None:
|
||||
if scrape_target:
|
||||
log(f"Unknown metadata provider: {scrape_target}", file=sys.stderr)
|
||||
log(f"Unknown metadata plugin: {scrape_target}", file=sys.stderr)
|
||||
else:
|
||||
log("No default metadata provider is available for subject scraping", file=sys.stderr)
|
||||
log("No default metadata plugin is available for subject scraping", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
backend = None
|
||||
@@ -548,7 +548,7 @@ def _run_impl(result: Any, args: Sequence[str], config: Dict[str, Any]) -> int:
|
||||
query_hint = resolved_subject_query or identifier_query or combined_query or title_hint
|
||||
if not query_hint:
|
||||
log(
|
||||
f"No query could be resolved for metadata provider '{provider.name}'",
|
||||
f"No query could be resolved for metadata plugin '{provider.name}'",
|
||||
file=sys.stderr
|
||||
)
|
||||
return 1
|
||||
@@ -749,9 +749,9 @@ def _run_impl(result: Any, args: Sequence[str], config: Dict[str, Any]) -> int:
|
||||
)
|
||||
return 0
|
||||
|
||||
provider_for_apply = get_metadata_provider(str(result_provider), config)
|
||||
if provider_for_apply is not None:
|
||||
apply_tags = provider_for_apply.filter_tags_for_store_apply(
|
||||
plugin_for_apply = get_metadata_plugin(str(result_provider), config)
|
||||
if plugin_for_apply is not None:
|
||||
apply_tags = plugin_for_apply.filter_tags_for_store_apply(
|
||||
[str(t) for t in result_tags if t is not None]
|
||||
)
|
||||
else:
|
||||
@@ -946,7 +946,7 @@ def _run_impl(result: Any, args: Sequence[str], config: Dict[str, Any]) -> int:
|
||||
|
||||
_SCRAPE_CHOICES = []
|
||||
try:
|
||||
_SCRAPE_CHOICES = sorted(list_metadata_providers().keys())
|
||||
_SCRAPE_CHOICES = sorted(list_metadata_plugins().keys())
|
||||
except Exception:
|
||||
_SCRAPE_CHOICES = [
|
||||
"itunes",
|
||||
@@ -1000,7 +1000,7 @@ class Get_Tag(Cmdlet):
|
||||
' -query: Override hash to look up in Hydrus (use: -query "hash:<sha256>")',
|
||||
" -store: Store result to key for downstream pipeline",
|
||||
" -emit: Quiet mode (no interactive selection)",
|
||||
" -scrape: Scrape metadata from URL or metadata provider",
|
||||
" -scrape: Scrape metadata from URL or metadata plugin",
|
||||
],
|
||||
exec=self.run,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user