public ImportListFetchResult FetchSingleList(ImportListDefinition definition) { var result = new ImportListFetchResult(); var importList = _importListFactory.GetInstance(definition); if (importList == null || !definition.Enable) { _logger.Debug("Import list {0} is not enabled. No Movies will be added"); return(result); } var importListLocal = importList; try { var importListReports = importListLocal.Fetch(); lock (result) { _logger.Debug("Found {0} from {1}", importListReports.Movies.Count, importList.Name); if (!importListReports.AnyFailure) { // TODO some opportunity to bulk map here if we had the tmdbIds var listMovies = importListReports.Movies.Select(x => { return(MapMovieReport(x)); }).Where(x => x.TmdbId > 0).ToList(); listMovies = listMovies.DistinctBy(x => x.TmdbId).ToList(); result.Movies.AddRange(listMovies); _listMovieService.SyncMoviesForList(listMovies, importList.Definition.Id); } result.AnyFailure |= importListReports.AnyFailure; } } catch (Exception e) { _logger.Error(e, "Error during Import List Sync for list {0}", importList.Name); } _logger.Debug("Found {0} reports for list {1}", result.Movies.Count, importList.Name); return(result); }
public List <ImportListItemInfo> FetchSingleList(ImportListDefinition definition) { var result = new List <ImportListItemInfo>(); var importList = _importListFactory.GetInstance(definition); if (importList == null || !definition.EnableAutomaticAdd) { _logger.Debug("Import list not enabled, skipping."); return(result); } var taskList = new List <Task>(); var taskFactory = new TaskFactory(TaskCreationOptions.LongRunning, TaskContinuationOptions.None); var importListLocal = importList; var task = taskFactory.StartNew(() => { try { var importListReports = importListLocal.Fetch(); lock (result) { _logger.Debug("Found {0} from {1}", importListReports.Count, importList.Name); result.AddRange(importListReports); } } catch (Exception e) { _logger.Error(e, "Error during Import List Sync"); } }).LogExceptions(); taskList.Add(task); Task.WaitAll(taskList.ToArray()); result = result.DistinctBy(r => new { r.TvdbId, r.Title }).ToList(); return(result); }