Experimental communication tools (televex screen + televex print) https://televex.vvvvvvaria.org/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

95 lines
2.4 KiB

import feedparser
import os
from icalendar import Calendar
import datetime
from requests import get
import urllib
import json
import pypandoc
import time
# Use local python in the .venv (if it exists)
PYTHON = '../.venv/bin/python'
if not os.path.exists(PYTHON):
PYTHON = 'python3'
ics = get("https://varia.zone/events.ics").text
gcal = Calendar.from_ical(ics)
now = datetime.datetime.now()
while True:
os.system(f"{ PYTHON } tools/ascii-art-but-with-unicode/repeated_sinus_amplitude_variation.py | lolcat -a -d 1")
print("")
time.sleep(1)
os.system(f"{ PYTHON } tools/ascii-art-but-with-unicode/multi_column_page.py | lolcat -a -d 1")
print("")
time.sleep(10)
# Avoid double posts
used = []
for c in gcal.walk():
if c.name == "VEVENT":
date = c.get("dtstart").dt
title = c.get("summary")
if date > now:
# An attempt to keep TeleVex running throughout the night
# (even if the Multifeeder/server is not available)
# --- works ---
try:
url = 'https://multi.vvvvvvaria.org/API/latest/25'
response = urllib.request.urlopen(url).read()
multifeeder = json.loads(response)
except:
multifeeder = []
os.system("toilet -f script -w 125 --gay Zzz... the server sleeps.")
for post in multifeeder:
if post["summary"] not in used:
# Clean up the title of the RSS & Calendar
title_check = title.lower().strip().replace('\n','')
rss_title_check = post["title"].lower().strip().replace('\n','')
if title_check == rss_title_check:
# add this post to the "used" list above
used.append(post["summary"])
os.system("toilet --gay -w 125 -W --filter border:gay \ \ \ COMING UP\ \ \ \ ")
print("")
time.sleep(1)
description = pypandoc.convert_text(post["summary"], 'plain', format='html',extra_args=['--columns=64'])
# Write description to a tmp file
with open("description.tmp","w") as tmp:
tmp.write(description)
# Send the event to the terminal·
# Title
os.system(f"toilet -f big --gay -w 125 '{ title }'")
print("")
time.sleep(1)
# Date
event_date = date.strftime("%A %d %B %Y (%H:%M:%S)")
os.system(f"echo '{ event_date }' | lolcat -a -d 1")
print("")
time.sleep(1)
# Description
os.system("cat description.tmp | lolcat -a -d 1")
print("")
time.sleep(10)