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):
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):
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})'

View file

@ -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"<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):
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:

View file

@ -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