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
|
53
quotes.py
53
quotes.py
|
@ -1,13 +1,46 @@
|
||||||
from rich.align import Align
|
from rich.align import Align
|
||||||
|
from rich.console import Console
|
||||||
from rich.layout import Layout
|
from rich.layout import Layout
|
||||||
from rich.live import Live
|
from rich.live import Live
|
||||||
from rich.text import Text
|
|
||||||
from rich.padding import Padding
|
from rich.padding import Padding
|
||||||
import time
|
from rich.text import Text
|
||||||
import requests
|
import json
|
||||||
import random
|
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):
|
def render_quote(quote):
|
||||||
for i in range(len(quote['quote'])):
|
for i in range(len(quote['quote'])):
|
||||||
|
@ -19,9 +52,17 @@ def render_quote(quote):
|
||||||
)
|
)
|
||||||
yield l
|
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:
|
while True:
|
||||||
for q in render_quote(random.choice(quotes[-100:])):
|
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)
|
live.update(q)
|
||||||
time.sleep(0.05)
|
time.sleep(0.05)
|
||||||
time.sleep(30)
|
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