New: Season pack searching with 'Anime Standard Format Search'
This commit is contained in:
parent
77a4ba4925
commit
6b533ef2f9
|
@ -128,6 +128,10 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
|
||||||
.Callback<AnimeEpisodeSearchCriteria>(s => result.Add(s))
|
.Callback<AnimeEpisodeSearchCriteria>(s => result.Add(s))
|
||||||
.Returns(new List<Parser.Model.ReleaseInfo>());
|
.Returns(new List<Parser.Model.ReleaseInfo>());
|
||||||
|
|
||||||
|
_mockIndexer.Setup(v => v.Fetch(It.IsAny<AnimeSeasonSearchCriteria>()))
|
||||||
|
.Callback<AnimeSeasonSearchCriteria>(s => result.Add(s))
|
||||||
|
.Returns(new List<Parser.Model.ReleaseInfo>());
|
||||||
|
|
||||||
_mockIndexer.Setup(v => v.Fetch(It.IsAny<SpecialEpisodeSearchCriteria>()))
|
_mockIndexer.Setup(v => v.Fetch(It.IsAny<SpecialEpisodeSearchCriteria>()))
|
||||||
.Callback<SpecialEpisodeSearchCriteria>(s => result.Add(s))
|
.Callback<SpecialEpisodeSearchCriteria>(s => result.Add(s))
|
||||||
.Returns(new List<Parser.Model.ReleaseInfo>());
|
.Returns(new List<Parser.Model.ReleaseInfo>());
|
||||||
|
@ -414,6 +418,77 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
|
||||||
criteria.ForEach(c => c.IsSeasonSearch.Should().BeTrue());
|
criteria.ForEach(c => c.IsSeasonSearch.Should().BeTrue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void season_search_for_anime_should_search_for_each_monitored_season()
|
||||||
|
{
|
||||||
|
WithEpisodes();
|
||||||
|
_xemSeries.SeriesType = SeriesTypes.Anime;
|
||||||
|
_xemEpisodes.ForEach(e => e.EpisodeFileId = 0);
|
||||||
|
|
||||||
|
var seasonNumber = 1;
|
||||||
|
var allCriteria = WatchForSearchCriteria();
|
||||||
|
|
||||||
|
Subject.SeasonSearch(_xemSeries.Id, seasonNumber, true, false, true, false);
|
||||||
|
|
||||||
|
var criteria = allCriteria.OfType<AnimeSeasonSearchCriteria>().ToList();
|
||||||
|
|
||||||
|
var episodesForSeason1 = _xemEpisodes.Where(e => e.SeasonNumber == seasonNumber);
|
||||||
|
criteria.Count.Should().Be(episodesForSeason1.Select(e => e.SeasonNumber).Distinct().Count());
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void season_search_for_anime_should_not_search_for_unmonitored_season()
|
||||||
|
{
|
||||||
|
WithEpisodes();
|
||||||
|
_xemSeries.SeriesType = SeriesTypes.Anime;
|
||||||
|
_xemEpisodes.ForEach(e => e.Monitored = false);
|
||||||
|
_xemEpisodes.ForEach(e => e.EpisodeFileId = 0);
|
||||||
|
|
||||||
|
var seasonNumber = 1;
|
||||||
|
var allCriteria = WatchForSearchCriteria();
|
||||||
|
|
||||||
|
Subject.SeasonSearch(_xemSeries.Id, seasonNumber, false, true, true, false);
|
||||||
|
|
||||||
|
var criteria = allCriteria.OfType<AnimeSeasonSearchCriteria>().ToList();
|
||||||
|
|
||||||
|
criteria.Count.Should().Be(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void season_search_for_anime_should_not_search_for_unaired_season()
|
||||||
|
{
|
||||||
|
WithEpisodes();
|
||||||
|
_xemSeries.SeriesType = SeriesTypes.Anime;
|
||||||
|
_xemEpisodes.ForEach(e => e.AirDateUtc = DateTime.UtcNow.AddDays(5));
|
||||||
|
_xemEpisodes.ForEach(e => e.EpisodeFileId = 0);
|
||||||
|
|
||||||
|
var seasonNumber = 1;
|
||||||
|
var allCriteria = WatchForSearchCriteria();
|
||||||
|
|
||||||
|
Subject.SeasonSearch(_xemSeries.Id, seasonNumber, false, false, true, false);
|
||||||
|
|
||||||
|
var criteria = allCriteria.OfType<AnimeSeasonSearchCriteria>().ToList();
|
||||||
|
|
||||||
|
criteria.Count.Should().Be(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void season_search_for_anime_should_not_search_for_season_with_files()
|
||||||
|
{
|
||||||
|
WithEpisodes();
|
||||||
|
_xemSeries.SeriesType = SeriesTypes.Anime;
|
||||||
|
_xemEpisodes.ForEach(e => e.EpisodeFileId = 1);
|
||||||
|
|
||||||
|
var seasonNumber = 1;
|
||||||
|
var allCriteria = WatchForSearchCriteria();
|
||||||
|
|
||||||
|
Subject.SeasonSearch(_xemSeries.Id, seasonNumber, true, false, true, false);
|
||||||
|
|
||||||
|
var criteria = allCriteria.OfType<AnimeSeasonSearchCriteria>().ToList();
|
||||||
|
|
||||||
|
criteria.Count.Should().Be(0);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void season_search_for_daily_should_search_multiple_years()
|
public void season_search_for_daily_should_search_multiple_years()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
@ -12,6 +12,7 @@ namespace NzbDrone.Core.Test.IndexerTests.FanzubTests
|
||||||
{
|
{
|
||||||
private SeasonSearchCriteria _seasonSearchCriteria;
|
private SeasonSearchCriteria _seasonSearchCriteria;
|
||||||
private AnimeEpisodeSearchCriteria _animeSearchCriteria;
|
private AnimeEpisodeSearchCriteria _animeSearchCriteria;
|
||||||
|
private AnimeSeasonSearchCriteria _animeSeasonSearchCriteria;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUp()
|
public void SetUp()
|
||||||
|
@ -34,6 +35,12 @@ namespace NzbDrone.Core.Test.IndexerTests.FanzubTests
|
||||||
SeasonNumber = 1,
|
SeasonNumber = 1,
|
||||||
EpisodeNumber = 9
|
EpisodeNumber = 9
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_animeSeasonSearchCriteria = new AnimeSeasonSearchCriteria()
|
||||||
|
{
|
||||||
|
SceneTitles = new List<string>() { "Naruto Shippuuden" },
|
||||||
|
SeasonNumber = 3,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -81,5 +88,18 @@ namespace NzbDrone.Core.Test.IndexerTests.FanzubTests
|
||||||
|
|
||||||
page.Url.FullUri.Should().Contain("q=\"Naruto+Shippuuden%2009\"|\"Naruto+Shippuuden%20-%2009\"|\"Naruto+Shippuuden%20S01E09\"|\"Naruto+Shippuuden%20-%20S01E09\"");
|
page.Url.FullUri.Should().Contain("q=\"Naruto+Shippuuden%2009\"|\"Naruto+Shippuuden%20-%2009\"|\"Naruto+Shippuuden%20S01E09\"|\"Naruto+Shippuuden%20-%20S01E09\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_search_by_standard_season_number()
|
||||||
|
{
|
||||||
|
Subject.Settings.AnimeStandardFormatSearch = true;
|
||||||
|
var results = Subject.GetSearchRequests(_animeSeasonSearchCriteria);
|
||||||
|
|
||||||
|
results.GetAllTiers().Should().HaveCount(1);
|
||||||
|
|
||||||
|
var page = results.GetAllTiers().First().First();
|
||||||
|
|
||||||
|
page.Url.FullUri.Should().Contain("q=\"Naruto+Shippuuden%20S03\"|\"Naruto+Shippuuden%20-%20S03\"");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
|
||||||
private SingleEpisodeSearchCriteria _singleEpisodeSearchCriteria;
|
private SingleEpisodeSearchCriteria _singleEpisodeSearchCriteria;
|
||||||
private SeasonSearchCriteria _seasonSearchCriteria;
|
private SeasonSearchCriteria _seasonSearchCriteria;
|
||||||
private AnimeEpisodeSearchCriteria _animeSearchCriteria;
|
private AnimeEpisodeSearchCriteria _animeSearchCriteria;
|
||||||
|
private AnimeSeasonSearchCriteria _animeSeasonSearchCriteria;
|
||||||
private NewznabCapabilities _capabilities;
|
private NewznabCapabilities _capabilities;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
|
@ -57,6 +58,13 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
|
||||||
EpisodeNumber = 4
|
EpisodeNumber = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_animeSeasonSearchCriteria = new AnimeSeasonSearchCriteria()
|
||||||
|
{
|
||||||
|
Series = new Tv.Series { TvRageId = 10, TvdbId = 20, TvMazeId = 30, ImdbId = "t40" },
|
||||||
|
SceneTitles = new List<string> { "Monkey Island" },
|
||||||
|
SeasonNumber = 3,
|
||||||
|
};
|
||||||
|
|
||||||
_capabilities = new NewznabCapabilities();
|
_capabilities = new NewznabCapabilities();
|
||||||
|
|
||||||
Mocker.GetMock<INewznabCapabilitiesProvider>()
|
Mocker.GetMock<INewznabCapabilitiesProvider>()
|
||||||
|
@ -168,6 +176,19 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
|
||||||
pages[3].Url.FullUri.Should().Contain("q=Monkey%20Island&season=5&ep=4");
|
pages[3].Url.FullUri.Should().Contain("q=Monkey%20Island&season=5&ep=4");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_search_by_standard_season_number()
|
||||||
|
{
|
||||||
|
Subject.Settings.AnimeStandardFormatSearch = true;
|
||||||
|
var results = Subject.GetSearchRequests(_animeSeasonSearchCriteria);
|
||||||
|
|
||||||
|
results.GetTier(0).Should().HaveCount(2);
|
||||||
|
var pages = results.GetTier(0).Select(t => t.First()).ToList();
|
||||||
|
|
||||||
|
pages[0].Url.FullUri.Should().Contain("rid=10&season=3");
|
||||||
|
pages[1].Url.FullUri.Should().Contain("q=Monkey%20Island&season=3");
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_search_by_rid_if_not_supported()
|
public void should_not_search_by_rid_if_not_supported()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
@ -12,6 +12,7 @@ namespace NzbDrone.Core.Test.IndexerTests.NyaaTests
|
||||||
{
|
{
|
||||||
private SeasonSearchCriteria _seasonSearchCriteria;
|
private SeasonSearchCriteria _seasonSearchCriteria;
|
||||||
private AnimeEpisodeSearchCriteria _animeSearchCriteria;
|
private AnimeEpisodeSearchCriteria _animeSearchCriteria;
|
||||||
|
private AnimeSeasonSearchCriteria _animeSeasonSearchCriteria;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUp()
|
public void SetUp()
|
||||||
|
@ -34,6 +35,12 @@ namespace NzbDrone.Core.Test.IndexerTests.NyaaTests
|
||||||
SeasonNumber = 1,
|
SeasonNumber = 1,
|
||||||
EpisodeNumber = 9
|
EpisodeNumber = 9
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_animeSeasonSearchCriteria = new AnimeSeasonSearchCriteria()
|
||||||
|
{
|
||||||
|
SceneTitles = new List<string>() { "Naruto Shippuuden" },
|
||||||
|
SeasonNumber = 3
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -82,5 +89,18 @@ namespace NzbDrone.Core.Test.IndexerTests.NyaaTests
|
||||||
pages[1].Url.FullUri.Should().Contain("term=Naruto+Shippuuden+09");
|
pages[1].Url.FullUri.Should().Contain("term=Naruto+Shippuuden+09");
|
||||||
pages[2].Url.FullUri.Should().Contain("term=Naruto+Shippuuden+s01e09");
|
pages[2].Url.FullUri.Should().Contain("term=Naruto+Shippuuden+s01e09");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_search_by_standard_season_number()
|
||||||
|
{
|
||||||
|
Subject.Settings.AnimeStandardFormatSearch = true;
|
||||||
|
var results = Subject.GetSearchRequests(_animeSeasonSearchCriteria);
|
||||||
|
|
||||||
|
results.GetAllTiers().Should().HaveCount(1);
|
||||||
|
|
||||||
|
var page = results.GetAllTiers().First().First();
|
||||||
|
|
||||||
|
page.Url.FullUri.Should().Contain("term=Naruto+Shippuuden+s03");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
namespace NzbDrone.Core.IndexerSearch.Definitions
|
namespace NzbDrone.Core.IndexerSearch.Definitions
|
||||||
{
|
{
|
||||||
public class AnimeEpisodeSearchCriteria : SearchCriteriaBase
|
public class AnimeEpisodeSearchCriteria : SearchCriteriaBase
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
namespace NzbDrone.Core.IndexerSearch.Definitions
|
||||||
|
{
|
||||||
|
public class AnimeSeasonSearchCriteria : SearchCriteriaBase
|
||||||
|
{
|
||||||
|
public int SeasonNumber { get; set; }
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return $"[{Series.Title} : S{SeasonNumber:00}]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -388,6 +388,8 @@ namespace NzbDrone.Core.IndexerSearch
|
||||||
{
|
{
|
||||||
var downloadDecisions = new List<DownloadDecision>();
|
var downloadDecisions = new List<DownloadDecision>();
|
||||||
|
|
||||||
|
var searchSpec = Get<AnimeSeasonSearchCriteria>(series, episodes, monitoredOnly, userInvokedSearch, interactiveSearch);
|
||||||
|
|
||||||
// Episode needs to be monitored if it's not an interactive search
|
// Episode needs to be monitored if it's not an interactive search
|
||||||
// and Ensure episode has an airdate and has already aired
|
// and Ensure episode has an airdate and has already aired
|
||||||
var episodesToSearch = episodes
|
var episodesToSearch = episodes
|
||||||
|
@ -395,6 +397,19 @@ namespace NzbDrone.Core.IndexerSearch
|
||||||
.Where(ep => ep.AirDateUtc.HasValue && ep.AirDateUtc.Value.Before(DateTime.UtcNow))
|
.Where(ep => ep.AirDateUtc.HasValue && ep.AirDateUtc.Value.Before(DateTime.UtcNow))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
|
var seasonsToSearch = GetSceneSeasonMappings(series, episodesToSearch)
|
||||||
|
.GroupBy(ep => ep.SeasonNumber)
|
||||||
|
.Select(epList => epList.First())
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
foreach (var season in seasonsToSearch)
|
||||||
|
{
|
||||||
|
searchSpec.SeasonNumber = season.SeasonNumber;
|
||||||
|
|
||||||
|
var decisions = Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec);
|
||||||
|
downloadDecisions.AddRange(decisions);
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var episode in episodesToSearch)
|
foreach (var episode in episodesToSearch)
|
||||||
{
|
{
|
||||||
downloadDecisions.AddRange(SearchAnime(series, episode, monitoredOnly, userInvokedSearch, interactiveSearch, true));
|
downloadDecisions.AddRange(SearchAnime(series, episode, monitoredOnly, userInvokedSearch, interactiveSearch, true));
|
||||||
|
|
|
@ -42,8 +42,8 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var parameters = new BroadcastheNetTorrentQuery();
|
var parameters = new BroadcastheNetTorrentQuery();
|
||||||
|
|
||||||
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
||||||
{
|
{
|
||||||
foreach (var episode in searchCriteria.Episodes)
|
foreach (var episode in searchCriteria.Episodes)
|
||||||
|
@ -63,8 +63,8 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var parameters = new BroadcastheNetTorrentQuery();
|
var parameters = new BroadcastheNetTorrentQuery();
|
||||||
|
|
||||||
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
||||||
{
|
{
|
||||||
foreach (var seasonNumber in searchCriteria.Episodes.Select(v => v.SeasonNumber).Distinct())
|
foreach (var seasonNumber in searchCriteria.Episodes.Select(v => v.SeasonNumber).Distinct())
|
||||||
|
@ -89,8 +89,8 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(DailyEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(DailyEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var parameters = new BroadcastheNetTorrentQuery();
|
var parameters = new BroadcastheNetTorrentQuery();
|
||||||
|
|
||||||
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
||||||
{
|
{
|
||||||
parameters.Category = "Episode";
|
parameters.Category = "Episode";
|
||||||
|
@ -117,8 +117,8 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(DailySeasonSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(DailySeasonSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var parameters = new BroadcastheNetTorrentQuery();
|
var parameters = new BroadcastheNetTorrentQuery();
|
||||||
|
|
||||||
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
||||||
{
|
{
|
||||||
parameters.Category = "Episode";
|
parameters.Category = "Episode";
|
||||||
|
@ -145,8 +145,8 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var parameters = new BroadcastheNetTorrentQuery();
|
var parameters = new BroadcastheNetTorrentQuery();
|
||||||
|
|
||||||
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
||||||
{
|
{
|
||||||
foreach (var episode in searchCriteria.Episodes)
|
foreach (var episode in searchCriteria.Episodes)
|
||||||
|
@ -173,11 +173,37 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
var parameters = new BroadcastheNetTorrentQuery();
|
||||||
|
|
||||||
|
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
||||||
|
{
|
||||||
|
foreach (var seasonNumber in searchCriteria.Episodes.Select(v => v.SeasonNumber).Distinct())
|
||||||
|
{
|
||||||
|
parameters.Category = "Season";
|
||||||
|
parameters.Name = string.Format("Season {0}%", seasonNumber);
|
||||||
|
|
||||||
|
pageableRequests.Add(GetPagedRequests(MaxPages, parameters));
|
||||||
|
|
||||||
|
parameters = parameters.Clone();
|
||||||
|
|
||||||
|
parameters.Category = "Episode";
|
||||||
|
parameters.Name = string.Format("S{0:00}E%", seasonNumber);
|
||||||
|
|
||||||
|
pageableRequests.Add(GetPagedRequests(MaxPages, parameters));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var parameters = new BroadcastheNetTorrentQuery();
|
var parameters = new BroadcastheNetTorrentQuery();
|
||||||
|
|
||||||
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
if (AddSeriesSearchParameters(parameters, searchCriteria))
|
||||||
{
|
{
|
||||||
var episodeQueryTitle = searchCriteria.Episodes.Where(e => !string.IsNullOrWhiteSpace(e.Title))
|
var episodeQueryTitle = searchCriteria.Episodes.Where(e => !string.IsNullOrWhiteSpace(e.Title))
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
@ -73,6 +73,19 @@ namespace NzbDrone.Core.Indexers.Fanzub
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
if (Settings.AnimeStandardFormatSearch && searchCriteria.SeasonNumber > 0)
|
||||||
|
{
|
||||||
|
var searchTitles = searchCriteria.CleanSceneTitles.SelectMany(v => GetSeasonSearchStrings(v, searchCriteria.SeasonNumber)).ToList();
|
||||||
|
pageableRequests.Add(GetPagedRequests(string.Join("|", searchTitles)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
|
|
|
@ -103,6 +103,17 @@ namespace NzbDrone.Core.Indexers.FileList
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
AddImdbRequests(pageableRequests, searchCriteria, "search-torrents", Settings.AnimeCategories, $"&season={searchCriteria.SeasonNumber}");
|
||||||
|
pageableRequests.AddTier();
|
||||||
|
AddNameRequests(pageableRequests, searchCriteria, "search-torrents", Settings.AnimeCategories, $"&season={searchCriteria.SeasonNumber}");
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
public IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
|
|
|
@ -24,8 +24,8 @@ namespace NzbDrone.Core.Indexers.HDBits
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var queryBase = new TorrentQuery();
|
var queryBase = new TorrentQuery();
|
||||||
|
|
||||||
if (TryAddSearchParameters(queryBase, searchCriteria))
|
if (TryAddSearchParameters(queryBase, searchCriteria))
|
||||||
{
|
{
|
||||||
foreach (var episode in searchCriteria.Episodes)
|
foreach (var episode in searchCriteria.Episodes)
|
||||||
|
@ -40,6 +40,26 @@ namespace NzbDrone.Core.Indexers.HDBits
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
var queryBase = new TorrentQuery();
|
||||||
|
|
||||||
|
if (TryAddSearchParameters(queryBase, searchCriteria))
|
||||||
|
{
|
||||||
|
foreach (var seasonNumber in searchCriteria.Episodes.Select(e => e.SeasonNumber).Distinct())
|
||||||
|
{
|
||||||
|
var query = queryBase.Clone();
|
||||||
|
|
||||||
|
query.TvdbInfo.Season = seasonNumber;
|
||||||
|
|
||||||
|
pageableRequests.Add(GetRequest(query));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
|
@ -48,8 +68,8 @@ namespace NzbDrone.Core.Indexers.HDBits
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(DailyEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(DailyEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var query = new TorrentQuery();
|
var query = new TorrentQuery();
|
||||||
|
|
||||||
if (TryAddSearchParameters(query, searchCriteria))
|
if (TryAddSearchParameters(query, searchCriteria))
|
||||||
{
|
{
|
||||||
query.Search = string.Format("{0:yyyy}-{0:MM}-{0:dd}", searchCriteria.AirDate);
|
query.Search = string.Format("{0:yyyy}-{0:MM}-{0:dd}", searchCriteria.AirDate);
|
||||||
|
@ -63,8 +83,8 @@ namespace NzbDrone.Core.Indexers.HDBits
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(DailySeasonSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(DailySeasonSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var query = new TorrentQuery();
|
var query = new TorrentQuery();
|
||||||
|
|
||||||
if (TryAddSearchParameters(query, searchCriteria))
|
if (TryAddSearchParameters(query, searchCriteria))
|
||||||
{
|
{
|
||||||
query.Search = string.Format("{0}-", searchCriteria.Year);
|
query.Search = string.Format("{0}-", searchCriteria.Year);
|
||||||
|
@ -78,8 +98,8 @@ namespace NzbDrone.Core.Indexers.HDBits
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SeasonSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var queryBase = new TorrentQuery();
|
var queryBase = new TorrentQuery();
|
||||||
|
|
||||||
if (TryAddSearchParameters(queryBase, searchCriteria))
|
if (TryAddSearchParameters(queryBase, searchCriteria))
|
||||||
{
|
{
|
||||||
foreach (var seasonNumber in searchCriteria.Episodes.Select(e => e.SeasonNumber).Distinct())
|
foreach (var seasonNumber in searchCriteria.Episodes.Select(e => e.SeasonNumber).Distinct())
|
||||||
|
@ -98,8 +118,8 @@ namespace NzbDrone.Core.Indexers.HDBits
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SingleEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
var queryBase = new TorrentQuery();
|
var queryBase = new TorrentQuery();
|
||||||
|
|
||||||
if (TryAddSearchParameters(queryBase, searchCriteria))
|
if (TryAddSearchParameters(queryBase, searchCriteria))
|
||||||
{
|
{
|
||||||
foreach (var episode in searchCriteria.Episodes)
|
foreach (var episode in searchCriteria.Episodes)
|
||||||
|
|
|
@ -100,6 +100,16 @@ namespace NzbDrone.Core.Indexers
|
||||||
return FetchReleases(g => g.GetSearchRequests(searchCriteria));
|
return FetchReleases(g => g.GetSearchRequests(searchCriteria));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override IList<ReleaseInfo> Fetch(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
if (!SupportsSearch)
|
||||||
|
{
|
||||||
|
return Array.Empty<ReleaseInfo>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return FetchReleases(g => g.GetSearchRequests(searchCriteria));
|
||||||
|
}
|
||||||
|
|
||||||
public override IList<ReleaseInfo> Fetch(SpecialEpisodeSearchCriteria searchCriteria)
|
public override IList<ReleaseInfo> Fetch(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
if (!SupportsSearch)
|
if (!SupportsSearch)
|
||||||
|
|
|
@ -18,6 +18,7 @@ namespace NzbDrone.Core.Indexers
|
||||||
IList<ReleaseInfo> Fetch(DailyEpisodeSearchCriteria searchCriteria);
|
IList<ReleaseInfo> Fetch(DailyEpisodeSearchCriteria searchCriteria);
|
||||||
IList<ReleaseInfo> Fetch(DailySeasonSearchCriteria searchCriteria);
|
IList<ReleaseInfo> Fetch(DailySeasonSearchCriteria searchCriteria);
|
||||||
IList<ReleaseInfo> Fetch(AnimeEpisodeSearchCriteria searchCriteria);
|
IList<ReleaseInfo> Fetch(AnimeEpisodeSearchCriteria searchCriteria);
|
||||||
|
IList<ReleaseInfo> Fetch(AnimeSeasonSearchCriteria searchCriteria);
|
||||||
IList<ReleaseInfo> Fetch(SpecialEpisodeSearchCriteria searchCriteria);
|
IList<ReleaseInfo> Fetch(SpecialEpisodeSearchCriteria searchCriteria);
|
||||||
HttpRequest GetDownloadRequest(string link);
|
HttpRequest GetDownloadRequest(string link);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers
|
namespace NzbDrone.Core.Indexers
|
||||||
{
|
{
|
||||||
|
@ -10,6 +10,7 @@ namespace NzbDrone.Core.Indexers
|
||||||
IndexerPageableRequestChain GetSearchRequests(DailyEpisodeSearchCriteria searchCriteria);
|
IndexerPageableRequestChain GetSearchRequests(DailyEpisodeSearchCriteria searchCriteria);
|
||||||
IndexerPageableRequestChain GetSearchRequests(DailySeasonSearchCriteria searchCriteria);
|
IndexerPageableRequestChain GetSearchRequests(DailySeasonSearchCriteria searchCriteria);
|
||||||
IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria);
|
IndexerPageableRequestChain GetSearchRequests(AnimeEpisodeSearchCriteria searchCriteria);
|
||||||
|
IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria);
|
||||||
IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria);
|
IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
|
||||||
|
@ -42,6 +42,11 @@ namespace NzbDrone.Core.Indexers.IPTorrents
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
return new IndexerPageableRequestChain();
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
|
|
|
@ -73,6 +73,7 @@ namespace NzbDrone.Core.Indexers
|
||||||
public abstract IList<ReleaseInfo> Fetch(DailyEpisodeSearchCriteria searchCriteria);
|
public abstract IList<ReleaseInfo> Fetch(DailyEpisodeSearchCriteria searchCriteria);
|
||||||
public abstract IList<ReleaseInfo> Fetch(DailySeasonSearchCriteria searchCriteria);
|
public abstract IList<ReleaseInfo> Fetch(DailySeasonSearchCriteria searchCriteria);
|
||||||
public abstract IList<ReleaseInfo> Fetch(AnimeEpisodeSearchCriteria searchCriteria);
|
public abstract IList<ReleaseInfo> Fetch(AnimeEpisodeSearchCriteria searchCriteria);
|
||||||
|
public abstract IList<ReleaseInfo> Fetch(AnimeSeasonSearchCriteria searchCriteria);
|
||||||
public abstract IList<ReleaseInfo> Fetch(SpecialEpisodeSearchCriteria searchCriteria);
|
public abstract IList<ReleaseInfo> Fetch(SpecialEpisodeSearchCriteria searchCriteria);
|
||||||
public abstract HttpRequest GetDownloadRequest(string link);
|
public abstract HttpRequest GetDownloadRequest(string link);
|
||||||
|
|
||||||
|
|
|
@ -432,6 +432,31 @@ namespace NzbDrone.Core.Indexers.Newznab
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
if (SupportsSearch && Settings.AnimeStandardFormatSearch && searchCriteria.SeasonNumber > 0)
|
||||||
|
{
|
||||||
|
AddTvIdPageableRequests(pageableRequests,
|
||||||
|
Settings.AnimeCategories,
|
||||||
|
searchCriteria,
|
||||||
|
$"&season={NewznabifySeasonNumber(searchCriteria.SeasonNumber)}");
|
||||||
|
|
||||||
|
var queryTitles = TextSearchEngine == "raw" ? searchCriteria.SceneTitles : searchCriteria.CleanSceneTitles;
|
||||||
|
|
||||||
|
foreach (var queryTitle in queryTitles)
|
||||||
|
{
|
||||||
|
pageableRequests.Add(GetPagedRequests(MaxPages,
|
||||||
|
Settings.AnimeCategories,
|
||||||
|
"tvsearch",
|
||||||
|
$"&q={NewsnabifyTitle(queryTitle)}&season={NewznabifySeasonNumber(searchCriteria.SeasonNumber)}"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
@ -92,6 +92,21 @@ namespace NzbDrone.Core.Indexers.Nyaa
|
||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
||||||
|
foreach (var searchTitle in searchCriteria.SceneTitles.Select(PrepareQuery))
|
||||||
|
{
|
||||||
|
if (Settings.AnimeStandardFormatSearch && searchCriteria.SeasonNumber > 0)
|
||||||
|
{
|
||||||
|
pageableRequests.Add(GetPagedRequests(MaxPages, $"{searchTitle}+s{searchCriteria.SeasonNumber:00}"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pageableRequests;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
var pageableRequests = new IndexerPageableRequestChain();
|
var pageableRequests = new IndexerPageableRequestChain();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Indexers
|
namespace NzbDrone.Core.Indexers
|
||||||
|
@ -46,6 +46,11 @@ namespace NzbDrone.Core.Indexers
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
return new IndexerPageableRequestChain();
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using NzbDrone.Common.Extensions;
|
using NzbDrone.Common.Extensions;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
@ -43,6 +43,11 @@ namespace NzbDrone.Core.Indexers.TorrentRss
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
return new IndexerPageableRequestChain();
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using NzbDrone.Common.Http;
|
using NzbDrone.Common.Http;
|
||||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
|
||||||
|
@ -42,6 +42,11 @@ namespace NzbDrone.Core.Indexers.Torrentleech
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual IndexerPageableRequestChain GetSearchRequests(AnimeSeasonSearchCriteria searchCriteria)
|
||||||
|
{
|
||||||
|
return new IndexerPageableRequestChain();
|
||||||
|
}
|
||||||
|
|
||||||
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
public virtual IndexerPageableRequestChain GetSearchRequests(SpecialEpisodeSearchCriteria searchCriteria)
|
||||||
{
|
{
|
||||||
return new IndexerPageableRequestChain();
|
return new IndexerPageableRequestChain();
|
||||||
|
|
Loading…
Reference in New Issue