From f29eb49c7f5bc4051bc0639dd603338f6607dc6f Mon Sep 17 00:00:00 2001 From: faush01 Date: Tue, 6 Aug 2013 15:26:09 +1000 Subject: [PATCH] use Rage TV ID for newznab search api calls --- .../Definitions/SearchCriteriaBase.cs | 1 + .../IndexerSearch/NzbSearchService.cs | 11 ++--- NzbDrone.Core/Indexers/IIndexer.cs | 8 ++-- NzbDrone.Core/Indexers/IndexerBase.cs | 8 ++-- NzbDrone.Core/Indexers/IndexerFetchService.cs | 8 ++-- NzbDrone.Core/Indexers/Newznab/Newznab.cs | 44 +++++++++++++++---- .../Indexers/Newznab/NewznabSettings.cs | 3 ++ NzbDrone.Core/Indexers/NzbClub/NzbClub.cs | 8 ++-- .../Indexers/Omgwtfnzbs/Omgwtfnzbs.cs | 8 ++-- NzbDrone.Core/Indexers/Wombles/Wombles.cs | 8 ++-- 10 files changed, 70 insertions(+), 37 deletions(-) diff --git a/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs b/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs index 0018be941..211db3cae 100644 --- a/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs +++ b/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs @@ -10,6 +10,7 @@ namespace NzbDrone.Core.IndexerSearch.Definitions private static readonly Regex BeginningThe = new Regex(@"^the\s", RegexOptions.IgnoreCase | RegexOptions.Compiled); public int SeriesId { get; set; } + public int SeriesRageTvId { get; set; } public string SceneTitle { get; set; } public string QueryTitle diff --git a/NzbDrone.Core/IndexerSearch/NzbSearchService.cs b/NzbDrone.Core/IndexerSearch/NzbSearchService.cs index 03502fc82..0103456e9 100644 --- a/NzbDrone.Core/IndexerSearch/NzbSearchService.cs +++ b/NzbDrone.Core/IndexerSearch/NzbSearchService.cs @@ -59,7 +59,7 @@ namespace NzbDrone.Core.IndexerSearch throw new InvalidOperationException("Daily episode is missing AirDate. Try to refresh series info."); } - return SearchDaily(episode.SeriesId, DateTime.ParseExact(episode.AirDate, Episode.AIR_DATE_FORMAT, CultureInfo.InvariantCulture)); + return SearchDaily(episode.SeriesId, episode.Series.TvRageId, DateTime.ParseExact(episode.AirDate, Episode.AIR_DATE_FORMAT, CultureInfo.InvariantCulture)); } return SearchSingle(series, episode); @@ -67,7 +67,7 @@ namespace NzbDrone.Core.IndexerSearch private List SearchSingle(Series series, Episode episode) { - var searchSpec = Get(series.Id, episode.SeasonNumber); + var searchSpec = Get(series.Id, series.TvRageId, episode.SeasonNumber); if (series.UseSceneNumbering) { @@ -92,9 +92,9 @@ namespace NzbDrone.Core.IndexerSearch return Dispatch(indexer => _feedFetcher.Fetch(indexer, searchSpec), searchSpec); } - private List SearchDaily(int seriesId, DateTime airDate) + private List SearchDaily(int seriesId, int rageTvId, DateTime airDate) { - var searchSpec = Get(seriesId); + var searchSpec = Get(seriesId, rageTvId); searchSpec.Airtime = airDate; return Dispatch(indexer => _feedFetcher.Fetch(indexer, searchSpec), searchSpec); @@ -128,13 +128,14 @@ namespace NzbDrone.Core.IndexerSearch return result; } - private TSpec Get(int seriesId, int seasonNumber = -1) where TSpec : SearchCriteriaBase, new() + private TSpec Get(int seriesId, int rageTvId, int seasonNumber = -1) where TSpec : SearchCriteriaBase, new() { var spec = new TSpec(); var series = _seriesService.GetSeries(seriesId); spec.SeriesId = seriesId; + spec.SeriesRageTvId = rageTvId; spec.SceneTitle = _sceneMapping.GetSceneName(series.TvdbId, seasonNumber); if (string.IsNullOrWhiteSpace(spec.SceneTitle)) diff --git a/NzbDrone.Core/Indexers/IIndexer.cs b/NzbDrone.Core/Indexers/IIndexer.cs index 2d95e490e..ef59bd08e 100644 --- a/NzbDrone.Core/Indexers/IIndexer.cs +++ b/NzbDrone.Core/Indexers/IIndexer.cs @@ -17,9 +17,9 @@ namespace NzbDrone.Core.Indexers IParseFeed Parser { get; } - IEnumerable GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber); - IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, DateTime date); - IEnumerable GetSeasonSearchUrls(string seriesTitle, int seasonNumber); - IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int seasonNumber, int episodeWildcard); + IEnumerable GetEpisodeSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeNumber); + IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int rageTvId, DateTime date); + IEnumerable GetSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber); + IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeWildcard); } } \ No newline at end of file diff --git a/NzbDrone.Core/Indexers/IndexerBase.cs b/NzbDrone.Core/Indexers/IndexerBase.cs index 229c420dd..11cbe8bc2 100644 --- a/NzbDrone.Core/Indexers/IndexerBase.cs +++ b/NzbDrone.Core/Indexers/IndexerBase.cs @@ -34,10 +34,10 @@ namespace NzbDrone.Core.Indexers } public abstract IEnumerable RecentFeed { get; } - public abstract IEnumerable GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber); - public abstract IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, DateTime date); - public abstract IEnumerable GetSeasonSearchUrls(string seriesTitle, int seasonNumber); - public abstract IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int seasonNumber, int episodeWildcard); + public abstract IEnumerable GetEpisodeSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeNumber); + public abstract IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int rageTvId, DateTime date); + public abstract IEnumerable GetSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber); + public abstract IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeWildcard); } diff --git a/NzbDrone.Core/Indexers/IndexerFetchService.cs b/NzbDrone.Core/Indexers/IndexerFetchService.cs index 29a634661..b947cc53e 100644 --- a/NzbDrone.Core/Indexers/IndexerFetchService.cs +++ b/NzbDrone.Core/Indexers/IndexerFetchService.cs @@ -46,7 +46,7 @@ namespace NzbDrone.Core.Indexers { _logger.Debug("Searching for {0}", searchCriteria); - var searchUrls = indexer.GetSeasonSearchUrls(searchCriteria.QueryTitle, searchCriteria.SeasonNumber); + var searchUrls = indexer.GetSeasonSearchUrls(searchCriteria.QueryTitle, searchCriteria.SeriesRageTvId, searchCriteria.SeasonNumber); var result = Fetch(indexer, searchUrls); @@ -58,7 +58,7 @@ namespace NzbDrone.Core.Indexers { _logger.Debug("Searching for {0}", searchCriteria); - var searchUrls = indexer.GetEpisodeSearchUrls(searchCriteria.QueryTitle, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber); + var searchUrls = indexer.GetEpisodeSearchUrls(searchCriteria.QueryTitle, searchCriteria.SeriesRageTvId, searchCriteria.SeasonNumber, searchCriteria.EpisodeNumber); var result = Fetch(indexer, searchUrls); @@ -71,7 +71,7 @@ namespace NzbDrone.Core.Indexers { _logger.Debug("Searching for {0}", searchCriteria); - var searchUrls = indexer.GetSeasonSearchUrls(searchCriteria.QueryTitle, searchCriteria.SeasonNumber); + var searchUrls = indexer.GetSeasonSearchUrls(searchCriteria.QueryTitle, searchCriteria.SeriesRageTvId, searchCriteria.SeasonNumber); var result = Fetch(indexer, searchUrls); @@ -83,7 +83,7 @@ namespace NzbDrone.Core.Indexers { _logger.Debug("Searching for {0}", searchCriteria); - var searchUrls = indexer.GetDailyEpisodeSearchUrls(searchCriteria.QueryTitle, searchCriteria.Airtime); + var searchUrls = indexer.GetDailyEpisodeSearchUrls(searchCriteria.QueryTitle, searchCriteria.SeriesRageTvId, searchCriteria.Airtime); var result = Fetch(indexer, searchUrls); _logger.Info("Finished searching {0} on {1}. Found {2}", indexer.Name, searchCriteria, result.Count); diff --git a/NzbDrone.Core/Indexers/Newznab/Newznab.cs b/NzbDrone.Core/Indexers/Newznab/Newznab.cs index 0f5261448..5f18f3417 100644 --- a/NzbDrone.Core/Indexers/Newznab/Newznab.cs +++ b/NzbDrone.Core/Indexers/Newznab/Newznab.cs @@ -84,24 +84,52 @@ namespace NzbDrone.Core.Indexers.Newznab } } - public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) + public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeNumber) { - return RecentFeed.Select(url => String.Format("{0}&limit=100&q={1}&season={2}&ep={3}", url, NewsnabifyTitle(seriesTitle), seasonNumber, episodeNumber)); + if (Settings.UseRageTvId) + { + return RecentFeed.Select(url => String.Format("{0}&limit=100&rid={1}&season={2}&ep={3}", url, rageTvId, seasonNumber, episodeNumber)); + } + else + { + return RecentFeed.Select(url => String.Format("{0}&limit=100&q={1}&season={2}&ep={3}", url, NewsnabifyTitle(seriesTitle), seasonNumber, episodeNumber)); + } } - public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, DateTime date) + public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int rageTvId, DateTime date) { - return RecentFeed.Select(url => String.Format("{0}&limit=100&q={1}&season={2:yyyy}&ep={2:MM/dd}", url, NewsnabifyTitle(seriesTitle), date)).ToList(); + if (Settings.UseRageTvId) + { + return RecentFeed.Select(url => String.Format("{0}&limit=100&rid={1}&season={2:yyyy}&ep={2:MM/dd}", url, rageTvId, date)).ToList(); + } + else + { + return RecentFeed.Select(url => String.Format("{0}&limit=100&q={1}&season={2:yyyy}&ep={2:MM/dd}", url, NewsnabifyTitle(seriesTitle), date)).ToList(); + } } - public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int seasonNumber) + public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber) { - return RecentFeed.Select(url => String.Format("{0}&limit=100&q={1}&season={2}", url, NewsnabifyTitle(seriesTitle), seasonNumber)); + if (Settings.UseRageTvId) + { + return RecentFeed.Select(url => String.Format("{0}&limit=100&rid={1}&season={2}", url, rageTvId, seasonNumber)); + } + else + { + return RecentFeed.Select(url => String.Format("{0}&limit=100&q={1}&season={2}", url, NewsnabifyTitle(seriesTitle), seasonNumber)); + } } - public override IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int seasonNumber, int episodeWildcard) + public override IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeWildcard) { - return RecentFeed.Select(url => String.Format("{0}&limit=100&q={1}+S{2:00}E{3}", url, NewsnabifyTitle(seriesTitle), seasonNumber, episodeWildcard)); + if (Settings.UseRageTvId) + { + return RecentFeed.Select(url => String.Format("{0}&limit=100&rid={1}&season={2}&q=E{3}", url, rageTvId, seasonNumber, episodeWildcard)); + } + else + { + return RecentFeed.Select(url => String.Format("{0}&limit=100&q={1}+S{2:00}E{3}", url, NewsnabifyTitle(seriesTitle), seasonNumber, episodeWildcard)); + } } public override string Name diff --git a/NzbDrone.Core/Indexers/Newznab/NewznabSettings.cs b/NzbDrone.Core/Indexers/Newznab/NewznabSettings.cs index 10291e2c6..c728f1fae 100644 --- a/NzbDrone.Core/Indexers/Newznab/NewznabSettings.cs +++ b/NzbDrone.Core/Indexers/Newznab/NewznabSettings.cs @@ -10,6 +10,7 @@ namespace NzbDrone.Core.Indexers.Newznab public NewznabSettings() { Categories = new [] { 5030, 5040 }; + UseRageTvId = true; } [FieldDefinition(0, Label = "URL")] @@ -20,6 +21,8 @@ namespace NzbDrone.Core.Indexers.Newznab public IEnumerable Categories { get; set; } + public bool UseRageTvId { get; set; } + public bool IsValid { get diff --git a/NzbDrone.Core/Indexers/NzbClub/NzbClub.cs b/NzbDrone.Core/Indexers/NzbClub/NzbClub.cs index 7ce9022e2..d7dbb9d92 100644 --- a/NzbDrone.Core/Indexers/NzbClub/NzbClub.cs +++ b/NzbDrone.Core/Indexers/NzbClub/NzbClub.cs @@ -35,7 +35,7 @@ namespace NzbDrone.Core.Indexers.NzbClub } } - public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) + public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeNumber) { var searchUrls = new List(); @@ -47,7 +47,7 @@ namespace NzbDrone.Core.Indexers.NzbClub return searchUrls; } - public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int seasonNumber) + public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber) { var searchUrls = new List(); @@ -59,7 +59,7 @@ namespace NzbDrone.Core.Indexers.NzbClub return searchUrls; } - public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, DateTime date) + public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int rageTvId, DateTime date) { var searchUrls = new List(); @@ -71,7 +71,7 @@ namespace NzbDrone.Core.Indexers.NzbClub return searchUrls; } - public override IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int seasonNumber, int episodeWildcard) + public override IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeWildcard) { var searchUrls = new List(); diff --git a/NzbDrone.Core/Indexers/Omgwtfnzbs/Omgwtfnzbs.cs b/NzbDrone.Core/Indexers/Omgwtfnzbs/Omgwtfnzbs.cs index a25478659..f01f17df4 100644 --- a/NzbDrone.Core/Indexers/Omgwtfnzbs/Omgwtfnzbs.cs +++ b/NzbDrone.Core/Indexers/Omgwtfnzbs/Omgwtfnzbs.cs @@ -20,7 +20,7 @@ namespace NzbDrone.Core.Indexers.Omgwtfnzbs } } - public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) + public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeNumber) { var searchUrls = new List(); @@ -32,7 +32,7 @@ namespace NzbDrone.Core.Indexers.Omgwtfnzbs return searchUrls; } - public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, DateTime date) + public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int rageTvId, DateTime date) { var searchUrls = new List(); @@ -44,7 +44,7 @@ namespace NzbDrone.Core.Indexers.Omgwtfnzbs return searchUrls; } - public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int seasonNumber) + public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber) { var searchUrls = new List(); @@ -56,7 +56,7 @@ namespace NzbDrone.Core.Indexers.Omgwtfnzbs return searchUrls; } - public override IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int seasonNumber, int episodeWildcard) + public override IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeWildcard) { var searchUrls = new List(); diff --git a/NzbDrone.Core/Indexers/Wombles/Wombles.cs b/NzbDrone.Core/Indexers/Wombles/Wombles.cs index eca0b72f1..9fa42dff6 100644 --- a/NzbDrone.Core/Indexers/Wombles/Wombles.cs +++ b/NzbDrone.Core/Indexers/Wombles/Wombles.cs @@ -23,22 +23,22 @@ namespace NzbDrone.Core.Indexers.Wombles get { yield return "http://nzb.isasecret.com/rss/?sec=TV&fr=false"; } } - public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) + public override IEnumerable GetEpisodeSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeNumber) { return new List(); } - public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int seasonNumber) + public override IEnumerable GetSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber) { return new List(); } - public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, DateTime date) + public override IEnumerable GetDailyEpisodeSearchUrls(string seriesTitle, int rageTvId, DateTime date) { return new List(); } - public override IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int seasonNumber, int episodeWildcard) + public override IEnumerable GetPartialSeasonSearchUrls(string seriesTitle, int rageTvId, int seasonNumber, int episodeWildcard) { return new List(); }