Exemple #1
0
        public async Task <ScrapeResult> ScrapeAsync(IScrapeSession session, CancellationToken cancellationToken)
        {
            var libraries = await _client.GetMovieLibrariesAsync(cancellationToken);

            if (!libraries.Any())
            {
                throw new Exception("no plex movie libraries found");
            }

            _logger.LogInformation("found {libraryCount} libraries", libraries.Count);

            var movieTasks = libraries.Select(x => _client.GetMoviesAsync(x.Key, cancellationToken));
            var movies     = (await Task.WhenAll(movieTasks)).SelectMany(x => x).ToList();

            _logger.LogInformation("found {moviesCount} movies", movies.Count);

            var newMovies = session.ScrapeFrom.HasValue
                ? movies.Where(x => x.DateCreated > session.ScrapeFrom.Value).ToList()
                : movies;

            var requests = _mapper.Map <ICollection <CreateLocalMovieRequest> >(newMovies);
            await session.CreateLocalMoviesAsync(requests);

            return(new ScrapeResult
            {
                MovieCount = newMovies.Count
            });
        }
        public async Task UpdateLocalMovieLibrariesAsync(CancellationToken cancellationToken = default)
        {
            // TODO make non-plex specific
            var libraries = await _plexApiClient.GetMovieLibrariesAsync(cancellationToken);

            await Task.WhenAll(libraries.Select(x => _plexApiClient.UpdateLibraryAsync(x.Key, cancellationToken)));
        }