diff --git a/epilogue/archive_generator.py b/epilogue/archive_generator.py index 4e1fff5..aae45ad 100644 --- a/epilogue/archive_generator.py +++ b/epilogue/archive_generator.py @@ -9,7 +9,7 @@ import chevron import bbcode import html -from .wiki import Template, Renderer, reformat_page_title, translate_page_title, NAMESPACES as WIKI_NAMESPACES +from .wiki import Template, Renderer, Linker, reformat_page_title, NAMESPACES as WIKI_NAMESPACES logging.basicConfig(level=logging.INFO) logger = logging.getLogger("ArchiveGenerator") @@ -61,14 +61,15 @@ class ArchiveGenerator(): categories = {} templates = dict([(page.title.split(":")[1], Template(page.get_latest().text)) for page in wiki.get_pages() if page.namespace == WIKI_NAMESPACES['TEMPLATE']]) - wikitext_renderer = Renderer(templates, DEXES) + linker = Linker(directory_names=DEXES) + wikitext_renderer = Renderer(templates, linker) for page in wiki.get_pages(): try: if page.namespace != WIKI_NAMESPACES['MAIN']: continue - page_out = translate_page_title(page.title, DEXES) - base = "" + page_out = linker.translate_page_title(page.title) + base = "./" if "/" in page_out: base = "../" * page_out.count("/") try: @@ -78,7 +79,7 @@ class ArchiveGenerator(): if page.redirect: logger.info("Archiving redirect page (%s -> %s) to %s", page.title, page.redirect, page_out) renderer.render_template_to_file("redirect", page_out, { - "target": f"{base}{translate_page_title(page.redirect, DEXES)}" + "target": f"{base}{linker.translate_page_title(page.redirect)}" }) else: logger.info("Archiving page %s to %s", page.title, page_out) diff --git a/epilogue/wiki.py b/epilogue/wiki.py index 7de8a0e..687f9b6 100644 --- a/epilogue/wiki.py +++ b/epilogue/wiki.py @@ -32,6 +32,7 @@ INTERWIKI_NAMESPACES = { FILE_NAMESPACES = ["File:", "Image:"] CATEGORY_NAMESPACE = "Category:" +CATEGORY_LINK_NAMESPACE = f":{CATEGORY_NAMESPACE}" class Wiki(): def __init__ (self, xml_path): @@ -85,9 +86,9 @@ class Contributor(): self.username = child.text class Renderer(): - def __init__ (self, templates={}, directory_names=[]): + def __init__ (self, templates={}, linker=None): self.templates = templates - self.directory_names = directory_names + self.linker = linker if linker else Linker() def render (self, wikitext, base="", *args, **kwargs): categories = [] @@ -101,7 +102,7 @@ class Renderer(): wikitext.remove(link) categories.append(link.title[len(CATEGORY_NAMESPACE):]) - rendered = [render(wikitext, base, self.directory_names)] + rendered = [render(wikitext, base, self.linker)] if categories: rendered.append('

Categories