Fixed: Streamlined API calls to Radarr and Sonarr (#221)

This commit is contained in:
Robin Dadswell 2022-01-17 01:40:12 +00:00 committed by GitHub
parent 9508c3c3f7
commit 870c6cdee2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 31 deletions

View file

@ -18,17 +18,6 @@ class RadarrAPI(object):
def __repr__(self): def __repr__(self):
return f"<radarr-{self.server.id}>" return f"<radarr-{self.server.id}>"
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): def get_missing(self):
endpoint = '/api/v3/movie' endpoint = '/api/v3/movie'
now = datetime.now(timezone.utc).astimezone().isoformat() now = datetime.now(timezone.utc).astimezone().isoformat()
@ -84,7 +73,7 @@ class RadarrAPI(object):
now = datetime.now(timezone.utc).astimezone().isoformat() now = datetime.now(timezone.utc).astimezone().isoformat()
influx_payload = [] influx_payload = []
pageSize = 250 pageSize = 250
params = {'pageSize': pageSize} params = {'pageSize': pageSize, 'includeMovie': True}
queueResponse = [] queueResponse = []
queue = [] queue = []
@ -118,7 +107,7 @@ class RadarrAPI(object):
return return
for queue_item in download_queue: for queue_item in download_queue:
movie = self.get_movie(queue_item.movieId) movie = queue_item.movie
name = f'{movie.title} ({movie.year})' name = f'{movie.title} ({movie.year})'

View file

@ -2,7 +2,7 @@ from logging import getLogger
from requests import Session, Request from requests import Session, Request
from datetime import datetime, timezone, date, timedelta 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 from varken.helpers import hashit, connection_handler
@ -19,17 +19,6 @@ class SonarrAPI(object):
def __repr__(self): def __repr__(self):
return f"<sonarr-{self.server.id}>" return f"<sonarr-{self.server.id}>"
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): def get_episode(self, id):
endpoint = '/api/v3/episode' endpoint = '/api/v3/episode'
params = {'episodeIds': id} params = {'episodeIds': id}
@ -49,9 +38,9 @@ class SonarrAPI(object):
future = str(date.today() + timedelta(days=self.server.future_days)) future = str(date.today() + timedelta(days=self.server.future_days))
now = datetime.now(timezone.utc).astimezone().isoformat() now = datetime.now(timezone.utc).astimezone().isoformat()
if query == "Missing": if query == "Missing":
params = {'start': last_days, 'end': today} params = {'start': last_days, 'end': today, 'includeSeries': True}
else: else:
params = {'start': today, 'end': future} params = {'start': today, 'end': future, 'includeSeries': True}
influx_payload = [] influx_payload = []
air_days = [] air_days = []
missing = [] missing = []
@ -71,7 +60,7 @@ class SonarrAPI(object):
'attempted is: %s', e, show) 'attempted is: %s', e, show)
for episode in tv_shows: 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}' sxe = f'S{episode.seasonNumber:0>2}E{episode.episodeNumber:0>2}'
if episode.hasFile: if episode.hasFile:
downloaded = 1 downloaded = 1
@ -126,7 +115,7 @@ class SonarrAPI(object):
while response.totalRecords > response.page * response.pageSize: while response.totalRecords > response.page * response.pageSize:
page = response.page + 1 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)) req = self.session.prepare_request(Request('GET', self.server.url + endpoint, params=params))
get = connection_handler(self.session, req, self.server.verify_ssl) get = connection_handler(self.session, req, self.server.verify_ssl)
if not get: if not get:
@ -146,8 +135,8 @@ class SonarrAPI(object):
return return
for queueItem in download_queue: for queueItem in download_queue:
tvShow = self.get_series(queueItem.seriesId) tvShow = queueItem.series
episode = self.get_episode(queueItem.episodeId) episode = queueItem.episode
try: try:
sxe = f"S{episode.seasonNumber:0>2}E{episode.episodeNumber:0>2}" sxe = f"S{episode.seasonNumber:0>2}E{episode.episodeNumber:0>2}"
except TypeError as e: except TypeError as e:

View file

@ -272,6 +272,7 @@ class SonarrEpisode(NamedTuple):
sceneAbsoluteEpisodeNumber: int = None sceneAbsoluteEpisodeNumber: int = None
sceneEpisodeNumber: int = None sceneEpisodeNumber: int = None
sceneSeasonNumber: int = None sceneSeasonNumber: int = None
series: SonarrTVShow = None
class SonarrQueue(NamedTuple): class SonarrQueue(NamedTuple):
@ -293,6 +294,8 @@ class SonarrQueue(NamedTuple):
seriesId: int = None seriesId: int = None
errorMessage: str = None errorMessage: str = None
outputPath: str = None outputPath: str = None
series: SonarrTVShow = None
episode: SonarrEpisode = None
# Radarr # Radarr
@ -358,6 +361,7 @@ class RadarrQueue(NamedTuple):
estimatedCompletionTime: str = None estimatedCompletionTime: str = None
errorMessage: str = None errorMessage: str = None
outputPath: str = None outputPath: str = None
movie: RadarrMovie = None
# Sickchill # Sickchill