gophermap - A simple library for parsing Gopher maps
gophermap is a small and simple library that provides code for parsing
Gopher responses.
Installation
gophermap is available from pypi
and can be installed with your package installer of choice.
With pip:
pip install gophermap
With uv:
uv add gophermap
Quick start
The library provides a single main parsing class called GopherMap. It is
initialised with a response from a Gopher server, and the items property
provides a list of GopherItem objects.
A very minimal parser might look like this:
import fileinput
from gophermap import GopherMap
def parse_input() -> None:
with fileinput.input() as gopher_map:
for gopher_item in GopherMap("".join(gopher_map)).items:
print(f"{gopher_item!r}")
The library contains a simple test command line tool, which can be accessed
either via the Python -m switch, or depending on your environment, via the
gophermap command. For example, given this content of a file called
gophermap:
iSome places to find me and more of my stuff null.host 1
i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ null.host 0
i null.host 1
hFind me all over URL:https://davep.at/ tilde.team 70
hFind me in Geminispace URL:gemini://tilde.team/~davep/ tilde.team 70
hMy blog URL:https://blog.davep.org/ tilde.team 70
hfinger://plan.cat/davep URL:finger://plan.cat/davep tilde.team 70
hfinger://tilde.team/davep URL:finger://tilde.team/davep tilde.team 70
i null.host 1
iMy current projects null.host 1
i~~~~~~~~~~~~~~~~~~~ null.host 0
i null.host 1
h[Web] Rogallo - A Gemini/Gopher/Finger client for the terminal URL:https://rogallo.davep.dev/ tilde.team 70
h[Gemini] Rogallo - A Gemini/Gopher/Finger client for the terminal URL:gemini://tilde.team/~davep/rogallo/ tilde.team 70
.
The gophermap command (or python -m gophermap) would produce:
$ gophermap gophermap
GopherItem(type=<ItemType.INFO: 'i'>, display_text='Some places to find me and more of my stuff', selector='', host='null.host', port=1)
GopherItem(type=<ItemType.INFO: 'i'>, display_text='~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~', selector='', host='null.host', port=0)
GopherItem(type=<ItemType.INFO: 'i'>, display_text='', selector='', host='null.host', port=1)
GopherItem(type=<ItemType.HTML: 'h'>, display_text='Find me all over', selector='URL:https://davep.at/', host='tilde.team', port=70)
GopherItem(type=<ItemType.HTML: 'h'>, display_text='Find me in Geminispace', selector='URL:gemini://tilde.team/~davep/', host='tilde.team', port=70)
GopherItem(type=<ItemType.HTML: 'h'>, display_text='My blog', selector='URL:https://blog.davep.org/', host='tilde.team', port=70)
GopherItem(type=<ItemType.HTML: 'h'>, display_text='finger://plan.cat/davep', selector='URL:finger://plan.cat/davep', host='tilde.team', port=70)
GopherItem(type=<ItemType.HTML: 'h'>, display_text='finger://tilde.team/davep', selector='URL:finger://tilde.team/davep', host='tilde.team', port=70)
GopherItem(type=<ItemType.INFO: 'i'>, display_text='', selector='', host='null.host', port=1)
GopherItem(type=<ItemType.INFO: 'i'>, display_text='My current projects', selector='', host='null.host', port=1)
GopherItem(type=<ItemType.INFO: 'i'>, display_text='~~~~~~~~~~~~~~~~~~~', selector='', host='null.host', port=0)
GopherItem(type=<ItemType.INFO: 'i'>, display_text='', selector='', host='null.host', port=1)
GopherItem(type=<ItemType.HTML: 'h'>, display_text='[Web] Rogallo - A Gemini/Gopher/Finger client for the terminal', selector='URL:https://rogallo.davep.dev/', host='tilde.team', port=70)
GopherItem(type=<ItemType.HTML: 'h'>, display_text='[Gemini] Rogallo - A Gemini/Gopher/Finger client for the terminal', selector='URL:gemini://tilde.team/~davep/rogallo/', host='tilde.team', port=70)
See the main documentation for the full API.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gophermap-0.2.0.tar.gz.
File metadata
- Download URL: gophermap-0.2.0.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d5a670afa029b390c1222bb490655def44174114d9cbe1f07c8013fe9f5f410
|
|
| MD5 |
ab5ef3a92493095b1a806262f0327358
|
|
| BLAKE2b-256 |
57d45869c763a6c29d538a47cfa0ead086fbc4e58622a3b37934afc673df0bd3
|
File details
Details for the file gophermap-0.2.0-py3-none-any.whl.
File metadata
- Download URL: gophermap-0.2.0-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21ecc6dcf14775a40f82610fa56d22e1931d451dc4a105074e0c906bef6372c4
|
|
| MD5 |
c044c14caaf9b4ed4ad90c2152fb27b3
|
|
| BLAKE2b-256 |
208787232782f12ba3fee9f87b5a967cd442ff6a3c6fca4f088450ac94400dbb
|