summary refs log tree commit diff stats
path: root/app.py
blob: 7262e63c2a816a3d006e4fbb9e48fcaa8c832eb3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os

from dotenv import load_dotenv
from pituophis import Item, serve
from pyfiglet import Figlet

import news
import sports
import weather

load_dotenv()
figlet = Figlet(font="big")


def handle(request):
    if request.path == "" or request.path == "/":
        menu = []
        with open("static/ascii/cat.txt", "r") as f:
            menu += [Item(text=i) for i in f.readlines()]

        menu.append(Item(itype="1", text="......NEWS", path="/news", host=os.getenv("HOSTNAME")))
        menu.append(
            Item(itype="7", text="......WEATHER (type in city name)", path="/weather", host=os.getenv("HOSTNAME")))
        menu.append(Item(itype="1", text="......SPORTS", path="/sports", host=os.getenv("HOSTNAME")))
        return menu
    elif request.path.startswith("/newstxt"):
        return news.get_newstxt(request.path.split("?article=")[1])
    elif request.path.startswith("/weathertxt"):
        return weather.get_weather(request.path)
    elif request.path == "/news" or request.path == "/weather" or request.path == "/sports":
        menu = []
        text = figlet.renderText(request.path[1:]).split("\n")
        menu += [Item(text=i) for i in text]
        match request.path:
            case "/news":
                menu.append(Item(text="=== Provided by The Guardian ==="))
                menu += news.get_news()
            case "/weather":
                menu += weather.get_cities(request.query)
            case "/sports":
                menu += [
                    menu.append(Item(itype="0", text="FORMULA 1", path="/sports/f1", host=os.getenv("HOSTNAME")))
                ]
        return menu
    elif request.path.startswith("/sports/"):
        match request.path:
            case "/sports/f1":
                return sports.get_f1()
    else:
        return [Item(itype="3", text="Page not found")]


serve(port=70, handler=handle, pub_dir="personal")