From 870c6cdee25d3932e7a94bd787ff81c8a8c69620 Mon Sep 17 00:00:00 2001 From: Robin Dadswell <19610103+RobinDadswell@users.noreply.github.com> Date: Mon, 17 Jan 2022 01:40:12 +0000 Subject: [PATCH] Fixed: Streamlined API calls to Radarr and Sonarr (#221) --- varken/radarr.py | 15 ++------------- varken/sonarr.py | 25 +++++++------------------ varken/structures.py | 4 ++++ 3 files changed, 13 insertions(+), 31 deletions(-) diff --git a/varken/radarr.py b/varken/radarr.py index f654198..3a153ff 100644 --- a/varken/radarr.py +++ b/varken/radarr.py @@ -18,17 +18,6 @@ class RadarrAPI(object): def __repr__(self): return f"" - def get_movie(self, id): - endpoint = '/api/v3/movie/' - - req = self.session.prepare_request(Request('GET', self.server.url + endpoint + str(id))) - get = connection_handler(self.session, req, self.server.verify_ssl) - - if not get: - return - - return RadarrMovie(**get) - def get_missing(self): endpoint = '/api/v3/movie' now = datetime.now(timezone.utc).astimezone().isoformat() @@ -84,7 +73,7 @@ class RadarrAPI(object): now = datetime.now(timezone.utc).astimezone().isoformat() influx_payload = [] pageSize = 250 - params = {'pageSize': pageSize} + params = {'pageSize': pageSize, 'includeMovie': True} queueResponse = [] queue = [] @@ -118,7 +107,7 @@ class RadarrAPI(object): return for queue_item in download_queue: - movie = self.get_movie(queue_item.movieId) + movie = queue_item.movie name = f'{movie.title} ({movie.year})' diff --git a/varken/sonarr.py b/varken/sonarr.py index 0bb8684..f89b1df 100644 --- a/varken/sonarr.py +++ b/varken/sonarr.py @@ -2,7 +2,7 @@ from logging import getLogger from requests import Session, Request from datetime import datetime, timezone, date, timedelta -from varken.structures import SonarrEpisode, SonarrQueue, QueuePages, SonarrTVShow +from varken.structures import SonarrEpisode, SonarrQueue, QueuePages from varken.helpers import hashit, connection_handler @@ -19,17 +19,6 @@ class SonarrAPI(object): def __repr__(self): return f"" - def get_series(self, id): - endpoint = '/api/v3/series/' - - req = self.session.prepare_request(Request('GET', self.server.url + endpoint + str(id))) - get = connection_handler(self.session, req, self.server.verify_ssl) - - if not get: - return - - return SonarrTVShow(**get) - def get_episode(self, id): endpoint = '/api/v3/episode' params = {'episodeIds': id} @@ -49,9 +38,9 @@ class SonarrAPI(object): future = str(date.today() + timedelta(days=self.server.future_days)) now = datetime.now(timezone.utc).astimezone().isoformat() if query == "Missing": - params = {'start': last_days, 'end': today} + params = {'start': last_days, 'end': today, 'includeSeries': True} else: - params = {'start': today, 'end': future} + params = {'start': today, 'end': future, 'includeSeries': True} influx_payload = [] air_days = [] missing = [] @@ -71,7 +60,7 @@ class SonarrAPI(object): 'attempted is: %s', e, show) for episode in tv_shows: - tvShow = self.get_series(episode.seriesId) + tvShow = episode.series sxe = f'S{episode.seasonNumber:0>2}E{episode.episodeNumber:0>2}' if episode.hasFile: downloaded = 1 @@ -126,7 +115,7 @@ class SonarrAPI(object): while response.totalRecords > response.page * response.pageSize: page = response.page + 1 - params = {'pageSize': pageSize, 'page': page} + params = {'pageSize': pageSize, 'page': page, 'includeSeries': True, 'includeEpisode': True} req = self.session.prepare_request(Request('GET', self.server.url + endpoint, params=params)) get = connection_handler(self.session, req, self.server.verify_ssl) if not get: @@ -146,8 +135,8 @@ class SonarrAPI(object): return for queueItem in download_queue: - tvShow = self.get_series(queueItem.seriesId) - episode = self.get_episode(queueItem.episodeId) + tvShow = queueItem.series + episode = queueItem.episode try: sxe = f"S{episode.seasonNumber:0>2}E{episode.episodeNumber:0>2}" except TypeError as e: diff --git a/varken/structures.py b/varken/structures.py index f2f28f2..995ef92 100644 --- a/varken/structures.py +++ b/varken/structures.py @@ -272,6 +272,7 @@ class SonarrEpisode(NamedTuple): sceneAbsoluteEpisodeNumber: int = None sceneEpisodeNumber: int = None sceneSeasonNumber: int = None + series: SonarrTVShow = None class SonarrQueue(NamedTuple): @@ -293,6 +294,8 @@ class SonarrQueue(NamedTuple): seriesId: int = None errorMessage: str = None outputPath: str = None + series: SonarrTVShow = None + episode: SonarrEpisode = None # Radarr @@ -358,6 +361,7 @@ class RadarrQueue(NamedTuple): estimatedCompletionTime: str = None errorMessage: str = None outputPath: str = None + movie: RadarrMovie = None # Sickchill