<aside> 📌 我的爱发电主页: 爱发电delta1037

</aside>

功能:

注意:

一些可参考链接:(教程:B站delta1037;源码:Github delta1037;QQ交流群:917606741)


一、版本介绍

目前的备份版本有以下两个类型:

1、notion_backup_gui
2、notion_backup_terminal

其中gui版本是图形界面版本,terminal版本是命令窗版本

这两种的区别是:

<aside> 💡 由于命令窗版本启动后就可以开始备份,所以该版本可以配置自动化备份(填写一个Window的定时任务配置即可)

</aside>

怎么选择:

注意: 1、这两种运行前都需要填写好必填配置(可以用vscode打开配置文件进行json语法检查;在线json语法检查) 2、运行时关闭全局代理

二、使用说明

2.0 Token

Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

<aside> ⚠️ 注意:当前添加token的位置在页面右上角三个点里的connection块里

Untitled

</aside>

2.1、配置

填写配置:配置文件名称是config.json,配置文件样例和字段含义说明如下:

{
    "*backup_type": "single",
    "single" : {
        "*backup_token": "secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "*page_id" : "888xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "-page_type" : "page",
        "-dump_path": "./dumped_pages",
        "export_child_page": true,
        "page_parser_type": "md",
        "db_parser_type": "md",
        "db_insert_type": "content"
    },
    "multi": {
        "*backup_token": "secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "*backup_info_token" : "secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "*backup_list_id" : "888xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "*backup_log_id" : "666xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "backup_list_map": {
            "page_id": "页面ID",
            "page_type": "页面类型",
            "dump_path": "备份位置",
            "export_child_page": "递归备份",
            "page_parser_type": "页面备份类型",
            "db_parser_type": "数据库备份类型",
            "db_insert_type": "数据库嵌入类型",
            "dump_status": "备份"
        },
        "backup_log_map": {
            "title": "时间戳",
            "date": "备份时间",
            "status": "备份状态",
            "log": "备注"
        },
        "auto_check_off": true
    },
    "debug": false,
    "auto_close": true,
    "page_properties": true,
    "datetime_formate": "%Y/%m/%d-%H:%M:%S",
    "date_formate": "%Y/%m/%d",
    "file_with_link": false,
    "color_theme": "light",
    "your_color_theme": {
        "f_gray": "#787774",
        "f_brown": "#9F6B53",
        "f_orange": "#D9730D",
        "f_yellow": "#CB912F",
        "f_green": "#448361",
        "f_blue": "#337EA9",
        "f_purple": "#9065B0",
        "f_pink": "#C14C8A",
        "f_red": "#D44C47",
        "b_gray": "#F1F1EF",
        "b_brown": "#F4EEEE",
        "b_orange": "#FBECDD",
        "b_yellow": "#FBF3DB",
        "b_green": "#EDF3EC",
        "b_blue": "#E7F3F8",
        "b_purple": "#F4F0F7CC",
        "b_pink": "#F9EEF3CC",
        "b_red": "#FDEBEC",
        "d_light_gray": "#E3E2E080",
        "d_gray": "#E3E2E0",
        "d_brown": "#EEE0DA",
        "d_orange": "#FADEC9",
        "d_yellow": "#FDECC8",
        "d_green": "#DBEDDB",
        "d_blue": "#D3E5EF",
        "d_purple": "#E8DEEE",
        "d_pink": "#F5E0E9",
        "d_red": "#FFE2DD"
    }
}

<aside> 💡 Q:同一个Notion账户为什么需要备份多个页面? A: 1、该备份工具使用Notion官方API获取页面数据,官方API对调用速率有要求,所以一次备份的页面量最好不要太多(太多的话目前也没遇到问题),可以对页面拆分备份,一次只备份其中有更新的一部分 2、大部分时候主页里的一些页面不会继续更新也就不需要重新备份,所以可以对主页里面的页面进行拆分,单独进行备份

</aside>

2.2.1 字段解释

**注意:**其中以*开头的参数是必填项(粉红色背景),以-开头的参数是选填项(蓝色背景),其它可了解

单页面备份的配置字段:

