Add txt version. - mediawiki-gopher - mediawiki gopher frontend
(HTM) 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 c9fdf6db6a9d9a85498de89ebfb10ede39dc3e66
(DIR) parent 9f02f4bff1815343f67d5723f53d6555e4d1fdd6
(HTM) Author: Christoph Lohmann <20h@r-36.net>
Date: Fri, 2 Jan 2026 14:33:48 +0100
Add txt version.
Diffstat:
M index.dcgi | 6 +++---
A txt/index.cgi | 66 +++++++++++++++++++++++++++++++
A wiki | 2 ++
3 files changed, 71 insertions(+), 3 deletions(-)
---
(DIR) diff --git a/index.dcgi b/index.dcgi
@@ -56,11 +56,11 @@ def main(args):
gph = "= %s =\n" % (mw_base)
gph += "[7|search|%s/search|server|port]\n" % (g_base)
gph += "[7|pdf search (experimental)|%s/pdfsearch|server|port]\n" % (g_base)
- gph += "[1|random|%s/wiki/Special:Random|server|port]\n" \
+ gph += "[1|random|%s/txt/Special:Random|server|port]\n" \
% (g_base)
- gph += "[1|randomredirect|%s/wiki/Special:RandomRedirect|server|port]\n" \
+ gph += "[1|randomredirect|%s/txt/Special:RandomRedirect|server|port]\n" \
% (g_base)
- gph += "[1|randomroot|%s/wiki/Special:RandomRootpage|server|port]\n" \
+ gph += "[1|randomroot|%s/txt/Special:RandomRootpage|server|port]\n" \
% (g_base)
return gph
(DIR) diff --git a/txt/index.cgi b/txt/index.cgi
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+# coding=utf-8
+#
+# © 2025-2026 Christoph Lohmann <20h@r-36.net>
+#
+# This file is published under the terms of the GPLv3.
+#
+
+import os
+import sys
+import getopt
+import requests
+import html2text
+
+def main(args):
+ if len(args) != 7:
+ sys.stderr.write("Must be run as geomyidae dcgi.\n")
+ return 1
+ g_search = args[1]
+ g_arguments = args[2]
+ g_host = args[3]
+ g_port = args[4]
+ g_traversal = args[5]
+ g_base = g_selector = args[6]
+ if len(g_traversal) > 0:
+ g_base = g_selector[:-len(g_traversal)]
+ g_usetls = os.getenv("GOPHERS", "off")
+ if g_usetls == "on":
+ g_uri = "gophers://"
+ else:
+ g_uri = "gopher://"
+ g_uri += g_host
+ if g_port != "70":
+ g_uri += ":" + g_port
+ g_uri += g_base
+
+ mw_base = os.getenv("MEDIAWIKI_BASE", "https://en.wikipedia.org")
+ mw_rest_api = os.getenv("MEDIAWIKI_REST", "https://en.wikipedia.org/w/rest.php")
+ mw_page = "%s/v1/page" % (mw_rest_api)
+
+ # Mandatory for wikipedia.
+ headers = { "User-Agent": "gopher mediawiki frontend/0.1" }
+
+ cmds = g_traversal.split("/")
+ if len(cmds) == 0:
+ gph = "3Not found.\t\t\n"
+ elif len(cmds) == 1:
+ gph = "3Not found.\t\t\n"
+ elif cmds[1] == "":
+ gph = "3Not found.\t\t\n"
+ else:
+ page = cmds[1]
+ html = requests.get("%s/%s/html" % (mw_page, \
+ page), headers=headers)
+ h2t = html2text.HTML2Text()
+ txt = h2t.handle(html)
+ gph = txt.replace("%s/wiki" % (mw_base), "%s/txt" % (g_uri))
+
+ sys.stdout.write(gph)
+ sys.stdout.flush()
+
+ return 0
+
+if __name__ == "__main__":
+ sys.exit(main(sys.argv))
+
(DIR) diff --git a/wiki b/wiki
@@ -0,0 +1 @@
+txt
+\ No newline at end of file