我的烦恼

有道云笔记有脑图功能,我平时经常用到,之所以很少用到其他脑图工具,是因为我一直用有道云笔记写笔记。因此编辑脑图和查看脑图比较方便,但是需要将脑图导出的时候目前只支持图片和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 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导出成各种格式文件。

无需会员将有道云笔记脑图转换xmind的更多相关文章

  1. 有道云笔记配合MPic+七牛云 自制MarkDown文档图床(适用Typora)

    注:从有道云笔记v6.5开始,有道云笔记会员可以使用MarkDown有道自带的图床.(但是非会员可以采用下面的七牛云图床+MarkDown方法) 0x00 前言 一直用有道云笔记,粘贴图片,做笔记没问 ...

  2. 无需脑图 无需思维导图 看Word大纲视图

    大纲视图可以帮助我们大纲视图可帮助您管理文档的结构和标题,就像现在的脑图,经过我的使用后,可以说Word的分级功能非常强大,只恨当时理解的不够,误会了Word.   当我们决定写一个文档的时候,第一步 ...

  3. 有道云笔记新功能发现——有道云笔记剪报,完美解决不开会员保存csdn博客到本地的问题。

    怎么用 方法一:谷歌插件 方法二:http://note.youdao.com/web-clipper-chrome.html 添加到书签 功能: 能够把网页浏览的内容保存到有道云笔记 解决了自己的难 ...

  4. 有道云笔记 - Markdown模板(文首附markdown源码,即.md文件)

    有道云笔记 - Markdown模板 附 本文的Markdown源码镜像: https://github.com/yanglr/AlgoSolutions/blob/master/Youdao_Not ...

  5. 有道云笔记Markdown上传本地图片的方法

    有道云笔记截图&保存   方法有多种,例如:开通有道云笔记VIP会员.先将图片文件上传到有道云笔记后使用图片的分享链接.说到底还是使用的 Markdown 的图片功能 ![图片名称](图片链接 ...

  6. [转]有道云笔记markdown

    作为半个文字工作者,一天当中,一半时间用在遣词造句,一半时间则在死磕排版.当听说“前所未有的极简语法”Markdown,不仅能简化排版.大大提高书写效率,而且上手零门槛.好奇宝宝怎么忍得住一颗蠢蠢欲动 ...

  7. [简明版] 有道云笔记Markdown指南

    使用有道词典配合Markdown,可以快速准确做出美观精致的笔记,下面我们来看一下如何使用有道词典的MarkDown功能. 什么是Markdown?Markdown是一种轻量级的「标记语言」,通常为程 ...

  8. 使用有道云笔记还是github写笔记的优缺点对比

    有道云笔记的优点 在手机上编辑笔记,有道云的体验更好,建议:新建普通类型笔记而不是markdown笔记,因为md在手机上的编辑体验并不好 插入图片方便无需考虑图床 可以把笔记分享到社交平台(QQ,微信 ...

  9. naotu.baidu.com 非常棒的脑图在线工具

    1.png 2.txt 短租 前台功能 房源查看 房源搜索 城市房源 注册登录 预定房源 房源退订 在线支付 评价房源 个人中心 我的订单 我的账户 我的收藏 消息通知 管理员后台 房源发布 会员管理 ...

随机推荐

  1. TortoiseGit生成.PPK拓展名的密钥

    在TortoiseGit 运行目录下找到puttygen.exe 工具 运行puttygen.exe genertate :代表动态生成新的内容 load :导入旧的密钥 save private k ...

  2. linux跨文件复制粘贴

    跨文件是这样的: 复制a.txt的第20行至第30行到b.txt中vi a.txt:2010yy:e b.txtp

  3. 如何提高CRM系统使用率?

    随着时代的发展和市场的变化,客户在企业的眼中开始变得越来越重要.谁拥有更多的客户,谁就能在激烈的市场竞争中占据一席之地.现在很多企业通过CRM系统转变为了"以客户为中心".但是,许 ...

  4. [bug] org.apache.spark.sql.AnalysisException: Table or view not found spark

    参考 https://blog.csdn.net/weixin_44634893/article/details/89629399

  5. 优麒麟使用教程第三期:Windows 平台 U 盘启动盘制作

    优麒麟使用教程第三期:Windows 平台 U 盘启动盘制作 发布时间:2019-06-27 09:00:15 点击次数:2847 在前几期教程中,小编介绍了如何在虚拟机中安装和使用优麒麟,接下来,小 ...

  6. X Sever —— Xorg

    X Sever -- Xorg  发表于 2020-03-20 分类于 系统服务 , Xorg 阅读次数:39 阅读次数:48 本文字数: 7k 阅读时长 ≈ 6 分钟 Xorg:基于X11协议的服务 ...

  7. Web网站实现用户认证访问(加密访问)

    Web网站实现用户认证访问,有效减少流量的访问,具体的实现步骤如下: 我们使用httpd作为测试对象,体现安装好httpd服务,并且可以在浏览器访问测试首页(可以关闭防火墙:如果不关闭防火墙,则需要开 ...

  8. 关于STM32的可编程电压检测器的使用方法

    关于STM32的可编程电压检测器的使用方法 思维导图总览: 代码: 1 #include "sys.h" 2 #include "delay.h" 3 #inc ...

  9. Centos7 docker容器启动后添加端口映射

    docker容器启动后添加端口映射的两种方法: 一.通过修改防火墙策略添加端口映射 docker容器已创建好,但是想在容器内配置tomcat监控,需要新的端口去访问,但是映射时没有映射多余端口,此时, ...

  10. 《Java架构师的最佳实践》生产环境JVM调优之空间担保失败引起的FullGC

    1  问题现象 应用prod-xxx-k8s,在内存足够的情况下,仍然会产生偶发FullGC的问题. JVM配置如下: -Xmx8192m -Dhsf.server.max.poolsize=2500 ...