trustmaster / gkeep2notion

Export contents from Google Keep and import it into Notion
Apache License 2.0
88 stars 16 forks source link

body.children[9].bulleted_list_item.rich_text[0].text.content.length should be ≤ `2000`, instead was `2174`. #15

Open marinucs opened 1 year ago

marinucs commented 1 year ago

Hello!

First of all, thanks for developing this.

I have encountered this issue, after successfully importing 15 notes. Could you check it out? 🥺

Importing note #14: Parsing 9 blocks Importing note #15: Parsing 3 blocks Importing note #16: Parsing 31 blocks Traceback (most recent call last): File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/notion_client/client.py", line 118, in _parse_response response.raise_for_status() File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/httpx/_models.py", line 749, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://api.notion.com/v1/pages' For more information check: https://httpstatuses.com/400

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/Users/marinucs/Downloads/gkeep2notion/./gkeep2notion.py", line 440, in create_page(notion, page) File "/Users/marinucs/Downloads/gkeep2notion/./gkeep2notion.py", line 189, in create_page notion_page = notion.pages.create(parent=page.parent, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/notion_client/api_endpoints.py", line 199, in create return self.parent.request( ^^^^^^^^^^^^^^^^^^^^ File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/notion_client/client.py", line 194, in request return self._parse_response(response) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/notion_client/client.py", line 126, in _parse_response raise APIResponseError(response, body["message"], code) notion_client.errors.APIResponseError: body failed validation: body.children[9].bulleted_list_item.rich_text[0].text.content.length should be ≤ 2000, instead was 2174.

billythekidz commented 1 year ago
def create_page(notion: Client, page: Page) -> Page:
    """Creates a page in Notion and saves page.id"""
    try:
        throttle.wait()
        notion_page = notion.pages.create(parent=page.parent,
                                        properties=page.properties,
                                        children=page.children)
        page.id = notion_page['id']
    except:
        page.id = "your-root-page-id"

    return page

you could add try except into create_page() method

trustmaster commented 11 months ago

The problem is, each content block in Notion is limited to 2000 characters. The solution is to split it into multiple blocks, which this script typically does if your Keep note has paragraphs.

hexadeciman commented 7 months ago

@marinucs this is fixed in my last PR