マークダウンをscrapbox記法にする
作成者・問い合わせ先
概要
ある程度体裁を整えながらできます
これをしたらコピペをするだけ!
今回はnotionからエクスポートしたマークダウンファイルをいじってます
注意点
amixedcolorが今回書いたnotionだったからっていう依存部分がある
BASE_DIRパスの最後にはスラッシュ「/」を入れる
がんばったポイント
コードブロックの中身もコピペだけで反映されるように、コードブロックの中身だけ各行の冒頭にスペース追加した
順序付き、無しリスト共に、インデントの深さを保持したまま置換されるようにした
表も、ネストを入れた箇条書きになるようにした
code: python
from glob import glob
import re
BASE_DIR = "変換したいマークダウンのファイルが入ったフォルダへのパス/"
def replace_title(file) :
file = re.sub(r"#\s#(\d+\s.+)", r"****\1", file) return file
def replace_header(file) :
file = re.sub(r"###\s(.+)", r"\1", file)
file = re.sub(r"##\s(.+)", r"\1", file)
file = re.sub(r"#\s(.+)", r"\1", file)
return file
def replace_link(file) :
return file
def replace_code(file) :
file_splitted = file.split("`")
for i, seq in enumerate(file_splitted) :
if i%2 == 0 : continue
code = seq.replace("\n", "\n ")
# print(code)
file = "`".join(file_splitted)
file = re.sub(r"`(.+)", r"code: \1", file)
file = re.sub(r"`\n", r"", file)
return file
def replace_ul(file) :
file = re.sub(r" -\s(.+)", r" \1", file)
file = re.sub(r"-\s(.+)", r" \1", file)
return file
def replace_ol(file) :
file = re.sub(r" \d.\s(.+)", r" \1", file)
file = re.sub(r"\d.\s(.+)", r" \1", file)
return file
def replace_table(file) :
file = file.replace("| -- | --- |", "")
file = re.sub(r"\|\s(\S+)\s\|\s(\S+)\s\|", r" \1\n \2\n", file)
return file
def replace_bold(file) :
file = re.sub(r"(.*) \*\*(.+)\*\* (.*)", r"\1\2\3", file)
return file
def remove_empty_line(file) :
file = '\n'.join(filter(lambda x: x.strip(), file.split('\n')))
return file
if __name__ == "__main__" :
file_path_li = glob(BASE_DIR + "*.md")
# print(file_path_li)
for file_path in file_path_li :
file = ""
with open(file_path, "r") as f :
file = f.read()
file = replace_title(file)
file = replace_header(file)
file = replace_link(file)
file = replace_code(file)
file = replace_ul(file)
file = replace_ol(file)
file = replace_table(file)
file = replace_bold(file)
file = remove_empty_line(file)
name = file_path.split("/")-1.split(".")0 + ".txt" with open(BASE_DIR + "/scrapbox_" + name, "w") as f :
f.write(file)