diff options
| author | Louis Burda <dev@sinitax.com> | 2026-02-26 16:29:37 +0100 |
|---|---|---|
| committer | Louis Burda <dev@sinitax.com> | 2026-02-26 16:29:37 +0100 |
| commit | c9753f216c1be51c249e7c947cda8cb3d1a945d0 (patch) | |
| tree | 57970922d78d467cfbecc3e8ddefeb08ca43b6bc /src/tmview/cli.py | |
| parent | 906424e8acb5adf1eff58c2f45b85616cb5651d7 (diff) | |
| download | tmview-py-main.tar.gz tmview-py-main.zip | |
Diffstat (limited to 'src/tmview/cli.py')
| -rw-r--r-- | src/tmview/cli.py | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/src/tmview/cli.py b/src/tmview/cli.py index 0b3948c..cebb95d 100644 --- a/src/tmview/cli.py +++ b/src/tmview/cli.py @@ -21,7 +21,7 @@ def main(): prog="tmview", description="Search EU trademark registries via TMview", ) - parser.add_argument("query", help="Trademark search term") + parser.add_argument("query", nargs="?", help="Trademark name to search for") parser.add_argument( "-o", "--offices", metavar="CODES", @@ -50,6 +50,11 @@ def main(): help="Show fetch timestamp column in table output", ) parser.add_argument( + "--similar-to", + metavar="IMAGE", + help="Find trademarks with visually similar logos to IMAGE", + ) + parser.add_argument( "-d", "--download-logos", metavar="DIR", help="Download trademark logo images to DIR", @@ -80,6 +85,9 @@ def main(): args = parser.parse_args() + if not args.query and not args.similar_to: + parser.error("provide a search query or --similar-to IMAGE") + limit = min(args.limit, 100) if args.offices: @@ -98,15 +106,25 @@ def main(): sys.exit(1) try: - with console.status(f'[bold green]Searching TMview for "{args.query}"…[/bold green]'): - result = tm_client.search( - query=args.query, - offices=offices, - limit=limit, - page=args.page, - classes=classes, - status=args.status, - ) + if args.similar_to: + status_msg = f"[bold green]Searching TMview for logos similar to {args.similar_to}…[/bold green]" + with console.status(status_msg): + result = tm_client.search_by_image( + image_path=args.similar_to, + offices=offices, + limit=limit, + page=args.page, + ) + else: + with console.status(f'[bold green]Searching TMview for "{args.query}"…[/bold green]'): + result = tm_client.search( + query=args.query, + offices=offices, + limit=limit, + page=args.page, + classes=classes, + status=args.status, + ) except RuntimeError as exc: console.print(f"[red]Error: {exc}[/red]") console.print("[dim]Suggestion: check your connection or retry in a few seconds.[/dim]") @@ -118,7 +136,7 @@ def main(): if args.json_output: tm_output.print_json(result) else: - tm_output.print_table(result, args.query, verbose=args.verbose) + tm_output.print_table(result, args.query, verbose=args.verbose, image_path=args.similar_to) if args.download_logos: trademarks = result["trademarks"] |
