URI: 
       Add local selenium pdf rendering. - mediawiki-gopher - mediawiki gopher frontend
  HTML git clone git://bitreich.org/mediawiki-gopher git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/mediawiki-gopher
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit dd87398cd779b693c9269c2ca5f18e5eb4566f42
   DIR parent d8b1342dfd83dc085c9d37079665a3bf5bb18167
  HTML Author: Christoph Lohmann <20h@r-36.net>
       Date:   Fri,  2 Jan 2026 19:06:23 +0100
       
       Add local selenium pdf rendering.
       
       Diffstat:
         M pdf/index.cgi                       |      42 ++++++++++++++++++++++++++++---
       
       1 file changed, 38 insertions(+), 4 deletions(-)
       ---
   DIR diff --git a/pdf/index.cgi b/pdf/index.cgi
       @@ -11,6 +11,36 @@ import sys
        import getopt
        import requests
        
       +from selenium import webdriver
       +from selenium.webdriver.chrome.options import Options as chromeoptions
       +from selenium.webdriver.chrome.service import Service as chromeservice
       +from selenium.webdriver.common.print_page_options import PrintOptions
       +import base64
       +
       +def uri2pdf(uri):
       +        options = chromeoptions()
       +        chromearguments = [
       +                "headless",
       +                "no-sandbox",
       +                "disable-extensions",
       +                "disable-dev-shm-usage",
       +                "start-maximized",
       +                "window-size=1900,1080",
       +                "disable-gpu"
       +        ]
       +        for carg in chromearguments:
       +                options.add_argument(carg)
       +
       +        service = chromeservice(executable_path="/usr/bin/chromedriver")
       +        driver = webdriver.Chrome(service=service, options=options)
       +        driver.implicitly_wait(2)
       +        driver.get(uri)
       +
       +        print_options = PrintOptions()
       +        pdf = driver.print_page(print_options)
       +        driver.quit()
       +        return base64.b64decode(pdf)
       +
        def main(args):
                if len(args) != 7:
                        sys.stderr.write("Must be run as geomyidae dcgi.\n")
       @@ -35,6 +65,7 @@ def main(args):
        
                mw_base = os.getenv("MEDIAWIKI_BASE", "https://en.wikipedia.org")
                mw_pdf = os.getenv("MEDIAWIKI_PDF", "https://en.wikipedia.org/api/rest_v1/page/pdf")
       +        mw_page_base = "%s/wiki" % (mw_base)
        
                # Mandatory for wikipedia.
                headers = { "User-Agent": "gopher mediawiki frontend/0.1" }
       @@ -50,9 +81,13 @@ def main(args):
                        page = cmds[1]
                        if page.endswith(".pdf"):
                                page = page[:-4]
       -                pdf = requests.get("%s/%s" % (mw_pdf, \
       -                                page), headers=headers)
       -                mw_replace = "%s/wiki" % (mw_base)
       +                try:
       +                        pdf = requests.get("%s/%s" % (mw_pdf, \
       +                                        page), headers=headers)
       +                except:
       +                        pdf = uri2pdf("%s/%s" % (mw_page_base, page))
       +
       +                mw_replace = mw_page_base
                        g_content = pdf.content.replace(mw_replace.encode("utf-8"),\
                              g_uri.encode("utf-8"))
                        sys.stdout.buffer.write(g_content)
       @@ -60,7 +95,6 @@ def main(args):
        
                sys.stdout.write(gph)
                sys.stdout.flush()
       -        
                return 0
        
        if __name__ == "__main__":