Xwiki Import Markdown -
# Import single file importer.import_file("document.md", space="Main")
def batch_import(self, directory, space): """Import all markdown files from a directory""" md_files = list(Path(directory).glob('*.md')) if not md_files: print(f"No .md files found in {directory}") return print(f"Found {len(md_files)} markdown files") success_count = 0 for md_file in md_files: if self.import_file(md_file, space): success_count += 1 print(f"\nImport complete: {success_count}/{len(md_files)} successful") if name == " main ": importer = XWikiMarkdownImporter( url="http://localhost:8080/xwiki", username="Admin", password="admin" )
# Wrap in markdown macro wiki_content = f"{{{{markdown}}}}\n{markdown_content}\n{{{{/markdown}}}}"
# Escape problematic characters content = content.replace('\\', '\\\\') content = content.replace('{{', '~{{') content = content.replace('}}', '~}}') Create a mapping for frontmatter: xwiki import markdown
# Bold and Italic markdown_text = re.sub(r'\*\*(.*?)\*\*', r'**\1**', markdown_text) markdown_text = re.sub(r'\*(.*?)\*', r'//\1//', markdown_text)
import re def markdown_to_xwiki(markdown_text): """Convert basic Markdown to XWiki syntax"""
data = { "title": page_name, "content": wiki_content, "syntaxId": "xwiki/2.1" } # Import single file importer
# Inline code markdown_text = re.sub(r'`(.*?)`', r'{{code}}\1{{/code}}', markdown_text)
class XWikiMarkdownImporter: def (self, url, username, password): self.base_url = url.rstrip('/') self.auth = HTTPBasicAuth(username, password) self.session = requests.Session() self.session.auth = self.auth
def escape_xwiki_syntax(self, content): """Escape XWiki special characters""" # Escape velocity syntax content = content.replace('#', '~#') content = content.replace('$', '~$') # Escape macro syntax content = content.replace('{{', '~{{') content = content.replace('}}', '~}}') return content # Import single file importer.import_file("document.md"
def import_markdown_file(file_path, page_name): """Import a markdown file to XWiki"""
--- title: My Document author: John Doe date: 2024-01-01 tags: [wiki, markdown] --- Convert to XWiki properties:
# Code blocks markdown_text = re.sub(r'```(\w*)\n(.*?)```', r'{{code language="\1"}}\n\2\n{{/code}}', markdown_text, flags=re.DOTALL)
#!/usr/bin/env python3 """ XWiki Markdown Importer Requires: pip install requests markdown beautifulsoup4 """ import requests import os import sys import re from requests.auth import HTTPBasicAuth from pathlib import Path