import enum import logging import requests from frozendict import frozendict from . import mailgun logger = logging.getLogger(__name__) SOUND_PATH = 'resource/sound/57808__guitarguy1985__carterattack.mp3' class NotificationType(enum.Enum): EMAIL = 1 LOUD_SOUND = 2 def send_email_notification( session: requests.Session, scraper_name: str, latest_dict: frozendict, ) -> None: body = ['A new update has occured for ', scraper_name, '\n'] for k, v in latest_dict.items(): body.append(f'{k}: {v}\n') mailgun.send_email(session, f'Updated {scraper_name}', ''.join(body)) def play_loud_and_annoying_sound( _session: requests.Session, _scraper_name: str, _latest_dict: frozendict, ) -> None: import playsound3 playsound3.playsound(SOUND_PATH, block=False) NOTIFICATION_TYPE_TO_NOTIFIER = { NotificationType.EMAIL: send_email_notification, NotificationType.LOUD_SOUND: play_loud_and_annoying_sound, } def send_notifications( session: requests.Session, scraper_name: str, latest_dict: frozendict, notification_types: set[NotificationType], ) -> None: for notification_type in notification_types: NOTIFICATION_TYPE_TO_NOTIFIER[notification_type]( session, scraper_name, latest_dict, )