keep2logseq.py
nogajun
Google KeepのJSONファイルをLogseqのMarkdownに変換する
Google KeepからエクスポートしたJSONファイルをlogseqのjournal用のMarkdownに変換します。
journalとして取り込むのは、logseqがインポートしたファイルの時間をインポートできないからです。あと、Linuxでしか使っていないのでWindowsやMacで使えるかわからないです。
usage
python keep2logseq.py -o (logseqのjournalフォルダ) Takeout/Keep/*json
keep2logseq.py
import json
import argparse
import sys
import os
import datetime
def main(args):
for i in args.infile:
print(i.name)
# JSON読み込み
data = json.load(i)
# ごみ箱かアーカイブは処理しない
if (data["isTrashed"] is True) or (data["isArchived"] is True):
continue
# 作成日時
create_date = int(data["createdTimestampUsec"]) // 1000000
cdate = datetime.datetime.fromtimestamp(create_date).date()
ctime = datetime.datetime.fromtimestamp(create_date).time()
# ファイル名に日付をセット
epath = args.output
efile = str(cdate).replace("-", "_")
expfile = "{}/{}.md".format(epath, efile)
# リストに出力データをセットする
expdata = []
# タイトル追加
title = ""
if "title" in data:
title = data["title"]
expdata.append("- {} ({})\n".format(title, str(ctime)))
# タグ追加
tags = ""
# ピン止めされてたらタグ出力
if data["isPinned"] is True:
tags += "#isPinned "
# ラベルがあったらタグで出力
if "labels" in data:
for j in data["labels"]:
tags += "#{} ".format(j["name"])
expdata.append("\t- {}\n".format(tags))
# コンテンツ追加
if "textContent" in data:
expdata.append("\t- ```text\n{}\n\t ```\n\t- \n".format(data["textContent"]))
# 添付ファイル追加
if "attachments" in data:
fp = data["attachments"][0]["filePath"]
expdata.append("\t- ![{}](../assets/{})\n".format(fp, fp))
with open(expfile, mode="a") as f:
f.writelines(expdata)
parser = argparse.ArgumentParser(description="Convert Google Keep JSON file to Logseq Markdown file.", add_help=True)
parser.add_argument("-o", "--output", default=os.path.dirname(__file__), help="Output directory")
parser.add_argument("infile", type=argparse.FileType("r"), default=sys.stdin, nargs="+", help="Google Keep json (.json)")
args = parser.parse_args()
main(args)