Add helper to port notes data, imporve notion

This commit is contained in:
2024-08-26 16:45:36 +02:00
parent 9a5fc701bb
commit fd9cf2ca66
6 changed files with 115 additions and 15 deletions

View File

@@ -30,28 +30,36 @@ class NotionAsync:
self._client.aclose()
self._client = Client(auth=token)
async def get_block(self, block_id: str) -> dict:
return await self._client.blocks.retrieve(block_id=block_id)
async def get_block_children(self, block_id: str, start_cursor: str | None = None, page_size: int = 100) -> dict:
return await self._client.blocks.children.list(
block_id=block_id,
start_cursor=start_cursor,
page_size=page_size,
)
async def block_is_table(self, block_id: str) -> bool:
block = await self._client.blocks.retrieve(block_id=block_id)
block: dict = await self.get_block(block_id=block_id)
return block["type"] == "table"
async def get_table_width(self, table_id: str) -> int:
table = await self._client.blocks.retrieve(block_id=table_id)
return table["table"]["table_width"]
async def append_table_row_text(self, table_id: str, text_list: list[str]) -> None:
async def append_table_row_text(self, table_id: str, text_list: list[str], after: str | None = None) -> None:
cells: list[RichText] = []
for content in text_list:
cells.append([asdict(RichTextText(text=Text(content)))]) # noqa: PERF401
await self.append_table_row(table_id=table_id, cells=cells)
await self.append_table_row(table_id=table_id, cells=cells, after=after)
async def append_table_row(self, table_id: str, cells: list[RichText]) -> None:
async def append_table_row(self, table_id: str, cells: list[RichText], after: str | None = None) -> None:
if not await self.block_is_table(table_id):
return
table_width = await self.get_table_width(table_id=table_id)
if table_width != len(cells):
return
await self._client.blocks.children.append(
block_id=table_id,
children = [
{
"object": "block",
@@ -60,5 +68,15 @@ class NotionAsync:
"cells": cells,
},
},
],
]
if after is None:
await self._client.blocks.children.append(
block_id=table_id,
children=children,
)
else:
await self._client.blocks.children.append(
block_id=table_id,
children=children,
after=after,
)

0
src/helper/__init__.py Normal file
View File

View File

View File

@@ -0,0 +1,40 @@
12:50 | Thu, 20 Jun 🟢 Healthy
08:22 | Fri, 21 Jun 🟢 Healthy
22:06 | Fri, 21 Jun 🟢 Healthy
13:21 | Sat, 22 Jun 🟢 Healthy
22:20 | Sat, 22 Jun 🟢 Healthy
14:09 | Sun, 23 Jun 🟢 Healthy
08:04 | Mon, 24 Jun 🟢 Healthy
17:39 | Mon, 24 Jun 🟡 Soft
08:12 | Tue, 25 Jun 🟢 Healthy
21:40 | Tue, 25 Jun 🟡 Soft
21:10 | Wed, 26 Jun 🟢 Healthy
14:30 | Thu, 27 Jun 🟢 Healthy
08:00 | Fri, 28 Jun 🟢 Healthy
22:42 | Fri, 28 Jun 🟢 Healthy
12:32 | Sat, 29 Jun 🟢 Healthy
10:40 | Sun, 30 Jun 🟢 Healthy
17:30 | Sun, 30 Jun 🟢 Healthy
14:30 | Mon, 01 Jul 🟢 Healthy
21:31 | Mon, 01 Jul 🟢 Healthy
13:48 | Tue, 02 Jul 🟢 Healthy
09:31 | Wed, 03 Jul 🟢 Healthy
17:55 | Wed, 03 Jul 🟢 Healthy
18:06 | Thu, 04 Jul 🟢 Healthy
12:18 | Thu, 04 Jul 🟢 Healthy
15:03 | Fri, 05 Jul 🟢 Healthy
22:07 | Fri, 05 Jul 🟢 Healthy
16:35 | Sat, 06 Jul 🟢 Healthy
17:05 | Sun, 07 Jul 🟢 Healthy
13:38 | Mon, 08 Jul 🟢 Healthy
22:30 | Tue, 09 Jul 🟢 Healthy
14:15 | Tue, 09 Jul 🟢 Healthy
21:59 | Wed, 10 Jul 🟢 Healthy
17:41 | Thu, 11 Jul 🟢 Healthy
14:06 | Fri, 12 Jul 🟢 Healthy
09:27 | Sat, 13 Jul 🟢 Healthy
22:00 | Sun, 14 Jul 🟢 Healthy
12:20 | Mon, 15 Jul 🟢 Healthy
08:09 | Tue, 16 Jul 🟤 Hard
13:20 | Tue, 16 Jul 🟢 Healthy
08:15 | Wed, 17 Jul 🟤 Hard

View File

@@ -0,0 +1,41 @@
import asyncio
import datetime
from pathlib import Path
from src.cloud_util.notion import NotionAsync
from src.config import Config
Config.init()
notion = NotionAsync(token=Config.get_env("NOTION_TOKEN"))
current_file_path = Path(__file__).resolve()
current_dir = str(current_file_path.parent)
rows: list[str] = []
async def update_rows() -> None:
header: dict = await notion.get_block_children(block_id=Config.get_env("POO_RECORD_NOTION_TABLE_ID"), page_size=1)
header_id = header["results"][0]["id"]
with Path.open(current_dir + "/old_poo_record.txt") as file:
content = file.read()
rows = content.split("\n")
rows.reverse()
for row in rows:
t = row[0:5]
date = row[8:19]
formatted_date = datetime.datetime.strptime(date, "%a, %d %b").astimezone().replace(year=2024).strftime("%Y-%m-%d")
status = row[20:]
print(f"{formatted_date} {t} {status}")
await notion.append_table_row_text(
table_id=Config.get_env("POO_RECORD_NOTION_TABLE_ID"),
text_list=[formatted_date, t, status, "0,0"],
after=header_id,
)
asyncio.run(update_rows())

View File

@@ -34,6 +34,7 @@ class PooRecorder:
async def _note(self, now: datetime, status: str, latitude: str, longitude: str) -> None:
formatted_date = now.strftime("%Y-%m-%d")
formatted_time = now.strftime("%H:%M")
status.strip()
await self._notion.append_table_row_text(self._table_id, [formatted_date, formatted_time, status, latitude + "," + longitude])
async def record(self, record_detail: RecordField) -> None: