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)