Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .ai/notes4.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@

There is a file
./src/ccnget/geturl.py

The file runs like this:
```bash
uv run ccnget fetch http://example.com/ | uvx trafilatura
```

However, when there is no hit in the database,

```bash
uv run ccnget fetch http://example/
```
outputs
```
Traceback (most recent call last):
File "/home/hermes/w/ccnget/.venv/bin/ccnget", line 10, in <module>
sys.exit(main())
~~~~^^
File "/home/hermes/w/ccnget/src/ccnget/geturl.py", line 172, in main
fetch_cmd(args)
~~~~~~~~~^^^^^^
File "/home/hermes/w/ccnget/src/ccnget/geturl.py", line 99, in fetch_cmd
response.raise_for_status()
~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/home/hermes/w/ccnget/.venv/lib/python3.14/site-packages/requests/models.py", line 1167, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://brian-learns-cc-news-cdx-server.hf.space/lookup?url=http%3A%2F%2Fexample%2F&exact=False&limit=1
```

I would like it output something like

```
ccnget: no match for http://example.com/ in https://brian-learns-cc-news-cdx-server.hf.space/lookup
```

6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "ccnget"
version = "0.1.0"
version = "0.1.1"
description = "lookup urls and get files from Common Crawl News"
readme = "README.md"
authors = [
Expand All @@ -18,7 +18,7 @@ ccnget = "ccnget.geturl:main"


[build-system]
requires = ["uv_build>=0.11.12,<0.12.0"]
requires = ["uv_build>=0.11.32,<0.12.0"]
build-backend = "uv_build"

[dependency-groups]
Expand All @@ -29,7 +29,7 @@ dev = [
"pytest>=9.1.1",
"refurb>=2.3.1",
"ruff>=0.16.0",
"ty>=0.0.63",
"ty>=0.0.64",
"vulture>=2.16",
]

Expand Down
15 changes: 13 additions & 2 deletions src/ccnget/geturl.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,17 @@ def limited_int(val_str):
return val


def handle_lookup_404(response: requests.Response, url: str) -> None:
"""Handle a 404 from the CDX lookup by printing a clean error and exiting."""
if response.status_code == 404:
print(
f"ccnget: no match for {url} in {CDX_LOOKUP_URL}",
file=sys.stderr,
)
sys.exit(1)
response.raise_for_status()


def lookup_cmd(args: argparse.Namespace) -> None:
"""Execute the lookup subcommand."""
params = {
Expand All @@ -50,7 +61,7 @@ def lookup_cmd(args: argparse.Namespace) -> None:
logger.debug("Requesting %s with params %s", CDX_LOOKUP_URL, params)

response = requests.get(CDX_LOOKUP_URL, params=params, timeout=30)
response.raise_for_status()
handle_lookup_404(response, args.url)

print(json.dumps(response.json(), indent=2))

Expand Down Expand Up @@ -96,7 +107,7 @@ def fetch_cmd(args: argparse.Namespace) -> None:

logger.debug("Looking up %s", args.url)
response = requests.get(CDX_LOOKUP_URL, params=params, timeout=30)
response.raise_for_status()
handle_lookup_404(response, args.url)

results = response.json().get("results", [])

Expand Down
46 changes: 23 additions & 23 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading