手机上做笔记的app推荐(免费云笔记哪个好用)

有道云笔记有脑图功能,我平时经常用到,之所以很少用到其他脑图工具,是因为我一直用有道云笔记写笔记。因此编辑脑图和查看脑图比较方便,但是需要将脑图导出的时候目前只支持图片和xmind,但是需要开会员,由

有道云笔记有脑图功能,我平时经常用到,之所以很少用到其他脑图工具,是因为我一直用有道云笔记写笔记。因此编辑脑图和查看脑图比较方便,但是需要将脑图导出的时候目前只支持图片和xmind,但是需要开会员,由于囊中羞涩,所以我想了别的方案。

手机上做笔记的app推荐(免费云笔记哪个好用)

解决方案

我找到xmind的官方GitHub:https://github.com/xmindltd,找到了python的SDK,看了下有python和java以及js这三个sdk,但是Java和python的sdk已经不维护了,不过还是可以用的,就是新功能可能用不了。

找到了生成xmind的方法,但是如何将有道云笔记脑图的源文件拿到呢?还得分析一下源文件格式,写写算法去进行转换。之前导出过有道云笔记,知道好多文件都是明文保存,没有加密啥的,因此我用everything搜索了我的文件名,还真找到了办法。如下图所示,就是我找到的文件名,然后通过文件搜索工具搜到了源文件位置。

下面是我的思维导图的源文件,用文本方式打开,发现就是一个简单的json格式。

下面就是json内容,实际就是每个节点都有父节点id,根节点没有父节点,每个节点组成一个数组,这种格式处理最好用的就是递归的方法。

{ \\”nodes\\”: [ { \\”id\\”: \\”root\\”, \\”isroot\\”: true, \\”topic\\”: \\”测试脑图\\”, \\”customStyle\\”: { \\”fontFamily\\”: [ \\”Microsoft YaHei\\”, \\”STXihei\\” ] }, \\”link\\”: null, \\”expanded\\”: true, \\”parentid\\”: null, \\”style\\”: {} }, { \\”id\\”: \\”a231f89912e42e5b\\”, \\”topic\\”: \\”分支主题1\\”, \\”customStyle\\”: { \\”fontFamily\\”: [ \\”Microsoft YaHei\\”, \\”STXihei\\” ], \\”borderColor\\”: \\”#4D94FF\\” }, \\”expanded\\”: true, \\”parentid\\”: \\”root\\”, \\”style\\”: {} } ], \\”readOnly\\”: false, \\”toolbar\\”: { \\”lineType\\”: \\”default\\”, \\”strategy\\”: \\”logic_right\\”, \\”zoom\\”: 1, \\”loading\\”: true, \\”borderColor\\”: \\”#4D94FF\\” }, \\”remarks\\”: {}, \\”version\\”: \\”2.0\\”, \\”resourceList\\”: \\”\\”}动手操作

我的所有代码都放到GitHub:https://github.com/jan-bar/mindmap_to_xmind,如果有兴趣,可以去看看,核心代码如下,没有太复杂的东东。

import jsonimport xmindimport sysimport os

def convert_mindmap_xmind(input_file, save_file): data_dict = {} # 将节点保存到字典中 with open(input_file, \\’r\\’, encoding=\\’utf-8\\’) as f: json_data = json.load(f) for node in json_data[\\’nodes\\’]: data_dict[node[\\’id\\’]] = { \\’id\\’: node[\\’id\\’], \\’parentid\\’: node[\\’parentid\\’], \\’topic\\’: node[\\’topic\\’], \\’sub_topic\\’: {}, }

data_root = None for val in data_dict.values(): if val[\\’id\\’] == \\’root\\’: data_root = val # 保存根节点 elif n := data_dict.get(val[\\’parentid\\’]): # 当前节点挂到父节点下 n[\\’sub_topic\\’][val[\\’id\\’]] = val if data_root is None: print(\\’数据有误,没有找到根节点\\’) return # print(json.dumps(data_root)) # 可以打印看看结果

if os.path.exists(save_file): os.remove(save_file) # 目标文件存在则删除

mind = xmind.load(save_file) sheet1 = mind.getPrimarySheet() # 获取sheet并设置名称为输入文件名 sheet1.setTitle(os.path.basename(input_file)) root1 = sheet1.getRootTopic() # 设置属性为: 逻辑图(向右), 和有道云笔记保持一致 root1.setAttribute(\\’structure-class\\’, \\’org.xmind.ui.logic.right\\’)

def set_topic(root, val_data): root.setTitle(val_data[\\’topic\\’]) for sub_val in val_data[\\’sub_topic\\’].values(): set_topic(root.addSubTopic(), sub_val) set_topic(root1, data_root) # 递归设置子节点

xmind.save(mind, save_file)

if __name__ == \\’__main__\\’: if len(sys.argv) != 3: print(f\\’usage: {sys.argv[0]} input.mindmap save.xmind\\’) exit(0) convert_mindmap_xmind(sys.argv[1], sys.argv[2])

最终效果,上面那个有道云笔记的结构完美转换为下面的xmind,然后就可以通过xmind导出成各种格式,满足大家的所有需求了。

总结

生活中有很多技巧都需要我们去发现,并找到解决方案。想一想自己的需求是不是大家的需求,如果是那就有解决的价值。反正我有了这个方案就可以放心地在有道云笔记上写脑图了。如果需要发布给其他人看,就通过我的这个项目导出成xmind,然后通过xmind导出成各种格式文件。

本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
投稿

查询个人社保缴费明细(查询个人社保的方法)

2025-5-24 9:33:17

投稿

英雄联盟加速器排名(有没有免费的英雄联盟加速器)

2025-5-24 9:33:25

搜索