Initial commit
This commit is contained in:
commit
39b2fa24a6
2 changed files with 111 additions and 0 deletions
62
check.py
Executable file
62
check.py
Executable file
|
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/python3
|
||||
"""Watch https://osmcal.org/ for another Paris OSM hack weekend."""
|
||||
|
||||
import email.message
|
||||
import email.utils
|
||||
import smtplib
|
||||
import sys
|
||||
|
||||
import requests
|
||||
|
||||
MAIL_FROM = "edward@4angle.com"
|
||||
MAIL_TO = "edward@4angle.com"
|
||||
SMTP_HOST = "4angle.com"
|
||||
|
||||
URL = "https://osmcal.org/api/v2/events/?in=France"
|
||||
|
||||
|
||||
def send_mail(subject: str, body: str) -> None:
|
||||
"""Send an e-mail."""
|
||||
msg = email.message.EmailMessage()
|
||||
|
||||
msg["Subject"] = subject
|
||||
msg["To"] = f"Edward Betts <{MAIL_TO}>"
|
||||
msg["From"] = f"OSM Calendar alert <{MAIL_FROM}>"
|
||||
msg["Date"] = email.utils.formatdate()
|
||||
msg["Message-ID"] = email.utils.make_msgid()
|
||||
|
||||
msg.set_content(body)
|
||||
|
||||
s = smtplib.SMTP(SMTP_HOST)
|
||||
s.sendmail(MAIL_FROM, [MAIL_TO], msg.as_string())
|
||||
s.quit()
|
||||
|
||||
|
||||
def check_for_paris_events() -> None:
|
||||
"""Check for upcoming OSM events in Paris and send an email if found."""
|
||||
r = requests.get(URL)
|
||||
events = r.json()
|
||||
|
||||
paris_events = [
|
||||
event for event in events if "paris" in event["location"]["detailed"].lower()
|
||||
]
|
||||
|
||||
if not paris_events:
|
||||
if sys.stdin.isatty():
|
||||
print(f"{len(events)} events found, none in Paris.")
|
||||
return
|
||||
|
||||
subject = "Upcoming Paris OSM Hack Weekend Found!"
|
||||
count = len(paris_events)
|
||||
body = f"Found {count} {'event' if count == 1 else 'events'} in Paris:\n\n"
|
||||
for event in paris_events:
|
||||
body += (
|
||||
f"{event['name']} - {event['url']}\n"
|
||||
+ f"Date: {event['date']['human']}\n"
|
||||
+ f"Location: {event['location']['detailed']}\n\n"
|
||||
)
|
||||
send_mail(subject, body)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
check_for_paris_events()
|
||||
Loading…
Add table
Add a link
Reference in a new issue