updates
This commit is contained in:
parent
64d8012945
commit
4fc9c9db41
4 changed files with 63 additions and 9 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
venv
|
||||
last_quotes.json
|
||||
denylist.py
|
||||
__pycache__
|
5
autostart.desktop
Normal file
5
autostart.desktop
Normal file
|
@ -0,0 +1,5 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Quotes
|
||||
Exec=alacritty -e ~/quotes_display/start.sh
|
||||
Hidden=true
|
59
quotes.py
59
quotes.py
|
@ -1,13 +1,46 @@
|
|||
from rich.align import Align
|
||||
from rich.console import Console
|
||||
from rich.layout import Layout
|
||||
from rich.live import Live
|
||||
from rich.text import Text
|
||||
from rich.padding import Padding
|
||||
import time
|
||||
import requests
|
||||
from rich.text import Text
|
||||
import json
|
||||
import random
|
||||
import requests
|
||||
import time
|
||||
|
||||
quotes = requests.get('https://mattermore.zeus.gent/quotes.json').json()
|
||||
from denylist import get_deny_list
|
||||
denylist = get_deny_list()
|
||||
|
||||
|
||||
def refresh_quotes():
|
||||
res = None
|
||||
try:
|
||||
# Fetch quotes
|
||||
res = requests.get('https://mattermore.zeus.gent/quotes.json').json()
|
||||
assert len(res) > 100
|
||||
res = res[-100:]
|
||||
except:
|
||||
pass
|
||||
|
||||
if res is None:
|
||||
# Fallback: load last quotes
|
||||
try:
|
||||
with open('last_quotes.json') as f:
|
||||
res = json.load(f)
|
||||
except:
|
||||
assert False, "Failed to fetch quotes, and failed to load fallback json"
|
||||
else:
|
||||
try:
|
||||
# Fetched successfully
|
||||
# Save to disk for the fallback
|
||||
with open('last_quotes.json', 'w') as f:
|
||||
json.dump(res, f)
|
||||
except:
|
||||
pass
|
||||
# Only keep non-denied quotes
|
||||
res = [q for q in res if not any(denied in q['quote'] for denied in denylist)]
|
||||
return res
|
||||
|
||||
def render_quote(quote):
|
||||
for i in range(len(quote['quote'])):
|
||||
|
@ -19,9 +52,17 @@ def render_quote(quote):
|
|||
)
|
||||
yield l
|
||||
|
||||
with Live(Layout(Align.center(Text("Yeet"), vertical="middle")), refresh_per_second=30) as live:
|
||||
with Live(
|
||||
renderable=Layout(Align.center(Text("Yeet"), vertical="middle")),
|
||||
console=Console(highlighter=None),
|
||||
refresh_per_second=30
|
||||
) as live:
|
||||
first_it = True
|
||||
while True:
|
||||
for q in render_quote(random.choice(quotes[-100:])):
|
||||
live.update(q)
|
||||
time.sleep(0.05)
|
||||
time.sleep(30)
|
||||
quotes = refresh_quotes()
|
||||
for _ in range(500):
|
||||
for q in render_quote(random.choice(quotes) if not first_it else quotes[-1]):
|
||||
live.update(q)
|
||||
time.sleep(0.05)
|
||||
time.sleep(30)
|
||||
first_it = False
|
||||
|
|
4
start.sh
Executable file
4
start.sh
Executable file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
cd $(dirname $(realpath $0))
|
||||
. venv/bin/activate
|
||||
python quotes.py
|
Loading…
Reference in a new issue