Beispiel #1
0
        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);
                    }
                }
            }
        }