手机上做笔记的app推荐(免费云笔记哪个好用)
有道云笔记有脑图功能,我平时经常用到,之所以很少用到其他脑图工具,是因为我一直用有道云笔记写笔记。因此编辑脑图和查看脑图比较方便,但是需要将脑图导出的时候目前只支持图片和xmind,但是需要开会员,由于囊中羞涩,所以我想了别的方案。
解决方案
我找到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导出成各种格式文件。
-
无相关信息
- 1bat的大数据(BAT的大数据来源)
- 2三星s8屏幕上端2(三星s8屏幕上端2个按键)
- 3三星屏幕坏了如何导出(三星屏幕摔坏了如何导出数据么)
- 4红米3x怎么关闭自动更新(红米k40s怎么关闭自动更新)
- 5微信上防止app自动下载软件怎么办(微信上防止app自动下载软件怎么办啊)
- 6押镖多少钱(押镖一个月有多少储备金)
- 7瑞星个人防火墙胡功能(瑞星个人防火墙协议类型有哪些)
- 8cf现在等级是多少(cf等级2020最新)
- 9老滑头多少条鱼(钓鱼老滑头有什么用)
- 10WPS自动调整语法(wps如何修改语法)
- 11dell控制面板防火墙(dell的防火墙怎么关闭)
- 12丑女技能升多少(丑女技能需要满级吗)
- 13智能家居系统怎么样(智能家居系统好吗)
- 14戴尔屏幕(戴尔屏幕闪烁)
- 15y85屏幕信息(vivoy85息屏显示时间怎么设置)
- 16魅蓝note3屏幕出现方格(魅蓝note屏幕竖条纹)
- 17v8手指按屏幕(触屏手指)
- 18金为液晶广告机(液晶广告机lb420)
- 19三星显示器怎么校色(三星显示器 调色)
- 20hkc显示器dvi音频(hkc显示器有音响么)
- 21康佳液晶智能电视机(康佳液晶智能电视机怎么样)
- 22做液晶画板电脑(做液晶画板电脑怎么操作)
- 23液晶屏极化现象原理(液晶屏极化现象原理是什么)
- 24企业网络安全防火墙(企业网络防护)
- 256splus黑屏屏幕不亮(苹果6s plus屏幕突然黑屏)
- 26充电导致屏幕失灵(充电导致屏幕失灵怎么办)
- 27超极本屏幕旋转(笔记本电脑屏幕旋转,怎么转过来?)
- 28igmp防火墙(防火墙配置ipv6)
- 29荣耀王者多少经验(王者荣耀经验多少一级)
- 30lol老将还剩多少(qg老将)