duck2logseq.py

nogajun
nogajun

Duck noteのJSONファイルをLogseqのMarkdownに変換する

Duck noteからエクスポートしたJSONファイルをlogseqのjournal用のMarkdownに変換します。

journalとして取り込むのは、logseqがインポートしたファイルの時間をインポートできないからです。あと、Linuxでしか使っていないのでWindowsやMacで使えるかわからないです。

usage

python duck2logseq.py -o (logseqのjournalフォルダ) localdb.json

duck2logseq.py

import json
import argparse
import os
import datetime

def main(args):
    f = args.infile[0]
    data = json.load(f)

    epath = args.output

    for i in data["messages"]:
        # 作成日時
        create_date = int(i["createdAt"]) // 1000
        cdate = datetime.datetime.fromtimestamp(create_date).date()
        ctime = datetime.datetime.fromtimestamp(create_date).time()
        # ファイル名に日付をセット
        efile = str(cdate).replace("-", "_")
        expfile = "{}/{}.md".format(epath, efile)

        # リストに出力データをセットする
        expdata = []
        # コンテンツ追加
        expdata.append("- ({})\n".format(ctime))
        expdata.append("\t- ```text\n{}\n\t  ```\n\t- \n".format(i["body"]))

        # 出力
        with open(expfile, mode="a") as f:
            f.writelines(expdata)

parser = argparse.ArgumentParser(description="Convert Duck note 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="localdb.json", nargs=1, help="Duck note json (.json)")
args = parser.parse_args()

main(args)