用Momento导入
安装了一个Momento,主要的目的是用它导出Twitter的内容,然后方便导入到DayOne。不过Twitter官方的限制是第三方应用最多只能导入近期的3200条。用Momento把Twitter导出成一个txt文件,然后用Day One for Mac全部导入。导入前因为日期格式问题需要暂时把系统语言改成英文。
提Momento是因为想法是从它开始的,但是有点小憋屈,还有那么多推文能不能导入到DayOne里呢?答案是肯定的,DayOne官网也提供了一些解决方案,但是一看到要装xcode、要安装命令行工具就放弃了,还是用传统的TXT导入方式更简单。无非就是识别的格式问题需要“格式化”。
Twitter的官方备份
Twitter官网提供备份下载功能,登录其Web页面由设置页里就可以下载,具体的就不啰嗦了。
下载下来的压缩包中有一个包含所有数据的csv文件,琢磨着对照DayOne导出的TXT文本格式,看能不能自己格式化一下csv的数据,当然首先需要把csv粗加工一下。用Number打开csv文件,仅保留timestamp列和text列,其他的列都删除,去掉第一行的标题行,完成后导出成新的csv文件。
用正则表达式加工
用Sublime Text 2一类的编辑器打开这个文件,同时从DayOne随便选一天的日记导出,也用编辑器打开作为参照。
剩下的工作就看「正则表达式」的了。
正则表达式平时用的很少,很多语法我也是现学现卖,根据需要过滤和定位的内容找合用的语法命令。
首先在每一行之间加空行,否则影响识别,搜索`(^\d{4}.*)`替换为`$1\n`,然后是修改时间格式顺便加一个间隔行,搜索`:\d{2} \+\d{4},`替换成`\n`
接下来需要在日期前加上“Date: ”,这样就符合DayOne的导入要求了。搜索`(^\d{4})(-\d{2}-\d{2}.\d{2}:\d{2}$)`替换成`\n\tDate:\t$1$2\n`,检查一遍有没有遗漏,另存命名成TXT格式就可以了。
导入到DayOne
DayOne这边,通过菜单“File”-“Import”打开准备好的TXT文件就可以开始导入了,不过需要提醒你的是,在确认前不妨验看一下预览的内容,如果觉得不妥当还可以把准备导入的TXT切分一小段记录出来,先验证导入结果,最后再导入剩下的内容。
貌似超过5000条导入的时候DayOne识别也有问题,会只识别为一条,这种情况可以把txt切分成小一点的文件;
要判断导入的天数和TXT中的是否一致,可以在文本编辑器中搜索“Date:”这样的字符串,看搜索结果和DayOne导入时显示的条目数量是否一致
提示
遇到导入不成功的时候,可以把TXT按时间段切分成几个部分来判断哪一处的文本中有问题,先切一半,然后继续一半的一半,以此类推就能很快定位到出问题的字符串。
如果已经用Momento导入过一部分,在最终导入前在文本编辑器中定位到具体的日期,将已导入日期以前的删除,避免重复。
在编辑器中整理删除没必要导入的项效率更高。
每个日期后都需要有一个内容段落,如果是孤立的会导致导入失败。
如果发现导入大量有问题的日记,可以到iCloud本地保存DayOne文件的地方 ~~/Library/Mobile Documents/***~com~dayoneapp~dayone/Documents/Journal_dayone/entries/ 按日期排序,将导入时间点的日记文件选中删除即可。