public void Handle(EpisodeImportedEvent message) { foreach (var episode in message.EpisodeInfo.Episodes) { BroadcastResourceChange(ModelAction.Updated, episode.Id); } }
public void Handle(EpisodeImportedEvent message) { if (!message.NewDownload) { return; } foreach (var episode in message.EpisodeInfo.Episodes) { var history = new History { EventType = HistoryEventType.DownloadFolderImported, Date = DateTime.UtcNow, Quality = message.EpisodeInfo.Quality, SourceTitle = message.ImportedEpisode.SceneName ?? Path.GetFileNameWithoutExtension(message.EpisodeInfo.Path), SeriesId = message.ImportedEpisode.SeriesId, EpisodeId = episode.Id }; //Won't have a value since we publish this event before saving to DB. //history.Data.Add("FileId", message.ImportedEpisode.Id.ToString()); history.Data.Add("DroppedPath", message.EpisodeInfo.Path); history.Data.Add("ImportedPath", Path.Combine(message.EpisodeInfo.Series.Path, message.ImportedEpisode.RelativePath)); history.Data.Add("DownloadClient", message.DownloadClient); history.Data.Add("DownloadClientId", message.DownloadClientId); _historyRepository.Insert(history); } }
public void Handle(EpisodeImportedEvent message) { foreach (var consumer in _metadataFactory.Enabled()) { consumer.OnEpisodeImport(message.EpisodeInfo.Series, message.ImportedEpisode, message.NewDownload); } }
public void Handle(EpisodeImportedEvent message) { foreach (var consumer in _metadataFactory.Enabled()) { var files = new List <MetadataFile>(); files.AddIfNotNull(ProcessEpisodeMetadata(consumer, message.EpisodeInfo.Series, message.ImportedEpisode, new List <MetadataFile>())); files.AddRange(ProcessEpisodeImages(consumer, message.EpisodeInfo.Series, message.ImportedEpisode, new List <MetadataFile>())); _eventAggregator.PublishEvent(new MetadataFilesUpdated(files)); } }
private string FindDownloadId(EpisodeImportedEvent trackedDownload) { _logger.Debug("Trying to find downloadId for {0} from history", trackedDownload.ImportedEpisode.Path); var episodeIds = trackedDownload.EpisodeInfo.Episodes.Select(c => c.Id).ToList(); var allHistory = _historyRepository.FindDownloadHistory(trackedDownload.EpisodeInfo.Series.Id, trackedDownload.ImportedEpisode.Quality); //Find download related items for these episdoes var episodesHistory = allHistory.Where(h => episodeIds.Contains(h.EpisodeId)).ToList(); var processedDownloadId = episodesHistory .Where(c => c.EventType != HistoryEventType.Grabbed && c.DownloadId != null) .Select(c => c.DownloadId); var stillDownloading = episodesHistory.Where(c => c.EventType == HistoryEventType.Grabbed && !processedDownloadId.Contains(c.DownloadId)).ToList(); string downloadId = null; if (stillDownloading.Any()) { foreach (var matchingHistory in trackedDownload.EpisodeInfo.Episodes.Select(e => stillDownloading.Where(c => c.EpisodeId == e.Id).ToList())) { if (matchingHistory.Count != 1) { return(null); } var newDownloadId = matchingHistory.Single().DownloadId; if (downloadId == null || downloadId == newDownloadId) { downloadId = newDownloadId; } else { return(null); } } } return(downloadId); }
public void Handle(EpisodeImportedEvent message) { if (!message.NewDownload) { return; } var downloadId = message.DownloadId; // Try to find the downloadId if the user used manual import (from wanted: missing) or the // API to import and downloadId wasn't provided. if (downloadId.IsNullOrWhiteSpace()) { downloadId = _historyService.FindDownloadId(message); } if (downloadId.IsNullOrWhiteSpace()) { return; } var history = new DownloadHistory { EventType = DownloadHistoryEventType.FileImported, SeriesId = message.ImportedEpisode.SeriesId, DownloadId = downloadId, SourceTitle = message.EpisodeInfo.Path, Date = DateTime.UtcNow, Protocol = message.DownloadClientInfo.Protocol, DownloadClientId = message.DownloadClientInfo.Id }; history.Data.Add("DownloadClient", message.DownloadClientInfo.Type); history.Data.Add("DownloadClientName", message.DownloadClientInfo.Name); history.Data.Add("SourcePath", message.EpisodeInfo.Path); history.Data.Add("DestinationPath", Path.Combine(message.EpisodeInfo.Series.Path, message.ImportedEpisode.RelativePath)); _repository.Insert(history); }
public void Handle(EpisodeImportedEvent message) { foreach (var episode in message.DroppedEpisode.Episodes) { var history = new History { EventType = HistoryEventType.DownloadFolderImported, Date = DateTime.UtcNow, Quality = message.DroppedEpisode.Quality, SourceTitle = message.ImportedEpisode.SceneName, SeriesId = message.ImportedEpisode.SeriesId, EpisodeId = episode.Id }; //Won't have a value since we publish this event before saving to DB. //history.Data.Add("FileId", message.ImportedEpisode.Id.ToString()); history.Data.Add("DroppedPath", message.DroppedEpisode.Path); history.Data.Add("ImportedPath", message.ImportedEpisode.Path); _historyRepository.Insert(history); } }
public void Handle(EpisodeImportedEvent message) { if (!message.NewDownload) { return; } var downloadId = message.DownloadId; if (downloadId.IsNullOrWhiteSpace()) { downloadId = FindDownloadId(message); } foreach (var episode in message.EpisodeInfo.Episodes) { var history = new EpisodeHistory { EventType = EpisodeHistoryEventType.DownloadFolderImported, Date = DateTime.UtcNow, Quality = message.EpisodeInfo.Quality, SourceTitle = message.ImportedEpisode.SceneName ?? Path.GetFileNameWithoutExtension(message.EpisodeInfo.Path), SeriesId = message.ImportedEpisode.SeriesId, EpisodeId = episode.Id, DownloadId = downloadId, Language = message.EpisodeInfo.Language }; history.Data.Add("FileId", message.ImportedEpisode.Id.ToString()); history.Data.Add("DroppedPath", message.EpisodeInfo.Path); history.Data.Add("ImportedPath", Path.Combine(message.EpisodeInfo.Series.Path, message.ImportedEpisode.RelativePath)); history.Data.Add("DownloadClient", message.DownloadClientInfo?.Type); history.Data.Add("DownloadClientName", message.DownloadClientInfo?.Name); history.Data.Add("PreferredWordScore", message.EpisodeInfo.PreferredWordScore.ToString()); history.Data.Add("ReleaseGroup", message.EpisodeInfo.ReleaseGroup); _historyRepository.Insert(history); } }
public void Handle(EpisodeImportedEvent message) { if (!message.NewDownload) { return; } var downloadMessage = new DownloadMessage { Message = GetMessage(message.EpisodeInfo.Series, message.EpisodeInfo.Episodes, message.EpisodeInfo.Quality), Series = message.EpisodeInfo.Series, EpisodeFile = message.ImportedEpisode, OldFiles = message.OldFiles, SourcePath = message.EpisodeInfo.Path, DownloadClient = message.DownloadClientInfo?.Name, DownloadId = message.DownloadId }; foreach (var notification in _notificationFactory.OnDownloadEnabled()) { try { if (ShouldHandleSeries(notification.Definition, message.EpisodeInfo.Series)) { if (downloadMessage.OldFiles.Empty() || ((NotificationDefinition)notification.Definition).OnUpgrade) { notification.OnDownload(downloadMessage); } } } catch (Exception ex) { _logger.Warn(ex, "Unable to send OnDownload notification to: " + notification.Definition.Name); } } }
public void Handle(EpisodeImportedEvent message) { _refreshDebounce.Execute(); }
public void Handle(EpisodeImportedEvent message) { BroadcastResourceChange(ModelAction.Updated, message.ImportedEpisode.SeriesId); }