config.py
DIRECTORY = "path/to/folder/with/wall/inscriptions"
wall.cgi
#!/bin/python3
import os
from config import DIRECTORY
print("20 text/gemini; charset=utf-8")
count = 32
inscriptions = os.listdir(DIRECTORY)
if not inscriptions:
print("Тут пусто")
else:
print(f"=> wall_full.cgi полная версия стены ({len(inscriptions)} записей)")
print("=> statistic.cgi статистика стены")
print(f"Последние {count} записи:\n")
for inscription in sorted(inscriptions)[-1 * count:]:
with open(f'{DIRECTORY}/{inscription}') as f:
print(f.read(), '\n')
print("=> write_something.cgi Написать что-нибудь")
wall_full.cgi
#!/bin/python3
import os
from config import DIRECTORY
# DIRECTORY = "cgi-bin/python/wall/inscriptions"
print("20 text/gemini; charset=utf-8")
inscriptions = os.listdir(DIRECTORY)
if not inscriptions:
print("Тут пусто")
else:
print("На стене написано:\n")
for inscription in sorted(inscriptions):
with open(f'{DIRECTORY}/{inscription}') as f:
print(f.read(), '\n')
print("=> write_something.cgi Написать что-нибудь")
write_something.cgi
#!/bin/python3
import os
import urllib.parse
import datetime
from config import DIRECTORY
query = os.environ.get("QUERY_STRING")
if not query:
print("10 Enter something")
else:
print("20 text/gemini")
text = urllib.parse.unquote(query)
formatted_text_counter = 0
for i in text.split("\n"):
if i.startswith("```"):
formatted_text_counter += 1
if formatted_text_counter % 2 != 0:
text += "\n```"
with open(
f"{DIRECTORY}/{datetime.datetime.now()}",
'w') as f:
f.write(text)
print(f"Вы написали:\n{text}\nи оставили свой след в истории этой стены\n"
f"=> wall.cgi Вернуться обратно\n"
f"(если ваша запись не видна, обновите страницу)")
statistic.cgi
#!/bin/python3
import os
from collections import Counter
from config import DIRECTORY
print("20 text/gemini; charset=utf-8")
inscriptions = os.listdir(DIRECTORY)
data = [i.split()[0] for i in sorted(inscriptions, reverse=True)]
counter = Counter(data)
for i in counter:
print(i, "☀" * counter[i])