我使用 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,否则可能就没法像今天这样轻松地迁移数据了。