From ff0d81f32c66fb8d4a719f14f99c0eb7ea5acb47 Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Mon, 4 Aug 2025 20:44:30 +0100 Subject: [PATCH] Include URL in live.yaml --- check.py | 39 ++++++++++++++++++++------------------- conference/__init__.py | 1 + 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/check.py b/check.py index 40d6575..b4b6383 100755 --- a/check.py +++ b/check.py @@ -7,6 +7,7 @@ import os import re import smtplib import warnings +from dataclasses import dataclass from datetime import date from email.mime.text import MIMEText from email.utils import formatdate, make_msgid @@ -168,20 +169,15 @@ def parse_opengraph_tags(html: str) -> dict[str, str]: return og_tags +@dataclass class Conference: """Conference.""" name: str src_url: str year: int - response: None | requests.models.Response - - def __init__(self, name: str, src_url: str, year: int): - """Init.""" - self.name = name - self.src_url = src_url - self.year = year - self.response = None + response: requests.models.Response | None = None + redirect_to_url: str | None = None @property def url(self) -> str: @@ -246,6 +242,7 @@ class Conference: ): body = f"{self.name}\n{self.url}\n" else: + self.redirect_to_url = redirect_to_url body = f"{self.name}\n{self.url} redirects to {redirect_to_url}\n" body += f"Web page title: {msg}{og}" "" @@ -277,12 +274,6 @@ def send_mail(subject: str, body: str) -> None: s.quit() -def check(name: str, src_url: str, year: int) -> bool: - """Check to see if conference site is live.""" - conf = Conference(name, src_url, year) - return conf.check_web_site() - - def find_new_conference_web_sites( today: date, live: list[LiveConference] ) -> list[LiveConference]: @@ -293,11 +284,21 @@ def find_new_conference_web_sites( live_set = {(c["conference"], c["year"]) for c in live} for name, src_url in load_yaml("conferences").items(): - new += [ - {"conference": name, "year": year, "live": today} - for year in (this_year, this_year + 1) - if (name, year) not in live_set and check(name, src_url, year) - ] + for year in (this_year, this_year + 1): + if (name, year) in live_set: + continue + conf = Conference(name, src_url, year) + if not conf.check_web_site(): + continue + c: LiveConference = { + "conference": name, + "year": year, + "live": today, + "url": conf.url, + } + if conf.redirect_to_url: + c["redirect_to_url"] = conf.redirect_to_url + new.append(c) return new diff --git a/conference/__init__.py b/conference/__init__.py index 415e3d2..e1d57a5 100644 --- a/conference/__init__.py +++ b/conference/__init__.py @@ -28,6 +28,7 @@ class LiveConference(typing.TypedDict, total=False): year: int live: date url: str | None + redirect_to_url: str | None def load_yaml(name: str) -> typing.Any: