From f7356b11c42ef5b0f94876f113e6cca1b09c0b5d Mon Sep 17 00:00:00 2001 From: meisnate12 Date: Thu, 23 Jan 2025 17:00:35 -0500 Subject: [PATCH] combine gotify and ntfy message building --- modules/gotify.py | 67 ++------------------------------- modules/ntfy.py | 90 ++++----------------------------------------- modules/webhooks.py | 72 ++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 146 deletions(-) diff --git a/modules/gotify.py b/modules/gotify.py index f118f8e2c..50b96dcbf 100644 --- a/modules/gotify.py +++ b/modules/gotify.py @@ -1,9 +1,10 @@ from json import JSONDecodeError -from modules import util +from modules import util, webhooks from modules.util import Failed logger = util.logger + class Gotify: def __init__(self, requests, params): self.requests = requests @@ -33,67 +34,5 @@ def _request(self, path="message", json=None, post=True): return response_json def notification(self, json): - message = "" - if json["event"] == "run_end": - title = "Run Completed" - message = f"Start Time: {json['start_time']}\n" \ - f"End Time: {json['end_time']}\n" \ - f"Run Time: {json['run_time']}\n" \ - f"Collections Created: {json['collections_created']}\n" \ - f"Collections Modified: {json['collections_modified']}\n" \ - f"Collections Deleted: {json['collections_deleted']}\n" \ - f"Items Added: {json['items_added']}\n" \ - f"Items Removed: {json['items_removed']}" - if json["added_to_radarr"]: - message += f"\n{json['added_to_radarr']} Movies Added To Radarr" - if json["added_to_sonarr"]: - message += f"\n{json['added_to_sonarr']} Movies Added To Sonarr" - elif json["event"] == "run_start": - title = "Run Started" - message = json["start_time"] - elif json["event"] == "version": - title = "New Version Available" - message = f"Current: {json['current']}\n" \ - f"Latest: {json['latest']}\n" \ - f"Notes: {json['notes']}" - elif json["event"] == "delete": - if "library_name" in json: - title = "Collection Deleted" - else: - title = "Playlist Deleted" - message = json["message"] - else: - new_line = "\n" - if "server_name" in json: - message += f"{new_line if message else ''}Server: {json['server_name']}" - if "library_name" in json: - message += f"{new_line if message else ''}Library: {json['library_name']}" - if "collection" in json: - message += f"{new_line if message else ''}Collection: {json['collection']}" - if "playlist" in json: - message += f"{new_line if message else ''}Playlist: {json['playlist']}" - if json["event"] == "error": - if "collection" in json: - title_name = "Collection" - elif "playlist" in json: - title_name = "Playlist" - elif "library_name" in json: - title_name = "Library" - else: - title_name = "Global" - title = f"{'Critical ' if json['critical'] else ''}{title_name} Error" - message += f"{new_line if message else ''}Error Message: {json['error']}" - else: - title = f"{'Collection' if 'collection' in json else 'Playlist'} {'Created' if json['created'] else 'Modified'}" - if json['radarr_adds']: - message += f"{new_line if message else ''}{len(json['radarr_adds'])} Radarr Additions:" - if json['sonarr_adds']: - message += f"{new_line if message else ''}{len(json['sonarr_adds'])} Sonarr Additions:" - message += f"{new_line if message else ''}{len(json['additions'])} Additions:" - for add_dict in json['additions']: - message += f"\n{add_dict['title']}" - message += f"{new_line if message else ''}{len(json['removals'])} Removals:" - for add_dict in json['removals']: - message += f"\n{add_dict['title']}" - + message, title, _ = webhooks.get_message(json) self._request(json={"message": message, "title": title}) diff --git a/modules/ntfy.py b/modules/ntfy.py index 8cc0ac218..39840e924 100644 --- a/modules/ntfy.py +++ b/modules/ntfy.py @@ -1,4 +1,4 @@ -from modules import util +from modules import util, webhooks from modules.util import Failed logger = util.logger @@ -13,12 +13,6 @@ def __init__(self, requests, params): logger.secret(self.url) logger.secret(self.token) - logger.secret(self.topic) - - self.headers = { - 'Authorization': f'Bearer {self.token}', - 'Icon': 'https://kometa.wiki/en/latest/assets/icon.png', - } self._test_url() @@ -30,10 +24,13 @@ def _test_url(self): raise Failed("ntfy Error: Invalid details") def _request(self, message: str, title: str = None, priority: int = 3): - headers = self.headers.copy() - headers['Priority'] = str(priority) + headers = { + "Authorization": f"Bearer {self.token}", + "Icon": "https://kometa.wiki/en/latest/assets/icon.png", + "Priority": str(priority) + } if title: - headers['Title'] = title + headers["Title"] = title response = self.requests.post(f"{self.url}/{self.topic}", headers=headers, data=message) @@ -43,76 +40,5 @@ def _request(self, message: str, title: str = None, priority: int = 3): return response def notification(self, json): - message = "" - title = None - priority = 3 - - if json["event"] == "run_end": - priority = 4 - title = "Run Completed" - message = f"Start Time: {json['start_time']}\n" \ - f"End Time: {json['end_time']}\n" \ - f"Run Time: {json['run_time']}\n" \ - f"Collections Created: {json['collections_created']}\n" \ - f"Collections Modified: {json['collections_modified']}\n" \ - f"Collections Deleted: {json['collections_deleted']}\n" \ - f"Items Added: {json['items_added']}\n" \ - f"Items Removed: {json['items_removed']}" - if json["added_to_radarr"]: - message += f"\n{json['added_to_radarr']} Movies Added To Radarr" - if json["added_to_sonarr"]: - message += f"\n{json['added_to_sonarr']} Movies Added To Sonarr" - elif json["event"] == "run_start": - priority = 4 - title = "Run Started" - message = json["start_time"] - elif json["event"] == "version": - priority = 2 - title = "New Version Available" - message = f"Current: {json['current']}\n" \ - f"Latest: {json['latest']}\n" \ - f"Notes: {json['notes']}" - elif json["event"] == "delete": - priority = 3 - if "library_name" in json: - title = "Collection Deleted" - else: - title = "Playlist Deleted" - message = json["message"] - else: - new_line = "\n" - if "server_name" in json: - message += f"{new_line if message else ''}Server: {json['server_name']}" - if "library_name" in json: - message += f"{new_line if message else ''}Library: {json['library_name']}" - if "collection" in json: - message += f"{new_line if message else ''}Collection: {json['collection']}" - if "playlist" in json: - message += f"{new_line if message else ''}Playlist: {json['playlist']}" - if json["event"] == "error": - if "collection" in json: - title_name = "Collection" - elif "playlist" in json: - title_name = "Playlist" - elif "library_name" in json: - title_name = "Library" - else: - title_name = "Global" - priority = 5 - title = f"{'Critical ' if json['critical'] else ''}{title_name} Error" - message += f"{new_line if message else ''}Error Message: {json['error']}" - else: - priority = 3 - title = f"{'Collection' if 'collection' in json else 'Playlist'} {'Created' if json['created'] else 'Modified'}" - if json['radarr_adds']: - message += f"{new_line if message else ''}{len(json['radarr_adds'])} Radarr Additions:" - if json['sonarr_adds']: - message += f"{new_line if message else ''}{len(json['sonarr_adds'])} Sonarr Additions:" - message += f"{new_line if message else ''}{len(json['additions'])} Additions:" - for add_dict in json['additions']: - message += f"\n{add_dict['title']}" - message += f"{new_line if message else ''}{len(json['removals'])} Removals:" - for add_dict in json['removals']: - message += f"\n{add_dict['title']}" - + message, title, priority = webhooks.get_message(json) self._request(message=message, title=title, priority=priority) diff --git a/modules/webhooks.py b/modules/webhooks.py index 106d7942c..de5db2a30 100644 --- a/modules/webhooks.py +++ b/modules/webhooks.py @@ -4,6 +4,78 @@ logger = util.logger +def get_message(json): + message = "" + priority = 3 + if json["event"] == "run_end": + priority = 4 + title = "Run Completed" + message = f"Start Time: {json['start_time']}\n" \ + f"End Time: {json['end_time']}\n" \ + f"Run Time: {json['run_time']}\n" \ + f"Collections Created: {json['collections_created']}\n" \ + f"Collections Modified: {json['collections_modified']}\n" \ + f"Collections Deleted: {json['collections_deleted']}\n" \ + f"Items Added: {json['items_added']}\n" \ + f"Items Removed: {json['items_removed']}" + if json["added_to_radarr"]: + message += f"\n{json['added_to_radarr']} Movies Added To Radarr" + if json["added_to_sonarr"]: + message += f"\n{json['added_to_sonarr']} Movies Added To Sonarr" + elif json["event"] == "run_start": + priority = 4 + title = "Run Started" + message = json["start_time"] + elif json["event"] == "version": + priority = 2 + title = "New Version Available" + message = f"Current: {json['current']}\n" \ + f"Latest: {json['latest']}\n" \ + f"Notes: {json['notes']}" + elif json["event"] == "delete": + if "library_name" in json: + title = "Collection Deleted" + else: + title = "Playlist Deleted" + message = json["message"] + else: + new_line = "\n" + if "server_name" in json: + message += f"{new_line if message else ''}Server: {json['server_name']}" + if "library_name" in json: + message += f"{new_line if message else ''}Library: {json['library_name']}" + if "collection" in json: + message += f"{new_line if message else ''}Collection: {json['collection']}" + if "playlist" in json: + message += f"{new_line if message else ''}Playlist: {json['playlist']}" + if json["event"] == "error": + if "collection" in json: + title_name = "Collection" + elif "playlist" in json: + title_name = "Playlist" + elif "library_name" in json: + title_name = "Library" + else: + title_name = "Global" + priority = 5 + title = f"{'Critical ' if json['critical'] else ''}{title_name} Error" + message += f"{new_line if message else ''}Error Message: {json['error']}" + else: + title = f"{'Collection' if 'collection' in json else 'Playlist'} {'Created' if json['created'] else 'Modified'}" + if json['radarr_adds']: + message += f"{new_line if message else ''}{len(json['radarr_adds'])} Radarr Additions:" + if json['sonarr_adds']: + message += f"{new_line if message else ''}{len(json['sonarr_adds'])} Sonarr Additions:" + message += f"{new_line if message else ''}{len(json['additions'])} Additions:" + for add_dict in json['additions']: + message += f"\n{add_dict['title']}" + message += f"{new_line if message else ''}{len(json['removals'])} Removals:" + for add_dict in json['removals']: + message += f"\n{add_dict['title']}" + + return message, title, priority + + class Webhooks: def __init__(self, config, system_webhooks, library=None, notifiarr=None, gotify=None, ntfy=None): self.config = config