bazarr/bazarr/notifier.py

100 lines
2.9 KiB
Python
Raw Normal View History

# coding=utf-8
import apprise
import logging
2019-10-22 02:13:37 +00:00
from database import database
def update_notifier():
# define apprise object
a = apprise.Apprise()
2020-01-30 23:03:35 +00:00
# Retrieve all of the details
results = a.details()
2020-01-30 23:03:35 +00:00
notifiers_new = []
notifiers_old = []
2020-01-30 23:03:35 +00:00
2019-10-22 02:13:37 +00:00
notifiers_current_db = database.execute("SELECT name FROM table_settings_notifier")
2019-08-20 18:53:16 +00:00
2019-08-21 01:06:10 +00:00
notifiers_current = []
for notifier in notifiers_current_db:
2019-11-13 01:40:16 +00:00
notifiers_current.append([notifier['name']])
2019-08-21 01:06:10 +00:00
for x in results['schemas']:
2019-11-13 01:40:16 +00:00
if [x['service_name']] not in notifiers_current:
notifiers_new.append([x['service_name'], 0])
logging.debug('Adding new notifier agent: ' + x['service_name'])
else:
2019-11-13 01:40:16 +00:00
notifiers_old.append([x['service_name']])
2020-01-30 23:03:35 +00:00
2019-11-13 01:40:16 +00:00
notifiers_to_delete = [item for item in notifiers_current if item not in notifiers_old]
2020-01-30 23:03:35 +00:00
database.execute("INSERT INTO table_settings_notifier (name, enabled) VALUES (?, ?)", notifiers_new,
execute_many=True)
2019-11-13 01:40:16 +00:00
database.execute("DELETE FROM table_settings_notifier WHERE name=?", notifiers_to_delete, execute_many=True)
def get_notifier_providers():
2019-10-22 02:13:37 +00:00
providers = database.execute("SELECT name, url FROM table_settings_notifier WHERE enabled=1")
2020-01-30 23:03:35 +00:00
return providers
2020-01-30 23:03:35 +00:00
def get_series_name(sonarr_series_id):
data = database.execute("SELECT title FROM table_shows WHERE sonarrSeriesId=?", (sonarr_series_id,), only_one=True)
2019-10-27 03:17:14 +00:00
return data['title'] or None
2020-01-30 23:03:35 +00:00
def get_episode_name(sonarr_episode_id):
2019-10-27 01:16:59 +00:00
data = database.execute("SELECT title, season, episode FROM table_episodes WHERE sonarrEpisodeId=?",
2020-01-30 23:03:35 +00:00
(sonarr_episode_id,), only_one=True)
2019-10-22 02:13:37 +00:00
return data['title'], data['season'], data['episode']
2020-01-30 23:03:35 +00:00
def get_movies_name(radarr_id):
data = database.execute("SELECT title FROM table_movies WHERE radarrId=?", (radarr_id,), only_one=True)
2019-10-28 00:45:15 +00:00
2019-10-22 02:13:37 +00:00
return data['title']
2018-04-24 14:48:52 +00:00
2020-01-30 23:03:35 +00:00
def send_notifications(sonarr_series_id, sonarr_episode_id, message):
providers = get_notifier_providers()
2020-01-30 23:03:35 +00:00
series = get_series_name(sonarr_series_id)
episode = get_episode_name(sonarr_episode_id)
asset = apprise.AppriseAsset(async_mode=False)
apobj = apprise.Apprise(asset=asset)
2020-01-30 23:03:35 +00:00
for provider in providers:
if provider['url'] is not None:
apobj.add(provider['url'])
2020-01-30 23:03:35 +00:00
apobj.notify(
title='Bazarr notification',
2020-01-30 23:03:35 +00:00
body="{} - S{:02d}E{:02d} - {} : {}".format(series, episode[1], episode[2], episode[0], message),
2018-04-24 14:48:52 +00:00
)
2020-01-30 23:03:35 +00:00
def send_notifications_movie(radarr_id, message):
2018-04-24 14:48:52 +00:00
providers = get_notifier_providers()
2020-01-30 23:03:35 +00:00
movie = get_movies_name(radarr_id)
asset = apprise.AppriseAsset(async_mode=False)
apobj = apprise.Apprise(asset=asset)
2020-01-30 23:03:35 +00:00
2018-04-24 14:48:52 +00:00
for provider in providers:
if provider['url'] is not None:
apobj.add(provider['url'])
2020-01-30 23:03:35 +00:00
2018-04-24 14:48:52 +00:00
apobj.notify(
title='Bazarr notification',
2020-01-30 23:03:35 +00:00
body="{} : {}".format(movie, message),
)