Files
MediaWiki-Scraper/convert-links.py
T

54 lines
2.0 KiB
Python

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)