|
@@ -1,4 +1,5 @@
|
|
|
from contextlib import asynccontextmanager
|
|
|
+from datetime import datetime
|
|
|
from json import JSONDecodeError
|
|
|
from pathlib import Path
|
|
|
|
|
@@ -62,9 +63,13 @@ async def catch_all(response: Request):
|
|
|
except (KeyError, JSONDecodeError):
|
|
|
thumbs_data = {}
|
|
|
|
|
|
+ site_description = None
|
|
|
for definition in definitions:
|
|
|
word = definition.css_first("a.word").text()
|
|
|
- meaning = remove_classes(definition.css_first("div.meaning")).html
|
|
|
+ meaning_node = remove_classes(definition.css_first("div.meaning"))
|
|
|
+ if site_description is None:
|
|
|
+ site_description = meaning_node.text(strip=True, separator=" ")
|
|
|
+ meaning = meaning_node.html
|
|
|
example = remove_classes(definition.css_first("div.example")).html
|
|
|
contributor = remove_classes(definition.css_first("div.contributor")).html
|
|
|
definition_id = int(definition.attributes["data-defid"] or "-1")
|
|
@@ -79,13 +84,24 @@ async def catch_all(response: Request):
|
|
|
pagination.attrs["class"] = "pagination"
|
|
|
pagination = pagination.html
|
|
|
|
|
|
+ term = response.query_params.get("term", results[0][1])
|
|
|
+ site_title = "Rural Dictionary"
|
|
|
+ match response.url.path:
|
|
|
+ case "/":
|
|
|
+
|
|
|
+ site_title += f', {datetime.now().strftime("%d %B")}'
|
|
|
+ case "/random.php":
|
|
|
+ term = "Random words"
|
|
|
+ site_title += f": {term}"
|
|
|
+
|
|
|
return templates.TemplateResponse(
|
|
|
"index.html",
|
|
|
{
|
|
|
"request": response,
|
|
|
"results": results,
|
|
|
"pagination": pagination,
|
|
|
- "term": response.query_params.get("term"),
|
|
|
+ "site_title": site_title,
|
|
|
+ "site_description": site_description,
|
|
|
},
|
|
|
)
|
|
|
|