notionary 0.1.29__py3-none-any.whl → 0.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- notionary/__init__.py +5 -5
- notionary/database/notion_database.py +50 -59
- notionary/database/notion_database_factory.py +16 -20
- notionary/elements/audio_element.py +1 -1
- notionary/elements/bookmark_element.py +1 -1
- notionary/elements/bulleted_list_element.py +2 -8
- notionary/elements/callout_element.py +1 -1
- notionary/elements/code_block_element.py +1 -1
- notionary/elements/divider_element.py +1 -1
- notionary/elements/embed_element.py +1 -1
- notionary/elements/heading_element.py +2 -8
- notionary/elements/image_element.py +1 -1
- notionary/elements/mention_element.py +1 -1
- notionary/elements/notion_block_element.py +1 -1
- notionary/elements/numbered_list_element.py +2 -7
- notionary/elements/paragraph_element.py +1 -1
- notionary/elements/qoute_element.py +1 -1
- notionary/elements/registry/{block_element_registry.py → block_registry.py} +70 -26
- notionary/elements/registry/{block_element_registry_builder.py → block_registry_builder.py} +48 -32
- notionary/elements/table_element.py +1 -1
- notionary/elements/text_inline_formatter.py +13 -9
- notionary/elements/todo_element.py +1 -1
- notionary/elements/toggle_element.py +1 -1
- notionary/elements/toggleable_heading_element.py +1 -1
- notionary/elements/video_element.py +1 -1
- notionary/models/notion_block_response.py +264 -0
- notionary/models/notion_database_response.py +63 -0
- notionary/models/notion_page_response.py +100 -0
- notionary/notion_client.py +38 -5
- notionary/page/content/page_content_retriever.py +68 -0
- notionary/page/content/page_content_writer.py +103 -0
- notionary/page/markdown_to_notion_converter.py +5 -5
- notionary/page/metadata/metadata_editor.py +91 -63
- notionary/page/metadata/notion_icon_manager.py +55 -28
- notionary/page/metadata/notion_page_cover_manager.py +23 -20
- notionary/page/notion_page.py +223 -218
- notionary/page/notion_page_factory.py +102 -151
- notionary/page/notion_to_markdown_converter.py +5 -5
- notionary/page/properites/database_property_service.py +11 -55
- notionary/page/properites/page_property_manager.py +44 -67
- notionary/page/properites/property_value_extractor.py +3 -3
- notionary/page/relations/notion_page_relation_manager.py +165 -213
- notionary/page/relations/notion_page_title_resolver.py +59 -41
- notionary/page/relations/page_database_relation.py +7 -9
- notionary/{elements/prompts → prompting}/element_prompt_content.py +19 -4
- notionary/prompting/markdown_syntax_prompt_generator.py +92 -0
- notionary/util/logging_mixin.py +17 -8
- notionary/util/warn_direct_constructor_usage.py +54 -0
- {notionary-0.1.29.dist-info → notionary-0.2.1.dist-info}/METADATA +2 -1
- notionary-0.2.1.dist-info/RECORD +60 -0
- {notionary-0.1.29.dist-info → notionary-0.2.1.dist-info}/WHEEL +1 -1
- notionary/database/database_info_service.py +0 -43
- notionary/elements/prompts/synthax_prompt_builder.py +0 -150
- notionary/page/content/page_content_manager.py +0 -211
- notionary/page/properites/property_operation_result.py +0 -116
- notionary/page/relations/relation_operation_result.py +0 -144
- notionary-0.1.29.dist-info/RECORD +0 -58
- {notionary-0.1.29.dist-info → notionary-0.2.1.dist-info}/licenses/LICENSE +0 -0
- {notionary-0.1.29.dist-info → notionary-0.2.1.dist-info}/top_level.txt +0 -0
@@ -9,13 +9,24 @@ class NotionPageCoverManager(LoggingMixin):
|
|
9
9
|
self.page_id = page_id
|
10
10
|
self._client = client
|
11
11
|
|
12
|
-
async def set_cover(self, external_url: str) -> Optional[
|
13
|
-
"""
|
12
|
+
async def set_cover(self, external_url: str) -> Optional[str]:
|
13
|
+
"""
|
14
|
+
Sets a cover image from an external URL and returns the new URL if successful.
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
Args:
|
17
|
+
external_url: The URL to be set as the external cover image.
|
18
|
+
|
19
|
+
Returns:
|
20
|
+
The URL of the new cover image, or None if the request failed.
|
21
|
+
"""
|
22
|
+
data = {"cover": {"type": "external", "external": {"url": external_url}}}
|
23
|
+
|
24
|
+
try:
|
25
|
+
updated_page = await self._client.patch_page(self.page_id, data=data)
|
26
|
+
return updated_page.cover.external.url
|
27
|
+
except Exception as e:
|
28
|
+
self.logger.error("Failed to set cover image: %s", str(e))
|
29
|
+
return None
|
19
30
|
|
20
31
|
async def set_random_gradient_cover(self) -> Optional[Dict[str, Any]]:
|
21
32
|
"""Sets a random gradient cover from Notion's default gradient covers."""
|
@@ -32,22 +43,14 @@ class NotionPageCoverManager(LoggingMixin):
|
|
32
43
|
|
33
44
|
return await self.set_cover(random_cover_url)
|
34
45
|
|
35
|
-
async def get_cover_url(self) -> str:
|
46
|
+
async def get_cover_url(self) -> Optional[str]:
|
36
47
|
"""Retrieves the current cover image URL of the page."""
|
37
|
-
|
38
48
|
page_data = await self._client.get_page(self.page_id)
|
39
49
|
|
40
|
-
if not page_data:
|
41
|
-
return
|
42
|
-
|
43
|
-
cover = page_data.get("cover")
|
44
|
-
|
45
|
-
if not cover or not isinstance(cover, dict):
|
46
|
-
return ""
|
47
|
-
|
48
|
-
external = cover.get("external")
|
50
|
+
if not page_data or not page_data.cover:
|
51
|
+
return None
|
49
52
|
|
50
|
-
if
|
51
|
-
return
|
53
|
+
if page_data.cover.type == "external":
|
54
|
+
return page_data.cover.external.url
|
52
55
|
|
53
|
-
return
|
56
|
+
return None
|