From 4138d8287232f9ae161b357db74afb47fe4eecf8 Mon Sep 17 00:00:00 2001 From: Andreas Domanowski <andreas@domanowski.net> Date: Wed, 1 Mar 2023 15:27:20 +0100 Subject: [PATCH] Print further instructions and information to stdout --- common.py | 4 ++-- export_md/codimd_export.py | 4 +++- import_md/hedgedoc_import.py | 44 +++++++++++++++--------------------- 3 files changed, 23 insertions(+), 29 deletions(-) diff --git a/common.py b/common.py index dea5d9d..b9eb1d2 100644 --- a/common.py +++ b/common.py @@ -32,9 +32,9 @@ def print_block_heading(message): print(separator) -def check_accessibility(instance_url, session_id): +def check_accessibility(instance_url, session_id, cookie_key): request_url = instance_url + '/me/' - headers = {"Cookie": f"connect.hedgeDoc.sid={session_id}"} + headers = {"Cookie": f"{cookie_key}={session_id}"} req = urllib.request.Request(request_url, headers=headers) with urllib.request.urlopen(req) as response: diff --git a/export_md/codimd_export.py b/export_md/codimd_export.py index 562ee45..262becd 100755 --- a/export_md/codimd_export.py +++ b/export_md/codimd_export.py @@ -31,8 +31,9 @@ def prepare_target_dir(pathname): def export_from_codimd(instance_url, session_id, export_to): - check_accessibility(instance_url, session_id) + check_accessibility(instance_url, session_id, "connect.sid") """Retrieve CodiMD document history and try to download each document.""" + print_block_heading(f"Trying to fetch history ({instance_url})") try: data = json.loads(slurp(f"{instance_url}/history", session_id)) except OSError as error: @@ -42,6 +43,7 @@ def export_from_codimd(instance_url, session_id, export_to): print_block_heading(f"Preparing target directory ({export_to})") target_dir = prepare_target_dir(export_to) num_ok = num_fail = 0 + print_block_heading(f"Accessing history and trying to fetch each document") for row in data["history"]: document_id = row["id"] document_url = f"{instance_url}/{quote(document_id)}" diff --git a/import_md/hedgedoc_import.py b/import_md/hedgedoc_import.py index b99b9fc..dbe1fd4 100644 --- a/import_md/hedgedoc_import.py +++ b/import_md/hedgedoc_import.py @@ -1,27 +1,14 @@ #!/usr/bin/env python3 import json from urllib.error import HTTPError -from common import get_sessionid +from common import get_sessionid, check_accessibility, print_block_heading from pathlib import Path import urllib.parse import urllib.request import os -import subprocess from zipfile import ZipFile -def check_accessibility(instance_url, session_id): - request_url = instance_url + '/me/' - headers = {"Cookie": f"connect.hedgeDoc.sid={session_id}"} - - req = urllib.request.Request(request_url, headers=headers) - with urllib.request.urlopen(req) as response: - response_json = json.load(response) - if response_json["status"] != "ok": - raise SystemExit(f"Could not access protected resources at {request_url}. Make sure that the specified " - f"cookie is correct. Aborting...") - - def import_single_document(instance_url, hedgedoc_free_url, content, session_id): sanitized_free_url = hedgedoc_free_url.replace(" ", "%20") request_url = instance_url + '/new/' + sanitized_free_url @@ -33,17 +20,19 @@ def import_single_document(instance_url, hedgedoc_free_url, content, session_id) return response.url -def check_archive_exists(archive_file): - if not os.path.exists(archive_file): +def check_file_exists(file): + if not os.path.exists(file): raise SystemExit( - f"ERROR: File {archive_file} does not exist. Export your data from CodiMD and re-execute this script again!" + f"ERROR: File {file} does not exist. Export your data from CodiMD and re-execute this script again!" f" Aborting...") + print(f"Required file {file} exists. Proceeding...") def import_into_hedgedoc(instance_url, session_id, export_folder, archive_file): - print("Beginning import_md") - check_archive_exists(archive_file) - check_accessibility(instance_url, session_id) + print_block_heading( + f"Checking existence of archive file ({archive_file}) exists and authorization at {instance_url}") + check_file_exists(archive_file) + check_accessibility(instance_url, session_id, "connect.hedgeDoc.sid") # get exported history map with open(os.path.join(export_folder, "history.json")) as map_file: history_dictionary = json.load(map_file) @@ -56,11 +45,11 @@ def import_into_hedgedoc(instance_url, session_id, export_folder, archive_file): # URLs to visit to make the new document available in the history urls_to_visit = [] - iterate_over_archive(archive_file, instance_url, lookup_map, session_id, urls_to_visit) + process_archive_export(archive_file, instance_url, lookup_map, session_id, urls_to_visit) create_urls_to_visit_file("../hedgedoc_documents_to_visit.url", urls_to_visit) -def iterate_over_archive(archive_file, instance_url, lookup_map, session_id, urls_to_visit): +def process_archive_export(archive_file, instance_url, lookup_map, session_id, urls_to_visit): # iterate over files in archive with ZipFile(archive_file) as zf: print("Now scanning your provided archive file containing the documents you are the owner of") @@ -76,21 +65,22 @@ def iterate_over_archive(archive_file, instance_url, lookup_map, session_id, url if document_title in lookup_map: print( - f"\tYou visited your own document \"{document_title}\".md) via the identifier/path " + + f"You visited your own document \"{document_title}\".md) via the identifier/path " + f"\"{lookup_map[document_title]}\"") - print(f"\tTrying to migrate this document and make it available under the already visited path") + print(f"Trying to migrate this document and make it available under the already visited path") try: new_url = import_single_document(instance_url, lookup_map[document_title], document_content, session_id) urls_to_visit.append(new_url) - print(f"\tMigration was possible. New URL: {instance_url}/{lookup_map[document_title]}") + print(f"Migration was possible. New URL: {instance_url}/{lookup_map[document_title]}") except HTTPError as error: if error.status == 409: - print("\tATTENTION: Could not migrate document with the same path. Uploading anyways and " + print("ATTENTION: Could not migrate document with the same path. Uploading anyways and " "creating a new, random path") new_url = import_single_document(instance_url, "", document_content, session_id) print(f"New URL after document migration without migrating the URL/subpath: {new_url}") urls_to_visit.append(new_url) + print() else: print(f"According to your history, you did not visit \"{document_title}.md\" in the CodiMD " "instance recently. Migrating the document and generating a new, random URL/path for it") @@ -99,9 +89,11 @@ def iterate_over_archive(archive_file, instance_url, lookup_map, session_id, url print(f"New URL after document migration with new, random URL/subpath: " f"{generated_url}") urls_to_visit.append(generated_url) + print() def create_urls_to_visit_file(filename, urls_to_visit): + print_block_heading("Creating file containg the URLs to visit") print(f"A new file {filename} will be created. It contains all URLs you need to visit in order to make the" f"migrated documents appear in your HedgeDoc history.") print("This can be automated by running the scripts in the directory \"history_scripts\"") -- GitLab