@@ -82,18 +82,24 @@ def _validate_series_type(self, series_type):
82
82
""" Validate Series Type options. """
83
83
return self ._validate_options ("Series Type" , series_type , self .series_type_options )
84
84
85
- def _validate_tvdb_ids (self , tvdb_ids ):
85
+ def _validate_tvdb_ids (self , ids ):
86
86
""" Validate TVDb IDs. """
87
87
valid_ids = []
88
88
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 ))
95
101
else :
96
- invalid_ids .append (tvdb_id )
102
+ invalid_ids .append (_id )
97
103
return valid_ids , invalid_ids
98
104
99
105
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
295
301
series = []
296
302
existing_series = []
297
303
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
301
308
try :
302
309
if isinstance (item , Series ):
303
310
show = item
304
311
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 ) :
306
313
raise NotFound
307
314
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 ) :
309
316
raise NotFound
317
+ used_ids .append (show .tmdbId )
310
318
try :
311
319
json .append (show ._get_add_data (options , path = path ))
312
320
except Exists :
313
321
existing_series .append (show )
314
322
except NotFound :
315
- invalid_ids .append (item )
323
+ invalid_ids .append (input_item )
316
324
if len (json ) > 0 :
317
325
if per_request is None :
318
326
per_request = len (json )
0 commit comments