Skip to content

Commit cffa043

Browse files
committed
fix for multiple ids in the same call
1 parent 49c650c commit cffa043

File tree

3 files changed

+38
-23
lines changed

3 files changed

+38
-23
lines changed

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.2.4
1+
1.2.5

arrapi/apis/radarr.py

+15-8
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,21 @@ def _validate_ids(self, ids):
6767
""" Validate IDs. """
6868
valid_ids = []
6969
invalid_ids = []
70+
used_ids = []
7071
radarr_ids = {}
7172
for m in self.all_movies():
7273
radarr_ids[m.tmdbId] = m
7374
radarr_ids[str(m.tmdbId)] = m
7475
radarr_ids[m.imdbId] = m
7576
for _id in ids:
76-
if isinstance(_id, Movie):
77+
if isinstance(_id, Movie) and str(_id.tmdbId) not in used_ids and str(_id.imdbId) not in used_ids:
7778
valid_ids.append(_id.id)
78-
elif _id in radarr_ids:
79+
used_ids.append(str(_id.tmdbId))
80+
used_ids.append(str(_id.imdbId))
81+
elif _id in radarr_ids and str(_id.tmdbId) not in used_ids and str(_id.imdbId) not in used_ids:
7982
valid_ids.append(radarr_ids[_id].id)
83+
used_ids.append(str(_id.tmdbId))
84+
used_ids.append(str(_id.imdbId))
8085
else:
8186
invalid_ids.append(_id)
8287
return valid_ids, invalid_ids
@@ -264,26 +269,28 @@ def add_multiple_movies(self, ids: List[Union[int, str, Movie, Tuple[Union[int,
264269
movies = []
265270
existing_movies = []
266271
invalid_ids = []
267-
for item in ids:
268-
path = item[1] if isinstance(item, tuple) else None
269-
item = item[0] if isinstance(item, tuple) else item
272+
used_ids = []
273+
for input_item in ids:
274+
path = input_item[1] if isinstance(input_item, tuple) else None
275+
item = input_item[0] if isinstance(input_item, tuple) else input_item
270276
try:
271277
if isinstance(item, Movie):
272278
movie = item
273279
elif str(item).startswith("tt"):
274280
movie = self.get_movie(imdb_id=item)
275281
else:
276-
if self.exclusions and int(item) in self.exclusions:
282+
if int(item) in used_ids or (self.exclusions and int(item) in self.exclusions):
277283
raise NotFound
278284
movie = self.get_movie(tmdb_id=item)
279-
if self.exclusions and movie.tmdbId in self.exclusions:
285+
if movie.tmdbId in used_ids or (self.exclusions and movie.tmdbId in self.exclusions):
280286
raise NotFound
287+
used_ids.append(movie.tmdbId)
281288
try:
282289
json.append(movie._get_add_data(options, path=path))
283290
except Exists:
284291
existing_movies.append(movie)
285292
except NotFound:
286-
invalid_ids.append(item)
293+
invalid_ids.append(input_item)
287294
if len(json) > 0:
288295
if per_request is None:
289296
per_request = len(json)

arrapi/apis/sonarr.py

+22-14
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,24 @@ def _validate_series_type(self, series_type):
8282
""" Validate Series Type options. """
8383
return self._validate_options("Series Type", series_type, self.series_type_options)
8484

85-
def _validate_tvdb_ids(self, tvdb_ids):
85+
def _validate_tvdb_ids(self, ids):
8686
""" Validate TVDb IDs. """
8787
valid_ids = []
8888
invalid_ids = []
89-
tvdb_sonarr_ids = {m.tvdbId: m for m in self.all_series()}
90-
for tvdb_id in tvdb_ids:
91-
if isinstance(tvdb_id, Series):
92-
tvdb_id = tvdb_id.tvdbId
93-
if tvdb_id in tvdb_sonarr_ids:
94-
valid_ids.append(tvdb_sonarr_ids[tvdb_id].id)
89+
used_ids = []
90+
sonarr_ids = {}
91+
for s in self.all_series():
92+
sonarr_ids[s.tvdbId] = s
93+
sonarr_ids[str(s.tvdbId)] = s
94+
for _id in ids:
95+
if isinstance(_id, Series) and str(_id.tvdbId) not in used_ids:
96+
valid_ids.append(_id.id)
97+
used_ids.append(str(_id.tvdbId))
98+
elif _id in sonarr_ids and str(_id.tvdbId) not in used_ids:
99+
valid_ids.append(sonarr_ids[_id].id)
100+
used_ids.append(str(_id))
95101
else:
96-
invalid_ids.append(tvdb_id)
102+
invalid_ids.append(_id)
97103
return valid_ids, invalid_ids
98104

99105
def respect_list_exclusions_when_adding(self):
@@ -295,24 +301,26 @@ def add_multiple_series(self, ids: List[Union[Series, int, Tuple[Union[Series, i
295301
series = []
296302
existing_series = []
297303
invalid_ids = []
298-
for item in ids:
299-
path = item[1] if isinstance(item, tuple) else None
300-
item = item[0] if isinstance(item, tuple) else item
304+
used_ids = []
305+
for input_item in ids:
306+
path = input_item[1] if isinstance(input_item, tuple) else None
307+
item = input_item[0] if isinstance(input_item, tuple) else input_item
301308
try:
302309
if isinstance(item, Series):
303310
show = item
304311
else:
305-
if self.exclusions and int(item) in self.exclusions:
312+
if int(item) in used_ids or (self.exclusions and int(item) in self.exclusions):
306313
raise NotFound
307314
show = self.get_series(tvdb_id=item)
308-
if self.exclusions and show.tvdbId in self.exclusions:
315+
if show.tvdbId in used_ids or (self.exclusions and show.tvdbId in self.exclusions):
309316
raise NotFound
317+
used_ids.append(show.tmdbId)
310318
try:
311319
json.append(show._get_add_data(options, path=path))
312320
except Exists:
313321
existing_series.append(show)
314322
except NotFound:
315-
invalid_ids.append(item)
323+
invalid_ids.append(input_item)
316324
if len(json) > 0:
317325
if per_request is None:
318326
per_request = len(json)

0 commit comments

Comments
 (0)