From b622ec759b1bb1ee1a3b4f0ee04abc60b566629b Mon Sep 17 00:00:00 2001 From: Andreas Domanowski <andreas@domanowski.net> Date: Tue, 28 Feb 2023 14:47:15 +0100 Subject: [PATCH] Add cli frontend --- codimd_export.py | 7 +++++-- hedgedoc_import.py | 42 ++++++++++++++++++++++++++++++++++-------- md-import-export.py | 7 +++++++ 3 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 md-import-export.py diff --git a/codimd_export.py b/codimd_export.py index 7f5acf9..14e5d96 100755 --- a/codimd_export.py +++ b/codimd_export.py @@ -8,6 +8,7 @@ from pathlib import Path from urllib.error import HTTPError from urllib.parse import quote from urllib.request import Request, urlopen +import sys from common import get_sessionid @@ -28,7 +29,7 @@ def prepare_target_dir(pathname): return target_dir -def main(instance_url, session_id, export_to): +def export_from_codimd(instance_url, session_id, export_to): """Retrieve CodiMD document history and try to download each document.""" try: data = json.loads(slurp(f"{instance_url}/history", session_id)) @@ -45,6 +46,8 @@ def main(instance_url, session_id, export_to): contents = slurp(f"{document_url}/download", session_id) with open(Path(target_dir, f"{document_id}.md"), mode="wb") as stream: stream.write(contents) + with open(Path(target_dir, f"map.map"), mode="w") as stream: + json.dump(data, stream) num_ok += 1 except HTTPError as error: # history might reference deleted or otherwise inaccessible notes @@ -55,4 +58,4 @@ def main(instance_url, session_id, export_to): if __name__ == "__main__": - main("https://md.inf.tu-dresden.de", get_sessionid("connect.sid"), "codimd-documents") + export_from_codimd("https://md.inf.tu-dresden.de", get_sessionid("connect.sid"), "codimd-documents") diff --git a/hedgedoc_import.py b/hedgedoc_import.py index 1182ee8..0aeddc5 100644 --- a/hedgedoc_import.py +++ b/hedgedoc_import.py @@ -1,14 +1,15 @@ #!/usr/bin/env python3 +from common import get_sessionid +from pathlib import Path import urllib.parse import urllib.request import os -from pathlib import Path - -from common import get_sessionid +import subprocess +from zipfile import ZipFile -def import_document(instance_url, hedgedoc_free_url, content, session_id): +def import_single_document(instance_url, hedgedoc_free_url, content, session_id): sanitized_free_url = hedgedoc_free_url.replace(" ", "%20") user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' @@ -22,18 +23,43 @@ def import_document(instance_url, hedgedoc_free_url, content, session_id): print("Go visit " + response.url + " with your browser in a logged-in session.") -def main(instance_url, session_id, import_from): - folder = os.path.join(os.getcwd(), import_from); +def import_into_hedgedoc(instance_url, session_id, export_folder, archive_file): + folder = os.path.join(os.getcwd(), export_folder); print("Trying to upload all files with extension \".md\" in folder \"" + folder + "\""); + #with ZipFile('images.zip') as zf: + # for file in zf.namelist(): + # if not file.endswith('.png'): # optional filtering by filetype + # continue + # with zf.open(file) as f: + # image = pygame.image.load(f, namehint=file) + for relative_filename in os.listdir(folder): if relative_filename.endswith(".md"): addressable_filename = os.path.join(folder, relative_filename) print("Trying to upload: " + addressable_filename) markdown_content = Path(addressable_filename).read_text() free_url = Path(relative_filename).stem - import_document(instance_url, free_url, markdown_content, session_id) + import_single_document(instance_url, free_url, markdown_content, session_id) + + +def select_browser(): + options = ['chrome', 'firefox', 'opera'] + user_input = '' + input_message = "Pick an option:\n" + + for index, item in enumerate(options): + input_message += f'{index + 1}) {item}\n' + + input_message += 'Your choice: ' + + while user_input not in map(str, range(1, len(options) + 1)): + user_input = input(input_message) + + print('You picked: ' + options[int(user_input) - 1]) if __name__ == "__main__": - main("https://md.inf.tu-dresden.de/notes", get_sessionid("connect.hedgeDoc.sid"), "codimd-documents") + select_browser() + #subprocess.run(["firefox", "www.google.de"]) + #import_into_hedgedoc("https://md.inf.tu-dresden.de/notes", get_sessionid("connect.hedgeDoc.sid"), "codimd-documents") diff --git a/md-import-export.py b/md-import-export.py new file mode 100644 index 0000000..529a792 --- /dev/null +++ b/md-import-export.py @@ -0,0 +1,7 @@ +from codimd_export import export_from_codimd +from common import get_sessionid +from hedgedoc_import import import_into_hedgedoc + +if __name__ == "__main__": + export_from_codimd("https://md.inf.tu-dresden.de", get_sessionid("connect.sid"), "codimd-documents") + import_into_hedgedoc("https://md.inf.tu-dresden.de/notes", get_sessionid("connect.hedgeDoc.sid"), "codimd-documents", "archive.zip") \ No newline at end of file -- GitLab