我的烦恼

有道云笔记有脑图功能,我平时经常用到,之所以很少用到其他脑图工具,是因为我一直用有道云笔记写笔记。因此编辑脑图和查看脑图比较方便,但是需要将脑图导出的时候目前只支持图片和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 json
import xmind
import sys
import osdef 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 = Nonefor val in data_dict.values():if val['id'] == 'root':data_root = val  # 保存根节点elif n := data_dict.get(val['parentid']):# 当前节点挂到父节点下n['sub_topic'][val['id']] = valif 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导出成各种格式文件。

无需会员将有道云笔记脑图转换xmind相关推荐

  1. 我用过的最好脑图工具——Xmind(含安装包)

    已经有好长的一段时间没写博客了,一方面是因为快期末了,令一方面是最近都拿Xmind做笔记.通过脑图能够前后联系,写出来的东西都很系统,也方便理解 Xmind安装包: 链接:https://pan.ba ...

  2. 脑图神器 XMind ZEN

    脑图神器 XMind ZEN 文章目录 脑图神器 XMind ZEN 零.序 一.简介 二.使用 2.1.外观 2.2.强大的快捷键 1.鼠标移动 2.新建同级主题 3.修改标题 4.画布大小切换 5 ...

  3. linux版本的xmind怎么安装教程,Linux下安装脑图软件XMind的步骤

    Linux下安装脑图软件XMind的步骤 2009-12-28 22:14:35   出处:https://www.yqdown.com 1 在http://www.xmind.net/ 下载文件.下 ...

  4. 关于有道云笔记中脑图展示问题的研究

    进来因为需要做脑图,所以,对现有的脑图软件进行了研究.自然,传统的脑图软件,一直稳定,没有什么争议.但是现在所有的资料都放在云端,自然也希望自己创作的脑图也能存储在云端.这样只要一个账号登陆,所有的资 ...

  5. 【福利】有道云笔记免费送30天VIP会员,有道云笔记功能优缺点汇总

    最近各种平台都推出了针对疫情在家远程办公的福利活动,道理都懂,远程办公是未来的趋势,趁这波占有市场抢夺用户没毛病.有道云笔记也送出了30天的免费vip会员,VIP功能如下图所示: 虽然我已经渐渐将笔记 ...

  6. 华为的花币有用吗?有的!腾讯视频会员、有道云笔记会员都可以买

    什么是花币? 花币是华为官方系统提供的一种虚拟货币,类似与腾讯的Q币,可以在会员中心-我的中查看 花币可以做什么? 花币一共有八种用途: 购买华为云空间 在应用市场中可以购买部分软件或软件会员 开通华 ...

  7. 在CentOS7中安装思维脑图软件XMind

    1. 登陆xmind官网,下载deb安装包:http://www.xmind.net/download/linux/ 2. 解压deb包,得到data.tar.gz 和control.tar.gz 两 ...

  8. 强烈推荐脑图软件 xmind

    大家可能都用freemind 这次推荐xmind, 是基于eclipse RCP 做的,也有eclipse的 plugin 功能很强悍,好的话就顶吧,推荐给你的朋友玩. http://www.xmin ...

  9. 有道云笔记新版上线 深化本土应用合作

    有道云笔记桌面版与Android版升级至2.1版.升级后的有道云笔记桌面版可支持QQ账号与腾讯微博账号登录,并可导入多个账号的笔记内容,Android版增加笔记本二级目录功能.同时有道云笔记通过API ...

最新文章

  1. spdlog源码阅读 (1): sinks
  2. ubuntu 安装nginx,php,mysql。常见错误解决
  3. python中字符串的方法及注释
  4. 从零开始学python数据分析-【01】从零开始学Python—数据分析与挖掘概述
  5. Linux - Sysstat [ All-in-One System Performance and Usage Activity Monitoring Tool For Linux]
  6. python 爬虫爬取小说信息
  7. android 360加固 例子,[原创]利用VirtualApp实现360加固的soHook简单例子
  8. Java高并发编程详解系列-线程生命周期观察者
  9. php smarty thinkphp,用新版的thinkphp3.2.3和新版的smarty3.1.29
  10. 简述导线平差计算的五个步骤_RTK技术导线测量和全站仪导线测量有什么区别?...
  11. FastDFS服务器搭建
  12. Docker容器的数据卷备份与恢复
  13. Python入门--字符串内容对齐操作center,ljust,rjust,zfill
  14. 运动目标跟踪(十二)--KCF跟踪及CSK,CN对比
  15. n卡驱动登录不上去_鲜牛加速器:PubgLite报错问题解决方法汇总(附N卡优化及滤镜)...
  16. pc端js在线预览Word、Excel
  17. python手机端抢票大麦网_大麦网抢票攻略1.0
  18. 简历包装严重,作为面试官,我是如何甄别应聘者的包装程度
  19. MySQL InnoDB 锁
  20. ssm在线教学质量评价系统毕业设计源码141550

热门文章

  1. Windows10关于拨号上网热点分享的操作
  2. 初学EGE图形库(零)---从零开始CodeBlocks安装配置使用EGE图形库
  3. 3.9 编写程序,模拟石头剪刀布游戏。程序随机产生一个数,这个数为2、1或0,分别表示石头剪刀和布。
  4. Web全栈工程师修养
  5. 记录下XPO生成的SQL语句
  6. 苹果怎么付费购买内存_苹果怎么清理隐藏内存?手机恢复如初都靠它了
  7. HD钱包(身份钱包)简介
  8. iOS视频播放全屏效果实现
  9. Python Web开发:Django+BootStrap实现简单的博客项目
  10. NodeJS Warning: Accessing non-existent property ‘padLevels‘ 解决办法