private static async Task CleanUpRadarr(StreamingProvider[] providers, JustWatchClient justWatch) { if (string.IsNullOrWhiteSpace(_config?.Radarr?.Url) || string.IsNullOrWhiteSpace(_config?.Radarr?.Key)) { Console.WriteLine("Radarr not configured."); return; } Console.WriteLine("Cleaning up Radarr..."); var radarr = new RadarrClient(_config.Radarr.Url, _config.Radarr.Key); var movies = await radarr.GetMovies(); var today = DateTime.UtcNow; foreach (var movie in movies) { // Filter out the movies that actually make sense to check var isMonitored = movie.Monitored ?? true; var isDownloaded = movie.Downloaded ?? false; if (!isDownloaded) { // Check cinema date if (movie.InCinemas.HasValue) { if (movie.InCinemas.Value > today) { // No need to check; not yet in cinemas. continue; } } // Check physical release if (movie.PhysicalRelease.HasValue) { if (movie.PhysicalRelease.Value > today) { // No need to check; not yet in released. continue; } } if (!isMonitored) { continue; } } // Can we stream it? var streamProviders = await MovieCanBeStreamedOn(providers, justWatch, movie); if (streamProviders.Any()) { var stuffTitle = $"Movie: {movie.Title}"; if (await radarr.DeleteMovie(movie.Id, true)) { _deletedStuff.Add(stuffTitle); } else { _failedStuff.Add(stuffTitle); } } } }