数据无价,谨慎使用

苦于BookxNote摘录不能和思源笔记一起整理、查看,思源和BookxNote的数据不能打通,尝试做了一些子程序,用来对BookxNote的数据进行一些操作,实现我的需求。由于是对BookxNote的数据直接进行操作,请谨慎使用所有修改、更新内容的子程序(链接

可以实现什么功能?

  1. 思源笔记导入BookxNote,并自动链接引用该条笔记的内容(思源脑图 - 动作信息 - Quicker
  2. 更新BookxNote里的摘录内容
  3. 导出BookxNote摘录内容,并自定义导入思源格式

    文件夹操作

    新增文件夹

    输入参数:

  4. bxnPath

  5. folderPath
  6. folderName

bxnPath:BookxNote的Note路径
BookxNote 本地文件交互 - 图1
folderPath:指定新建文件夹的位置

  1. 输入现有文件夹名称,在该文件夹下新建文件夹。文件夹名可以通过“获取文件夹列表”子程序获取
  2. 留空,在根目录下新建文件夹

folderName:新建文件夹的名称(随便起一个名字即可)

BookxNote 本地文件交互 - 图2

获取文件夹列表

输入参数:

  1. bxnPath

bxnPath:BookxNote的Note路径

输出参数:

  1. folderIDList
  2. folderNameList
  3. folder_name_id

folderIDList:文件夹ID列表
folderNameList:文件夹名列表
folder_name_id:文件夹名和文件夹ID组成的词典。文件夹名为键,文件夹ID为值

BookxNote 本地文件交互 - 图3

笔记本操作

新增笔记本

输入参数:

  1. bxnPath
  2. folderPath
  3. bookName

bxnPath:BookxNote的Note路径
folderPath:指定新建文件夹的位置

  • 输入现有文件夹名称,在该文件夹下新建笔记本。文件夹名可以通过“获取文件夹列表”子程序获取
  • 留空,在根目录下新建笔记本

folderName:新建笔记本的名称(随便起一个名字即可)

BookxNote 本地文件交互 - 图4

获取笔记本列表

输入参数:

  1. bxnPath

bxnPath:BookxNote的Note路径

输出参数:

  1. bookIDList
  2. bookNameList
  3. nb_name_id

bookIDList:笔记本ID列表
bookNameList:笔记本名列表
nb_name_id:笔记本名和笔记本ID组成的词典。笔记本名为键,笔记本ID为值

BookxNote 本地文件交互 - 图5

获取笔记本内书籍

输入参数:

  1. bxnPath
  2. noteBookList

bxnPath:BookxNote的Note路径
noteBookName:需要查询的笔记本名

输出参数:

  1. idList
  2. nameList
  3. uuidList
  4. book_id_uuid
  5. book_name_id
  6. book_name_uuid

idList:书籍对应的ID,是markup.json里的doc_id
nameList:书籍对应的本地文件名称列表,是markups.json 里的书籍 title(带PDF或epub后缀)
uuidList:书籍对应的uuid列表
book_id_uuid:书籍id和uuid的组成的词典,id为键,uuid为值。可用于markups.json里通过doc_id定位书籍uuid
book_name_id:书籍name和书籍ID组成的词典,name为键,id为值。
book_name_uuid:书籍name和书籍uuid组成的词典,name为键,uuid为值。

BookxNote 本地文件交互 - 图6

笔记操作

新增单条笔记

输入参数:

  1. json
  2. title
  3. note
  4. annotation

json:BookxNote的Note/书名文件夹/markups.json
title:新增笔记的标题
note:新增笔记的内容(可以是HTML内容)
annotation:新增笔记的额外标注(可以用来放思源外链)

输出参数:

  1. json
  2. date
  3. uuid

json:增加笔记后的json内容
date:新增笔记的date信息。可用于uuid失效情况下作为定位标记(uuid正常来说不会变化,BookxNote的bug会导致uuid变动)
uuid:新增笔记的uuid,全局唯一定位符

BookxNote 本地文件交互 - 图7

获取笔记信息

输入参数:

  1. json
  2. id
  3. date
  4. uuid

json:BookxNote的Note/书名文件夹/markups.json
id:笔记ID,定位用,可通过BookxNote外链获取(非全局标识,不能用于合并、拆分笔记本)
uuid:笔记uuid,定位用,可通过id提取对应uuid(全局标识,可用于合并、拆分笔记本)
date:笔记生成时间,定位用,可通过id提取对应date(一般不用这个定位,除非出现uuid变动的bug。可用于合并拆分笔记本,不可用于从PDF导入的笔记)

输出参数:

  1. id
  2. date
  3. uuid
  4. annotations
  5. content
  6. docid
  7. page
  8. originaltext
  9. textblocks
  10. title
  11. imgfile
  12. rect

笔记相关的所有信息,具体功能见BookxNote 外链参数详解(伪) - 链滴

BookxNote 本地文件交互 - 图8

更新指定笔记

输入参数:

  1. json
  2. id
  3. uuid
  4. date
  5. title
  6. quote
  7. note
  8. image
  9. annotation

json:需要修改的笔记,从BookxNote的Note/书名文件夹/markups.json获取
id:笔记的ID,定位用
uuid:笔记的uuid,定位用
date:笔记的生成时间,定位用
title:笔记需要更新的标题(不更新不用填)
quote:笔记需要更新的originaltext(不更新不用填)
note:笔记需要更新的content(不更新不用填)
image:笔记需要更新的图片(需要在image文件夹内有对应文件,不更新不用填)
annotation:笔记需要更新的额外标注(只能输入一个)

输出参数:

  1. json

json:更新后的json内容

BookxNote 本地文件交互 - 图9

链接操作

新增笔记链接

输入参数:

  1. json
  2. from_uuid
  3. to_uuid

json:需要修改的笔记,从BookxNote的Note/书名文件夹/markups.json获取
from_uuid:从该条笔记链接
to_uuid:链接到该条笔记
注:from、to仅表示逻辑关系,在脑图中显示没有顺序区别

输出参数:

  1. json

json:更新后的json内容

BookxNote 本地文件交互 - 图10

获取链接信息

输入参数:

  1. json
  2. id
  3. date
  4. uuid

json:需要修改的笔记,从BookxNote的Note/书名文件夹/markups.json获取
id:笔记ID,定位用,可通过BookxNote外链获取(非全局标识,不能用于合并、拆分笔记本)
uuid:笔记uuid,定位用,可通过id提取对应uuid(全局标识,可用于合并、拆分笔记本)
date:笔记生成时间,定位用,可通过id提取对应date(一般不用这个定位,除非出现uuid变动的bug。可用于合并拆分笔记本,不可用于从PDF导入的笔记)

输出参数:

  1. uuidListTo
  2. uuidListFrom

uuidListTo:指定的笔记链接到哪些笔记
uuidListFrom:哪些笔记链接到指定的笔记

BookxNote 本地文件交互 - 图11

更新指定链接

输入参数:

  1. json
  2. HookUUID
  3. OldUUID
  4. NewUUID

json:需要修改的笔记,从BookxNote的Note/书名文件夹/markups.json获取
HookUUID:指定需要修改的笔记(uuid)
OldUUID:取消这条笔记和指定笔记的链接
NewUUID:将这条笔记和指定笔记链接

输出参数:

  1. json

json:更新后的json内容

BookxNote 本地文件交互 - 图12