本文由 钟意 发布于:,更新于:

Flomo浮墨数据迁移至Memos

碎碎念

以前喜欢捣腾笔记软件, 然在两年前遇到 Flomo (一款功能相当简约毫不起眼的APP)。
一年后我发现我使用它的频率是所有笔记APP里最高的! (最长是Obsidian)

然后被 Cubox 取代, 诚然也有可能是 Flomo 过期我没续费。

今年初看到memos项目, 便萌生了继续使用Flomo(用memos代替)。因为 Cubox 更多的是琐碎时间浏览到需要的资料或者感兴趣的资料,
就转发到 Cubox 里面, 抽空再整理 Cubox 即可。Cubox 不太适合记录突发奇想、文摘、待办事项、感悟等内容。

这篇便是实现年初的想法, 把flomo全部数据转到memos! 开工!

  • 2023.8.18修改适配Memos的0.14版本
  • 2023.8.18修改支持创建时间一致
  • 2024.2.10修改适配Memos的0.19版本
    • 但是这次不支持时间同步,设置的时间参数不被memos接收

迁移思路

实现挺简单的, 但在git没看到完整的轮子, 便自己完善

  1. 将flomo浮墨导出的数据转成json文件 (这步其实有一个轮子flomoParse
    ,但让使用的人不用折腾两个不同语言项目就一起写成了python代码)
  2. 读取json文件将内容和附件图片等通过API上传到自己的memos

实现方法

实现在这里就不赘述, 代码比较明了。中途倒是遇到一个 python 实现 multipart/form-data; boundary={boundary} 切片上传(
直接上传整个图片文件会限制大小)的小问题 有空记录一下。

multipart切片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def upFile(filePath):
boundary = '----ThatCoder.cn' # 切片标识符
fileName = filePath.split('/')[-1]
with open("flomo/" + filePath, "rb") as f: # 读取二进制文件内容
file_data = f.read()
# payload的encode()一个也不能删!!!
payload = f'--{boundary}\r\nContent-Disposition: form-data; name="file";'.encode()
payload += f'filename="{fileName}"\r\nContent-Type: {getType(fileName)}\r\n\r\n'.encode()
payload += file_data
payload += f'\r\n--{boundary}--'.encode()
headers = Headers
headers['Content-Length'] = str(os.path.getsize("flomo/" + filePath))
headers['Content-Type'] = f'multipart/form-data; boundary={boundary}'
response = requests.post(ApiBlob, headers=headers, data=payload) # files参数上传方案 requests_toolbelt包
return response.json()

使用方法

项目README有图文讲解, 本篇用来防止提问的人(大概率没有)找不到地方。
项目地址: FlomoToMemos

PS: 注意对应memos版本的分支

浮墨浅谈

少楠
Flomo共建群

昔者时光溢畅,余悠然自得,好炼煉微型软件。遇上浮墨,其简洁明了,且颜值甚高,遂投身其共修群聊。见开发者努力谋取,且妙趣横生,群友问题皆一一回复,群谈也和蔼可亲。证明喜欢一项产品,一部分为赏识开发团队之风采与行事方式。惟后来,再无后续之因缘。( GPT)

本站由 钟意 使用 Stellar 1.25.0 主题创建。
又拍云 提供CDN加速/云存储服务
vercel 提供托管服务
湘ICP备2023019799号-1
总访问 次 | 本页访问