Rename markdown

This commit is contained in:
Andros Fenollosa 2023-10-29 23:07:27 +01:00
parent 06b52c79b1
commit 503016694a
2 changed files with 72 additions and 6 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/backup-notion-test.zip
/import to joplin/

76
notion-to-joplin.py Normal file → Executable file
View File

@ -1,11 +1,75 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from argparse import ArgumentParser
import sys
import zipfile
import glob
import shutil
from os import path
import ntpath
import urllib.parse
# Step 1: Unzip the notion export zip file
# Step 2: Run this script in the same directory as the unzipped files # Step 1: Get the notion export zip file
# Step 2: Unzip the notion export zip file
# Step 3: Rename every file with a .md extension with the heading of the file and fix all the links # Step 3: Rename every file with a .md extension with the heading of the file and fix all the links
# Step 4: Delete every heading file # Step 4: Rename all folder. Remove the "hash" from the ending of the folder name
# Step 5: Delete blank lines in beginning of every file
# Step 6: Rename all folder. Remove the "hash" from the ending of the folder name
## Step 1 # VARIABLES
FOLDER_EXTRACTION = "import to joplin"
MARKDOWN_EXTENSION = "md"
filename_backup = ""
## Step 1: Get the notion export zip file
# Delete the folder if it exists
if path.exists(FOLDER_EXTRACTION):
shutil.rmtree(FOLDER_EXTRACTION)
# Get parameter # Get parameter
parser = ArgumentParser(
prog="ProgramName",
description="What the program does",
epilog="Text at the bottom of help",
)
parser.add_argument("-f", "--file", help="File to be processed", required=True)
try:
args = parser.parse_args()
filename_backup = args.file
except:
parser.print_help()
sys.exit(0)
## Step 2: Unzip the file
print("Unzipping backup file...")
with zipfile.ZipFile(filename_backup, "r") as zip_ref:
zip_ref.extractall(FOLDER_EXTRACTION)
print("Unzipping done.")
## Step 3: Rename every file with a .md extension with the heading of the file and fix all the links
print("Renaming files and fixing links...")
# Get all markdown files
path_to_files = path.join(FOLDER_EXTRACTION, "**/*." + MARKDOWN_EXTENSION)
for filename in glob.iglob(path_to_files, recursive=True):
# Get the heading of the file
with open(filename, "r") as file:
# Get the heading
first_line = file.readline()
heading = first_line.replace("# ", "").replace("\n", "")
# Delete two first lines
lines = file.readlines()
lines_without_heading = lines[1:]
# Write the file without the heading
with open(filename, "w") as file:
file.write("".join(lines_without_heading))
# Rename the file
new_filename = path.join(path.dirname(filename), heading + "." + MARKDOWN_EXTENSION)
shutil.move(filename, new_filename)
# Fix all the links
old_filename_encoded = urllib.parse.quote(ntpath.basename(filename))
heading_encoded = urllib.parse.quote(heading) + "." + MARKDOWN_EXTENSION
for filename_to_fix in glob.iglob(path_to_files, recursive=True):
with open(filename_to_fix, "r") as file:
lines_to_fix = file.readlines()
with open(filename_to_fix, "w") as file:
text_to_write = "".join(lines_to_fix).replace(
old_filename_encoded, heading_encoded
)
file.write(text_to_write)