leanote使用本地账户+坚果云同步

时间:2022-03-30 10:52:40

1. 换机器后笔记无法显示

这是因为新建账户与原账户userid不一致。 
正确的同步方式为:

  • 下载leanote并解压,不运行,不新建账户
  • 从坚果云同步leanote数据
  • 创建leanote的数据目录,建立软连接指向坚果云中的真实数据
  • 运行leanote

总之,在既有的多个机器上同步leanote笔记,每次开工前应该先用坚果云同步数据,同步完成后再打开leanote,否则会数据冲突!

2. 从Linux到Windows图片无法显示

这是因为系统路径不一样。查看leanote/nedb55/(userid)/images.db文件可一窥究竟。 
windows图片路径前缀为C:\\Users\\Ting\\AppData\\Roaming/leanote/data/(userid)/images/, linux为/home/wy/.config/leanote/data/(userid)/images/
写了个python脚本实现转换:

# -*- coding: utf-8 -*-
'''
python t.py win 即可将文件路径转变为Windows系统下的路径;
python t.py linux 即可转为Linux系统下的路径。
'''
import json
import sys
def store(mylist):
with open('images.db', 'w') as f:
for line in mylist:
f.write(json.dumps(line)+"\n")
def load():
mylist=[]
with open('images.db') as f:
for line in f.readlines():
mylist.append(line)
return mylist
if __name__ == "__main__":
if(len(sys.argv)!=2):
print("input an arg: win OR linux")
sys.exit(1)
prefix=""
if(sys.argv[1]=="win"):
prefix="C:\\Users\\Ting\\AppData\\Roaming/leanote/data/5a00fbf54dc7275b64000000/images/"
elif(sys.argv[1]=="linux"):
prefix="/home/wy/.config/leanote/data/5a00fbf54dc7275b64000000/images/"
else:
print("arg error!")
sys.exit(1)
mylist=load()
reslist=[]
# print(type(mylist)) # <type 'list'>
for line in mylist:
#print("000:" + line)
#print(type(line)) # <type 'str'>
json_line=json.loads(line)
# print(type(json_line)) # # <type 'dict'>
file_name=json_line["Name"]
path=prefix + file_name
json_line["Path"]=path
#print("111:" + str(json_line))
reslist.append(json_line)
store(reslist)
print("done!")

另外,既然使用本地账户,就删除images.db文件中ServerFileId的对应内容。