免費好用的云筆記 免費的云筆記軟件推薦



文章插圖
免費好用的云筆記 免費的云筆記軟件推薦

文章插圖
有道云筆記有腦圖功能,我平時經常用到,之所以很少用到其他腦圖工具,是因為我一直用有道云筆記寫筆記 。因此編輯腦圖和查看腦圖比較方便,但是需要將腦圖導出的時候目前只支持圖片和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 osdef convert_mindmap_xmind(input_file, save_file):data_dict = {}# 將節點保存到字典中with open(input_file, 'r', encoding='utf-8') as f:json_data = http://www.mnbkw.com/jxjc/176385/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導出成各種格式文件 。