diff --git a/handlers/pages.py b/handlers/pages.py index 3e213e0..cd3efba 100644 --- a/handlers/pages.py +++ b/handlers/pages.py @@ -83,7 +83,7 @@ def handle_add_submit(body): except Exception as e: error_msg = str(e).lower() - if "block" in error_msg or "cloudflare" in error_msg or "403" in error_msg: + if any(x in error_msg for x in ("block", "cloudflare", "403", "ssl", "handshake", "max retries", "timeout", "connection")): return _respond( f"

add url (manual entry)

" f"

{esc(url)} blocks automated access. " diff --git a/handlers/search.py b/handlers/search.py index 967b59c..d9ee7c1 100644 --- a/handlers/search.py +++ b/handlers/search.py @@ -41,6 +41,23 @@ def handle_search(query): else: fused_ids = bm25_ids + # Also match by tag + search_terms = [w.lower() for w in q.split() if w] + if search_terms: + placeholders = ",".join("?" * len(search_terms)) + tag_rows = db.execute( + f"SELECT DISTINCT pt.page_id FROM page_tags pt " + f"JOIN tags t ON t.id = pt.tag_id " + f"WHERE LOWER(t.name) IN ({placeholders})", + search_terms, + ).fetchall() + tag_ids = {r["page_id"] for r in tag_rows} + seen = set(fused_ids) + for pid in tag_ids: + if pid not in seen: + fused_ids.append(pid) + seen.add(pid) + total_results = len(fused_ids) page_ids = fused_ids[offset:offset + PER_PAGE]