@@ -162,9 +162,25 @@ def process_upgrade_seasons_mode(
162162 sonarr_logger .info ("No valid seasons with cutoff unmet episodes found." )
163163 return False
164164
165+ # CRITICAL FIX: Filter out already processed seasons at the season level
166+ # This prevents the same season pack upgrade from being processed repeatedly
167+ unprocessed_seasons = []
168+ for series_id , season_number , episode_count , series_title in available_seasons :
169+ season_id = f"{ series_id } _{ season_number } "
170+ if not is_processed ("sonarr" , instance_name , season_id ):
171+ unprocessed_seasons .append ((series_id , season_number , episode_count , series_title ))
172+ else :
173+ sonarr_logger .debug (f"Skipping already processed season ID: { season_id } ({ series_title } - Season { season_number } )" )
174+
175+ sonarr_logger .info (f"Found { len (unprocessed_seasons )} unprocessed seasons out of { len (available_seasons )} total seasons with cutoff unmet episodes." )
176+
177+ if not unprocessed_seasons :
178+ sonarr_logger .info ("All seasons with cutoff unmet episodes have been processed." )
179+ return False
180+
165181 # Select seasons to process - always randomly
166- random .shuffle (available_seasons )
167- seasons_to_process = available_seasons [:hunt_upgrade_items ]
182+ random .shuffle (unprocessed_seasons )
183+ seasons_to_process = unprocessed_seasons [:hunt_upgrade_items ]
168184
169185 sonarr_logger .info (f"Selected { len (seasons_to_process )} seasons with cutoff unmet episodes to process" )
170186
@@ -212,6 +228,11 @@ def process_upgrade_seasons_mode(
212228 # Log this as a season pack upgrade in the history
213229 log_season_pack_upgrade (api_url , api_key , api_timeout , series_id , season_number , instance_name )
214230
231+ # CRITICAL FIX: Mark the season as processed at the season level to prevent reprocessing
232+ season_id = f"{ series_id } _{ season_number } "
233+ add_processed_id ("sonarr" , instance_name , season_id )
234+ sonarr_logger .debug (f"Marked season ID { season_id } as processed for upgrades ({ series_title } - Season { season_number } )" )
235+
215236 # We'll increment stats individually for each episode instead of in batch
216237 # increment_stat("sonarr", "upgraded", len(episode_ids))
217238 # sonarr_logger.debug(f"Incremented sonarr upgraded statistics by {len(episode_ids)}")
0 commit comments