@@ -209,6 +209,34 @@ class SonarrAPI extends ServarrBase<{
209209 series : newSeriesResponse . data ,
210210 } ) ;
211211
212+ try {
213+ const episodes = await this . getEpisodes ( newSeriesResponse . data . id ) ;
214+ const episodeIdsToMonitor = episodes
215+ . filter (
216+ ( ep ) =>
217+ options . seasons . includes ( ep . seasonNumber ) && ! ep . monitored
218+ )
219+ . map ( ( ep ) => ep . id ) ;
220+
221+ if ( episodeIdsToMonitor . length > 0 ) {
222+ logger . debug (
223+ 'Re-monitoring unmonitored episodes for requested seasons.' ,
224+ {
225+ label : 'Sonarr' ,
226+ seriesId : newSeriesResponse . data . id ,
227+ episodeCount : episodeIdsToMonitor . length ,
228+ }
229+ ) ;
230+ await this . monitorEpisodes ( episodeIdsToMonitor ) ;
231+ }
232+ } catch ( e ) {
233+ logger . warn ( 'Failed to re-monitor episodes' , {
234+ label : 'Sonarr' ,
235+ errorMessage : e . message ,
236+ seriesId : newSeriesResponse . data . id ,
237+ } ) ;
238+ }
239+
212240 if ( options . searchNow ) {
213241 this . searchSeries ( newSeriesResponse . data . id ) ;
214242 }
@@ -318,6 +346,38 @@ class SonarrAPI extends ServarrBase<{
318346 }
319347 }
320348
349+ public async getEpisodes ( seriesId : number ) : Promise < EpisodeResult [ ] > {
350+ try {
351+ const response = await this . axios . get < EpisodeResult [ ] > ( '/episode' , {
352+ params : { seriesId } ,
353+ } ) ;
354+ return response . data ;
355+ } catch ( e ) {
356+ logger . error ( 'Failed to retrieve episodes' , {
357+ label : 'Sonarr API' ,
358+ errorMessage : e . message ,
359+ seriesId,
360+ } ) ;
361+ throw new Error ( 'Failed to get episodes' ) ;
362+ }
363+ }
364+
365+ public async monitorEpisodes ( episodeIds : number [ ] ) : Promise < void > {
366+ try {
367+ await this . axios . put ( '/episode/monitor' , {
368+ episodeIds,
369+ monitored : true ,
370+ } ) ;
371+ } catch ( e ) {
372+ logger . error ( 'Failed to monitor episodes' , {
373+ label : 'Sonarr API' ,
374+ errorMessage : e . message ,
375+ episodeIds,
376+ } ) ;
377+ throw new Error ( 'Failed to monitor episodes' ) ;
378+ }
379+ }
380+
321381 private buildSeasonList (
322382 seasons : number [ ] ,
323383 existingSeasons ?: SonarrSeason [ ]
0 commit comments