public SeriesResource EnsureSeries(int tvdbId, string seriesTitle, bool?monitored = null) { var result = Series.All().FirstOrDefault(v => v.TvdbId == tvdbId); if (result == null) { var lookup = Series.Lookup("tvdb:" + tvdbId); var series = lookup.First(); series.ProfileId = 1; series.LanguageProfileId = 1; series.Path = Path.Combine(SeriesRootFolder, series.Title); series.Monitored = true; series.Seasons.ForEach(v => v.Monitored = true); series.AddOptions = new Core.Tv.AddSeriesOptions(); Directory.CreateDirectory(series.Path); result = Series.Post(series); Commands.WaitAll(); WaitForCompletion(() => Episodes.GetEpisodesInSeries(result.Id).Count > 0); } if (monitored.HasValue) { var changed = false; if (result.Monitored != monitored.Value) { result.Monitored = monitored.Value; changed = true; } result.Seasons.ForEach(season => { if (season.Monitored != monitored.Value) { season.Monitored = monitored.Value; changed = true; } }); if (changed) { Series.Put(result); } } return(result); }