diff --git a/agenda/data.py b/agenda/data.py index d75b7c7..e306d50 100644 --- a/agenda/data.py +++ b/agenda/data.py @@ -20,6 +20,7 @@ from . import ( birthday, calendar, conference, + domains, economist, fx, gwr, @@ -250,6 +251,8 @@ async def get_data(now: datetime) -> typing.Mapping[str, str | object]: events += subscription.get_events(os.path.join(my_data, "subscriptions.yaml")) events += economist.publication_dates(last_week, next_year) + events += domains.renewal_dates(my_data) + events.sort(key=operator.attrgetter("as_datetime")) observer = sun.bristol() diff --git a/agenda/domains.py b/agenda/domains.py new file mode 100644 index 0000000..4e29880 --- /dev/null +++ b/agenda/domains.py @@ -0,0 +1,27 @@ +"""Accomodation.""" + +import csv +import os +from datetime import datetime + +from .types import Event + +url = "https://admin.gandi.net/domain/01578ef0-a84b-11e7-bdf3-00163e6dc886/" + + +def renewal_dates(data_dir: str) -> list[Event]: + """Get domain renewal dates.""" + domain_files = [ + (datetime.strptime(f, "export_domains_%m_%d_%Y_%I_%M_%p.csv"), f) + for f in os.listdir(data_dir) + if f.startswith("export_domains_") + ] + return [ + Event( + name="domain", + title=row["fqdn"], + date=datetime.fromisoformat(row["date_registry_end_utc"][:10]).date(), + url=url + row["fqdn"], + ) + for row in csv.DictReader(open(os.path.join(data_dir, max(domain_files)[1]))) + ]