Include URL in live.yaml

This commit is contained in:
Edward Betts 2025-08-04 20:44:30 +01:00
parent aa22d76699
commit ff0d81f32c
2 changed files with 21 additions and 19 deletions

View file

@ -7,6 +7,7 @@ import os
import re import re
import smtplib import smtplib
import warnings import warnings
from dataclasses import dataclass
from datetime import date from datetime import date
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.utils import formatdate, make_msgid from email.utils import formatdate, make_msgid
@ -168,20 +169,15 @@ def parse_opengraph_tags(html: str) -> dict[str, str]:
return og_tags return og_tags
@dataclass
class Conference: class Conference:
"""Conference.""" """Conference."""
name: str name: str
src_url: str src_url: str
year: int year: int
response: None | requests.models.Response response: requests.models.Response | None = None
redirect_to_url: str | None = None
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
@property @property
def url(self) -> str: def url(self) -> str:
@ -246,6 +242,7 @@ class Conference:
): ):
body = f"{self.name}\n{self.url}\n" body = f"{self.name}\n{self.url}\n"
else: else:
self.redirect_to_url = redirect_to_url
body = f"{self.name}\n{self.url} redirects to {redirect_to_url}\n" body = f"{self.name}\n{self.url} redirects to {redirect_to_url}\n"
body += f"Web page title: {msg}{og}" "" body += f"Web page title: {msg}{og}" ""
@ -277,12 +274,6 @@ def send_mail(subject: str, body: str) -> None:
s.quit() 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( def find_new_conference_web_sites(
today: date, live: list[LiveConference] today: date, live: list[LiveConference]
) -> list[LiveConference]: ) -> list[LiveConference]:
@ -293,11 +284,21 @@ def find_new_conference_web_sites(
live_set = {(c["conference"], c["year"]) for c in live} live_set = {(c["conference"], c["year"]) for c in live}
for name, src_url in load_yaml("conferences").items(): for name, src_url in load_yaml("conferences").items():
new += [ for year in (this_year, this_year + 1):
{"conference": name, "year": year, "live": today} if (name, year) in live_set:
for year in (this_year, this_year + 1) continue
if (name, year) not in live_set and check(name, src_url, year) 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 return new

View file

@ -28,6 +28,7 @@ class LiveConference(typing.TypedDict, total=False):
year: int year: int
live: date live: date
url: str | None url: str | None
redirect_to_url: str | None
def load_yaml(name: str) -> typing.Any: def load_yaml(name: str) -> typing.Any: