コマンドラインからテキストをジャーナリングできるjrnlというアプリを使用してDayOneのエントリーを読み書きする方法のメモ.
MacであればDayOneオフィシャルのコマンドラインツールが使用できるので,それ以外の端末からDayOneエントリーを操作したい人向けです.
jrnlのインストールと起動
$ sudo pip install jrnl
$ jrnl
Path to your journal file (leave blank for ~/journal.txt):
Enter password for journal (leave blank for no encryption):
[Compose Entry]
初回起動時に保存先とパスワードを聞かれますが無入力で良いです.この設定は~/.jrnl_config
にて変更が可能です.
DayOneのエントリーを統合する
~/.jrnl_config
のjournals
キーを以下のように変更.
"journals": {
"default": "/path/to/Journal.dayone/"
}
Journal.dayone
はDayOneのエントリーを保存しているフォルダであり,DayOneの同期先によって異なります.例えばDropboxで同期している場合は/path/to/Dropbox/Apps/Day\ One/Journal.dayone
のようになります.
KeyError:'Time Zone'が出るとき
最新のバージョンのDayOneではすべての新規エントリーにタイムゾーンが付与される仕様になっていますが,古いエントリーにタイムゾーンの情報が付与されていないとき,それが原因でエラーが出ます.(jrnl1.4.2で確認.今後修正されるかも)
File "/usr/local/lib/python2.7/dist-packages/jrnl/Journal.py", line 316, in parse
timezone = pytz.timezone(dict_entry['Time Zone'])
KeyError: 'Time Zone'
jrnlを起動した際に上のようなエラーが出るときはsudo emacs /usr/local/lib/python2.7/dist-packages/jrnl/Journal.py
でエディタを開き,以下のように編集します.
def parse(self, filenames):
"""Instead of parsing a string into an entry, this method will take a list
of filenames, interpret each as a plist file and create a new entry from that."""
self.entries = []
for filename in filenames:
with open(filename, 'rb') as plist_entry:
dict_entry = plistlib.readPlist(plist_entry)
try:
timezone = pytz.timezone(dict_entry['Time Zone'])
- except pytz.exceptions.UnknownTimeZoneError:
+ except :
timezone = pytz.timezone(util.get_local_timezone())
jrnl1.4.2でできること
- 最近追加したエントリーを3件表示
jrnl -n 3
- すべてのエントリーのタイトルのみ表示
jrnl -short
- エントリーを追加
jrnl [Compose Entry] # Enterで入力終了
- 日時とタグを指定してエントリーを追加
jrnl yesterday: 鳩のえさやり @公園
jrnl1.4.2でできないこと
- 過去エントリーの編集,削除(jrnlを経由せずに
Journal.dayone
フォルダー内の.doentry
ファイルを直接編集/削除は可能ですが,同期したMacやiPhoneで操作したほうが良いです.) - エントリーにメディア(画像,音声など)を追加する
- エントリーの付与されたメディアを表示する