多页面备份的配置字段:

注意: 1、这两类(多页面和单页面备份)都需要填写好必填的配置 2、单页面备份和多页面备份在重新运行时,都会覆盖同一个备份目录(即如果需要对备份到本地的文件改动,请异动到别的位置,或者修改备份的位置) 3、单页面备份的页面参数在配置文件中;多页面备份需要备份的页面参数在Notion数据库中,需要备份的页面需要手动勾选

其它字段:(没啥好想法就不要动)

2.2.2 多页面配置参数数据库

对于多页面的备份,备份参数的来源是notion中的一个Database,示例和模板如下(选中文版本):

多页面备份参数数据库模板

模板使用注意: 1、可随意新增字段/列(不与现有的字段(列)名冲突即可) 2、修改数据库中的字段(列)名,配置中的backup_list_map或者backup_log_map这两个字段(列)映射表需要同步修改

2.2.3 视频参考

注意上述的配置是将单页面和多页面综合起来的(之前是分离的,视频也是分离时录制的),但是配置过程基本不变(除了token的名称有变化)

单页面备份操作视频

多页面备份操作视频

当你的单页面或者多页面运用的熟练之后(手动点击可以正常运行,即配置填写的没有问题),就可以选择是否进行定时自动备份了,下面是一份定时备份配置的教程:

Window定时备份

2.3、运行

备注: 1、如果你在dump.log中发现以[ISSUE]开头的日志,可以在此项目中提交issue(或者向QQ群917606741告知),并向Email:geniusrabbit@qq.com发送客户端目录下的dump.log注意删除其中的token部分 2、如果你发现备份下来的页面有内容丢失或者错误的问题,可以在此项目中提交issue(或者向QQ群917606741告知)

2.4、输出说明

备份位置下的结构为:

 - child_pages/  # 所有的子页面(包括数据库中的子页面)
 - databases/    # 所有导出的数据库(包含csv和一个markdown格式的数据库页面辅助定位文件)
 - files/        # 所有的图片和文件
 main.md         # 下载页面id(作为主页存在)

该目录可以直接用Typora打开,或者用Obsidian打开。

三、自行打包

群内的文件夹更新的都是exe(Window系统适用),如果有朋友需要在MacOS上运行,可以自行按照如下的步骤进行打包。

<aside> ⚠️ 小白谨慎操作!!

</aside>

3.1 下载源代码

源代码链接如下:

https://github.com/delta1037/notion-export-client

可以打包的几个文件:(在下载的文件夹的根目录里)

1、notion_backup_gui.py
2、notion_backup_terminal.py

这两个文件分别对应了上面两个版本(图形界面版本和命令行界面版本)

3.2 配置环境

1、检查python环境:(有就行,最好3.7以上)

py --version

2、环境管理适用virtualenv工具,安装环境工具:

py -3.7 -m pip install virtualenv

3、使用虚拟环境

# 创建
py -m venv path_to_env
# 激活(这是powershell里面的激活命令,MacOS和这个估计不一样,自行查一下)
.\\path_to_env\\Scripts\\Activate.ps1
# 退出
deactivate

4、安装必要的包(环境激活的状态下)

# notion页面解析模块
pip install python-dateutil
pip install notion-dump-kernel
pip install pywebview
pip install flask
pip install Flask-Bootstrap
# 打包模块
pip install pyinstaller

3.3 打包

对于上面每一个可以打包的文件,在开头都有类似如下的一段代码:

# author: delta1037
# Date: 2022/05/01
# <mail:geniusrabbit@qq.com>
# 打包代码 pyinstaller -F -c -i notion-dump.ico notion_backup_terminal.py -p api/notion_dump.py -p api/notion_dump_api.py -p api/backup_info.py

其中的打包代码部分,就是打包的指令。对于上述的实例,打包代码就是pyinstaller -F -c -i notion-dump.ico notion_backup_terminal.py -p api/notion_dump.py -p api/notion_dump_api.py -p api/backup_info.py,配置好代码运行环境之后,在终端里运行这段代码后即可。

当运行完成之后,dist文件夹里就是点击即可运行的软件了~

四、项目结构