From ca90d175412206173f7640d44493263d9b913af7 Mon Sep 17 00:00:00 2001 From: Berk <12572227+par274@users.noreply.github.com> Date: Tue, 8 Sep 2026 18:25:48 +0300 Subject: [PATCH] [aerolib-catalog] Add support for multiple Aerolib catalogs (#867) --- docs/aerolib-catalog.md | 3 +++ scripts/aerolib_catalog.py | 45 ++++++++++++++++++++++++++------------ 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/docs/aerolib-catalog.md b/docs/aerolib-catalog.md index 4549c08..57dafce 100644 --- a/docs/aerolib-catalog.md +++ b/docs/aerolib-catalog.md @@ -12,6 +12,9 @@ python scripts/aerolib_catalog.py lookup Zxa0VhQVTsk # Export name to NID python scripts/aerolib_catalog.py lookup sceKernelWaitSema +# A comma can be used for multiple query strings. +python scripts/aerolib_catalog.py lookup Zxa0VhQVTsk,SaKib2Ug0yI,sceVideoOutOpen,amuBfI-AQc4 + # Search export names python scripts/aerolib_catalog.py search VideoOut --limit 20 diff --git a/scripts/aerolib_catalog.py b/scripts/aerolib_catalog.py index 76b72f8..ab79cbb 100644 --- a/scripts/aerolib_catalog.py +++ b/scripts/aerolib_catalog.py @@ -41,21 +41,36 @@ def write_pair(nid: str, export_name: str) -> None: def lookup(args: argparse.Namespace) -> int: - value = args.value.strip() - if NID_PATTERN.fullmatch(value): - for export_name in read_names(args.names): - if compute_nid(export_name) == value: - write_pair(value, export_name) - return 0 + values = [value.strip() for value in args.value.split(",") if value.strip()] + names = read_names(args.names) + name_set = set(names) - print(f"NID not found in catalog: {value}", file=sys.stderr) - return 1 + result = 0 - names = set(read_names(args.names)) - write_pair(compute_nid(value), value) - if value not in names: - print("Warning: export name is not present in the catalog.", file=sys.stderr) - return 0 + for value in values: + if NID_PATTERN.fullmatch(value): + found = False + + for export_name in names: + if compute_nid(export_name) == value: + write_pair(value, export_name) + found = True + break + + if not found: + print(f"NID not found in catalog: {value}", file=sys.stderr) + result = 1 + + continue + + write_pair(compute_nid(value), value) + + if value not in name_set: + print( + f"Warning: export name is not present in the catalog: {value}", + file=sys.stderr, + ) + return result def search(args: argparse.Namespace) -> int: @@ -132,7 +147,9 @@ def create_parser() -> argparse.ArgumentParser: lookup_parser = subparsers.add_parser( "lookup", help="resolve a NID or calculate the NID for an export name" ) - lookup_parser.add_argument("value", help="11-character NID or exact export name") + lookup_parser.add_argument( + "value", help="11-character NID or exact export name; comma-separated values are supported" + ) lookup_parser.set_defaults(handler=lookup) search_parser = subparsers.add_parser(