我使用 Mydiary 这个日记 app 好多年了,至今里面的日记有几百篇。
但是这个 app 的最后一次更新,是在 2017 年,虽然在现在最新的 Android 15 手机上,还可以正常使用,但我一直想寻找更好用的替代品。
我对于新的日记软件,最主要的需求是:
终于,我找到了《侠客日记》。
我简单了解一下,发现它不仅满足我的需求,而且还有很多亮点。例如支持 webdav 备份、多平台客户端、使用 markdown 语法……
所以我决定将原本的日记内容,迁移过来。
实际操作
首先在 Mydiary 导出数据,得到一个 zip 压缩包,里面是一个 backup.json 文件。
我接着研究「侠客日记」的导出导入,然后得知,只要把旧的日记数据,处理转换为一篇篇的 md 文件,再把它们压缩到一个 zip 压缩包里,就可以导入到「侠客日记」中。
于是我是弄了一个 python 脚本,来将 backup.json 转换为多个 md 文件的。脚本内容如下。
# -*- coding: utf-8 -*- import json import os from datetime import datetime
 
  def extract_diaries(json_data):     # 解析JSON数据     data = json.loads(json_data)
      # 获取日记主题列表     for topic in data['backup_topic_list']:         if topic['topic_type'] == 1:  # 1表示日记类型             diaries = topic['diary_topic_entries_list']             break
      # 创建output文件夹存放日记     if not os.path.exists('output'):         os.makedirs('output')
      # 处理每篇日记     for diary in diaries:         # 转换Unix时间戳为日期时间格式         timestamp = diary['diary_entries_time'] / 1000  # 转换为秒         dt = datetime.fromtimestamp(timestamp)         filename = dt.strftime("%Y%m%d%H%M%S") + ".md"
          # 构建日记内容         content = f"# {diary['diary_entries_title']}\n\n"         # content += f"- 日期: {dt.strftime('%Y-%m-%d %H:%M:%S')}\n"         # if diary['diary_entries_location']:         #     content += f"- 地点: {diary['diary_entries_location']}\n"
          # 添加日记条目内容,并确保换行符合Markdown规范(\n\n)         for item in diary['diary_item_list']:             if item['diary_item_type'] == 0:  # 0表示文本内容                 # 替换单换行符为双换行符(符合Markdown段落要求)                 item_content = item['diary_item_content'].replace('\n', '\n\n')                 content += f"\n{item_content}\n"
          # 写入文件         with open(os.path.join('output', filename), 'w', encoding='utf-8') as f:             f.write(content)
          print(f"已保存日记: {filename}")
  # 执行提取 with open('backup.json', 'r', encoding='utf-8') as f:     json_data = f.read() extract_diaries(json_data)
   | 
 
幸好当初选择的是一个,开源并且可以轻松导出数据的日记 APP,否则可能就没法像今天这样轻松地迁移数据了。