diff --git a/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs b/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
index f67c0a4cf..4e07f2741 100644
--- a/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
+++ b/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.IO;
using System.ServiceModel.Syndication;
using NLog;
@@ -18,11 +19,12 @@ public abstract class IndexerProviderBase
private readonly HistoryProvider _historyProvider;
protected readonly SeasonProvider _seasonProvider;
protected readonly SeriesProvider _seriesProvider;
-
+ protected readonly SabProvider _sabProvider;
protected IndexerProviderBase(SeriesProvider seriesProvider, SeasonProvider seasonProvider,
EpisodeProvider episodeProvider, ConfigProvider configProvider,
- HttpProvider httpProvider, IndexerProvider indexerProvider, HistoryProvider historyProvider)
+ HttpProvider httpProvider, IndexerProvider indexerProvider,
+ HistoryProvider historyProvider, SabProvider sabProvider)
{
_seriesProvider = seriesProvider;
_seasonProvider = seasonProvider;
@@ -31,6 +33,7 @@ protected IndexerProviderBase(SeriesProvider seriesProvider, SeasonProvider seas
_httpProvider = httpProvider;
_indexerProvider = indexerProvider;
_historyProvider = historyProvider;
+ _sabProvider = sabProvider;
_logger = LogManager.GetLogger(GetType().ToString());
}
@@ -123,25 +126,33 @@ internal void ProcessItem(SyndicationItem feedItem)
var episodes = _episodeProvider.GetEpisodeByParseResult(parseResult);
+ if (InHistory(episodes, parseResult, feedItem))
+ {
+ return;
+ }
+
+ var sabTitle = _sabProvider.GetSabTitle(parseResult);
+
+ if (_sabProvider.IsInQueue(sabTitle))
+ {
+ return;
+ }
+
+ if (!_sabProvider.AddByUrl(NzbDownloadUrl(feedItem), sabTitle))
+ {
+ return;
+ }
+
foreach (var episode in episodes)
{
- if (_historyProvider.Exists(episode.EpisodeId, parseResult.Quality, parseResult.Proper))
+ _historyProvider.Add(new History
{
- _logger.Debug("Episode in history: {0}", feedItem.Title.Text);
- }
- else
- {
- //TODO: Add episode to sab
-
- _historyProvider.Add(new History
- {
- Date = DateTime.Now,
- EpisodeId = episode.EpisodeId,
- IsProper = parseResult.Proper,
- NzbTitle = feedItem.Title.Text,
- Quality = parseResult.Quality
- });
- }
+ Date = DateTime.Now,
+ EpisodeId = episode.EpisodeId,
+ IsProper = parseResult.Proper,
+ NzbTitle = feedItem.Title.Text,
+ Quality = parseResult.Quality
+ });
}
}
}
@@ -188,5 +199,17 @@ protected virtual EpisodeParseResult CustomParser(SyndicationItem item, EpisodeP
/// RSS Feed item to generate the link for
/// Download link URL
protected abstract string NzbDownloadUrl(SyndicationItem item);
+
+ private bool InHistory(IList episodes, EpisodeParseResult parseResult, SyndicationItem feedItem)
+ {
+ foreach (var episode in episodes)
+ {
+ if (_historyProvider.Exists(episode.EpisodeId, parseResult.Quality, parseResult.Proper))
+ {
+ _logger.Debug("Episode in history: {0}", feedItem.Title.Text);
+ return true;
+ }
+ }
+ }
}
}
\ No newline at end of file