diff --git a/convert-links.py b/convert-links.py new file mode 100644 index 0000000..cd2f516 --- /dev/null +++ b/convert-links.py @@ -0,0 +1,54 @@ +import os +import re + +""" +Dieses Python-Skript durchsucht rekursiv alle .md-Dateien in einem angegebenen Quellordner nach Mediawiki-Links und konvertiert diese in korrekte Markdown-Links. +Für jeden gefundenen Mediawiki-Link wird eine Eingabeaufforderung im Terminal angezeigt, um die geplante Änderung zu bestätigen oder abzulehnen. +Wenn die Änderung bestätigt wird, ersetzt das Skript den Mediawiki-Link durch den Markdown-Link und speichert die Datei. +""" + +# Quellordner definieren +# source_folder = './test/' +source_folder = '/Users/rob/Documents/Obsidian' + +# Mediawiki Link Pattern +mediawiki_link_pattern = re.compile(r'\[(http.?://[^\s]+)\s([^\]]+)\]') + +def convert_links_in_file(file_path): + with open(file_path, 'r', encoding='utf-8') as file: + content = file.read() + + def replace_link(match): + #ignoriere Mediawiki-Links, die als Anzeigetext eine URL haben + if match.group(2).startswith('[http') or match.group(1) == match.group(2): + return match.group(0) + #ignoriere strings, einen Zeilenumbruch enthalten + if match.group(0).find('\n') != -1: + return match.group(0) + + url = match.group(1) + text = match.group(2) + markdown_link = f'[{text}]({url})' + print(f'Original: {match.group(0)}') + print(f'Änderung: {markdown_link}') + confirm = input('Änderung bestätigen? (Enter für Ja, jede andere Taste für Nein): ') + if confirm == '': + return markdown_link + else: + return match.group(0) + + new_content = mediawiki_link_pattern.sub(replace_link, content) + + with open(file_path, 'w', encoding='utf-8') as file: + file.write(new_content) + +def process_folder(folder): + for root, _, files in os.walk(folder): + for file in files: + if file.endswith('.md'): + file_path = os.path.join(root, file) + print(f'Verarbeite Datei: {file_path}') + convert_links_in_file(file_path) + +# Starte die Verarbeitung +process_folder(source_folder) \ No newline at end of file