Upload files to "export_tools"
Some checks failed
build / build (push) Has been cancelled

Add note splitting tool
This commit is contained in:
justine 2025-01-30 14:50:04 +01:00
parent 82cee5b15c
commit 471f4c59e6

91
export_tools/notesplit.py Normal file
View File

@ -0,0 +1,91 @@
#!/usr/bin/env python3
#coding: utf-8
#!---------- notesplit.py ----------
# Used for splitting notes extracted from my note-taking webapp
# into single markdown files.
# It was a good run but I am switching to obsidian.
#-----------------------------------!
#----------! FUNC
def get_args():
'''Gets all the arguments passed to the script and returns them in a parse_args()-type object.
No args
Returns:
-args : an args object containing all the optional arguments passed to the script.
'''
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-f", "--file", help = "File to split", action="store", type=str, required=True)
parser.add_argument("-d", "--dest", help = "Folder to put the resulting files in - will overwrite anything already there !", action="store", type=str, required=True)
#Creating the args object
args=parser.parse_args()
return args
def filesplit(file: str):
'''Split the extract file and return a dict name.md : text of the note
takes the path of the file
'''
import re
with open(file, "r") as contents:
contents = contents.read()
res = {}
contents = re.split(r'[^\-]\-\-\-\-\-[^\-]', contents)
i = 0
for note in contents:
n = note.splitlines()
title = f"untitled_{i}"
i += 1
for line in n:
if line.startswith("#"):
title = line[1:]
print(f"FOUND TITLE {title} in {line}")
break
res[title] = note
return res
def sanitize(title):
'''Take a notetitle and make it a valid filename. Add md extension.
'''
title = title.replace("/", "_")
title = title.replace(" ", "_")
title = title.replace("\n", "_")
title = title.replace("?", "_")
title = title.replace("(", "_")
title = title.replace(")", "_")
title = title.replace(":", "_")
title = title.replace(";", "_")
title = title.replace('"', "_")
title = title.replace("'", "_")
title = f"{title}.md"
return title
def savenotes(notes: dict, dest: str):
'''Save notes to files in folder dest
'''
import os
os.chdir(dest)
for title in notes:
text = notes[title]
filename = sanitize(title)
with open(filename, "w") as writer:
writer.write(text)
print(f"Saved {filename} in {dest}")
#----------! MAIN
args = get_args()
file = args.file
notes = filesplit(file)
savenotes(notes, args.dest)