diff --git a/check.py b/check.py index 0e36410..ca78184 100755 --- a/check.py +++ b/check.py @@ -2,11 +2,9 @@ """Check if conference websites are live.""" -import configparser import os import re import smtplib -import typing import warnings from datetime import date from email.mime.text import MIMEText @@ -18,13 +16,7 @@ from requests.adapters import HTTPAdapter from urllib3.exceptions import InsecureRequestWarning from urllib3.util.url import parse_url - -class LiveConference(typing.TypedDict): - """Live conference.""" - - conference: str - year: int - live: date +from conference import LiveConference, config, load_yaml class AbsoluteDNSAdapter(HTTPAdapter): @@ -51,16 +43,6 @@ class AbsoluteDNSAdapter(HTTPAdapter): return super().send(request, **kwargs) -config_file_path = os.path.expanduser( - os.path.join( - os.getenv("XDG_CONFIG_HOME", "~/.config"), "conference-check", "config" - ) -) - -config = configparser.ConfigParser() -config.read(os.path.expanduser(config_file_path)) - - # Suppress only the single InsecureRequestWarning from urllib3 warnings.filterwarnings("ignore", category=InsecureRequestWarning) @@ -96,6 +78,7 @@ not_here_list = [ "Wikimedia Error", "The page you requested could not be found", "Ooops! Could Not Find It", + "OpenStreetMap Authentication Proxy", ] @@ -145,13 +128,6 @@ def send_mail(subject: str, body: str) -> None: s.quit() -def load_yaml(name: str) -> typing.Any: - """Load YAML.""" - filename = os.path.expanduser(config["data"][name]) - assert os.path.exists(filename) - return yaml.safe_load(open(filename)) - - def check_conference_web_site(name: str, src_url: str, year: int) -> bool: """Check if an individual web site is live.""" assert "{year}" in src_url diff --git a/conference/__init__.py b/conference/__init__.py new file mode 100644 index 0000000..6891012 --- /dev/null +++ b/conference/__init__.py @@ -0,0 +1,34 @@ +"""Conference classes and functions.""" + +import configparser +import os +import typing +from datetime import date + +import yaml + +config_file_path = os.path.expanduser( + os.path.join( + os.getenv("XDG_CONFIG_HOME", "~/.config"), "conference-check", "config" + ) +) +assert os.path.exists(config_file_path) + +config = configparser.ConfigParser() +config.read(os.path.expanduser(config_file_path)) + + +class LiveConference(typing.TypedDict, total=False): + """Live conference.""" + + conference: str + year: int + live: date + url: str | None + + +def load_yaml(name: str) -> typing.Any: + """Load YAML.""" + filename = os.path.expanduser(config["data"][name]) + assert os.path.exists(filename) + return yaml.safe_load(open(filename)) diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..bcba09c --- /dev/null +++ b/templates/index.html @@ -0,0 +1,53 @@ + + +
+ +Date when website went live.
+| + {{ l.live.strftime("%a, %d %b %Y") }} + 🌍🎉 + | ++ {{ l.conference }} {{ l.year }} + | + + {% endfor %} +