abgame/game.py

92 lines
3.0 KiB
Python
Raw Normal View History

2023-06-02 09:48:48 +02:00
#! /bin/python3
2023-06-06 00:37:22 +02:00
from flask import Flask, render_template
2023-06-02 10:24:06 +02:00
from configparser import ConfigParser
2023-06-02 12:31:55 +02:00
from datetime import datetime
2023-06-04 09:31:29 +02:00
import random
2023-06-02 12:31:55 +02:00
import pytz
2023-06-02 10:24:06 +02:00
2023-06-02 09:48:48 +02:00
app = Flask(__name__,
static_url_path='',
static_folder='static',
template_folder='templates')
2023-06-02 10:24:06 +02:00
config = ConfigParser()
config.read('config.ini')
2023-06-02 20:41:01 +02:00
tz = pytz.timezone(config.get('main', 'timezone'))
2023-06-02 12:31:55 +02:00
2023-06-04 12:18:28 +02:00
@app.errorhandler(404)
def page_not_found(e):
lang = config.get('i18n', 'lang')
title = config.get('i18n', 'title')
2023-06-04 12:32:46 +02:00
url = config.get('main', 'base_url')
theme = config.get('main', 'theme')
desc = config.get('i18n', 'desc')
return render_template('404.html', title=title, lang=lang, desc=desc, theme=theme, url=url), 404
2023-06-04 12:18:28 +02:00
2023-06-04 14:35:24 +02:00
@app.errorhandler(500)
def internal_server_error(e):
lang = config.get('i18n', 'lang')
title = config.get('i18n', 'title')
url = config.get('main', 'base_url')
theme = config.get('main', 'theme')
desc = config.get('i18n', 'desc')
return render_template('500.html', title=title, lang=lang, desc=desc, theme=theme, url=url), 500
2023-06-02 09:48:48 +02:00
@app.route("/")
def hello():
lang = config.get('i18n', 'lang')
title = config.get('i18n', 'title')
more = config.get('i18n', 'more')
2023-06-03 12:42:41 +02:00
desc = config.get('i18n', 'desc')
questions_prefix = config.get('i18n', 'questions_prefix')
questions_suffix = config.get('i18n', 'questions_suffix')
send_questions = config.get('i18n', 'send_questions')
separator = config.get('i18n', 'separator')
2023-06-02 10:24:06 +02:00
separator_char = config.get('main', 'separator_char')
2023-06-03 15:30:12 +02:00
mail = config.get('main', 'mail')
2023-06-05 16:43:21 +02:00
mailtext = config.get('i18n', 'mail_link')
helptext = config.get('i18n', 'help_link')
help = config.get('i18n', 'help')
2023-06-03 12:42:41 +02:00
url = config.get('main', 'base_url')
2023-06-03 15:30:12 +02:00
theme = config.get('main', 'theme')
2023-06-05 13:03:52 +02:00
animations = config.get('main', 'animations')
2023-06-02 10:11:06 +02:00
ablines = []
2023-06-02 09:48:48 +02:00
now = datetime.now(tz=tz)
epoch = now.timestamp()
2023-06-03 12:04:59 +02:00
epoch = int(epoch)
2023-06-02 09:48:48 +02:00
lines = getContent()
2023-06-03 00:14:35 +02:00
while len(lines) < 2:
2023-06-06 00:33:14 +02:00
print('Error reading content')
2023-06-03 00:36:57 +02:00
print(lines)
2023-06-03 00:14:35 +02:00
lines = getContent()
2023-06-02 09:48:48 +02:00
for line in lines:
2023-06-02 10:24:06 +02:00
ab = line.split(separator_char)
2023-06-02 10:11:06 +02:00
ablines.append(
{'A': str(ab[0]), 'B': str(ab[1])}
)
2023-06-02 09:48:48 +02:00
2023-06-02 15:55:18 +02:00
with open("ab.txt", "r") as f:
2023-06-02 15:25:02 +02:00
num_lines = sum(1 for _ in f)
2023-06-05 16:43:21 +02:00
return render_template('index.html', title=title, separator=separator, content=ablines, num_lines=num_lines, epoch=epoch, mailto=mail, more=more, questions_prefix=questions_prefix, questions_suffix=questions_suffix, send_questions=send_questions, lang=lang, url=url, desc=desc, theme=theme, mailtext=mailtext, helptext=helptext, help=help, animations=animations)
2023-06-02 09:48:48 +02:00
def getContent():
2023-06-02 15:55:18 +02:00
lines = [a.strip() for a in open("ab.txt", "r").readlines()]
2023-06-04 09:31:29 +02:00
result = random.sample(lines, 5)
2023-06-02 09:48:48 +02:00
return result
2023-06-04 12:18:28 +02:00
app.register_error_handler(404, page_not_found)
2023-06-04 14:35:24 +02:00
app.register_error_handler(500, internal_server_error)
2023-06-04 12:18:28 +02:00
2023-06-02 09:48:48 +02:00
if __name__ == "__main__":
from waitress import serve
2023-06-03 14:16:15 +02:00
bind = config.get('main', 'bind')
port = config.get('main', 'port')
serve(app, host=bind, port=port, ident='a/b game')