Implement NetImportSearchService

check it out
pull/497/head
Devin Buhl 8 years ago
parent f25d4463f5
commit c0f323b05a

@ -17,6 +17,7 @@ namespace NzbDrone.Core.NetImport.CouchPotato
{ {
public override string Name => "CouchPotato"; public override string Name => "CouchPotato";
public override bool Enabled => true; public override bool Enabled => true;
public override bool EnableAuto => false;
public CouchPotatoImport(IHttpClient httpClient, IConfigService configService, IParsingService parsingService, Logger logger) public CouchPotatoImport(IHttpClient httpClient, IConfigService configService, IParsingService parsingService, Logger logger)
: base(httpClient, configService, parsingService, logger) : base(httpClient, configService, parsingService, logger)

@ -9,7 +9,8 @@ namespace NzbDrone.Core.NetImport
public interface INetImport : IProvider public interface INetImport : IProvider
{ {
bool Enabled { get; } bool Enabled { get; }
bool EnableAuto { get; }
IList<Movie> Fetch(); IList<Movie> Fetch();
} }
} }

@ -23,6 +23,7 @@ namespace NzbDrone.Core.NetImport
public abstract string Name { get; } public abstract string Name { get; }
public abstract bool Enabled { get; } public abstract bool Enabled { get; }
public abstract bool EnableAuto { get; }
public NetImportBase(IConfigService configService, IParsingService parsingService, Logger logger) public NetImportBase(IConfigService configService, IParsingService parsingService, Logger logger)
{ {

@ -14,19 +14,16 @@ namespace NzbDrone.Core.NetImport
public class NetImportFactory : ProviderFactory<INetImport, NetImportDefinition>, INetImportFactory public class NetImportFactory : ProviderFactory<INetImport, NetImportDefinition>, INetImportFactory
{ {
//private readonly IIndexerStatusService _indexerStatusService;
private readonly INetImportRepository _providerRepository; private readonly INetImportRepository _providerRepository;
private readonly Logger _logger; private readonly Logger _logger;
public NetImportFactory(//IIndexerStatusService indexerStatusService, public NetImportFactory(INetImportRepository providerRepository,
INetImportRepository providerRepository,
IEnumerable<INetImport> providers, IEnumerable<INetImport> providers,
IContainer container, IContainer container,
IEventAggregator eventAggregator, IEventAggregator eventAggregator,
Logger logger) Logger logger)
: base(providerRepository, providers, container, eventAggregator, logger) : base(providerRepository, providers, container, eventAggregator, logger)
{ {
//_indexerStatusService = indexerStatusService;
_providerRepository = providerRepository; _providerRepository = providerRepository;
_logger = logger; _logger = logger;
} }
@ -43,27 +40,16 @@ namespace NzbDrone.Core.NetImport
public List<INetImport> Enabled() public List<INetImport> Enabled()
{ {
var enabledIndexers = GetAvailableProviders().Where(n => ((NetImportDefinition)n.Definition).Enabled); var enabledImporters = GetAvailableProviders().Where(n => ((NetImportDefinition)n.Definition).Enabled);
var indexers = FilterBlockedIndexers(enabledImporters);
var indexers = FilterBlockedIndexers(enabledIndexers);
return indexers.ToList(); return indexers.ToList();
} }
private IEnumerable<INetImport> FilterBlockedIndexers(IEnumerable<INetImport> indexers) private IEnumerable<INetImport> FilterBlockedIndexers(IEnumerable<INetImport> importers)
{ {
//var blockedIndexers = _indexerStatusService.GetBlockedIndexers().ToDictionary(v => v.IndexerId, v => v); foreach (var importer in importers)
foreach (var indexer in indexers)
{ {
/*IndexerStatus blockedIndexerStatus; yield return importer;
if (blockedIndexers.TryGetValue(indexer.Definition.Id, out blockedIndexerStatus))
{
_logger.Debug("Temporarily ignoring indexer {0} till {1} due to recent failures.", indexer.Definition.Name, blockedIndexerStatus.DisabledTill.Value.ToLocalTime());
continue;
}*/
yield return indexer;
} }
} }
} }

@ -0,0 +1,86 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NLog;
using NzbDrone.Core.Tv;
namespace NzbDrone.Core.NetImport
{
public interface IFetchNetImport
{
List<Movie> Fetch(int listId, bool onlyEnableAuto);
List<Movie> FetchAndFilter(int listId, bool onlyEnableAuto);
}
public class NetImportSearchService : IFetchNetImport
{
private readonly Logger _logger;
private readonly INetImportFactory _netImportFactory;
private readonly IMovieService _movieService;
public NetImportSearchService(INetImportFactory netImportFactory, IMovieService movieService, Logger logger)
{
_netImportFactory = netImportFactory;
_movieService = movieService;
_logger = logger;
}
public List<Movie> Fetch(int listId, bool onlyEnableAuto)
{
var movies = new List<Movie>();
// Get all the lists
var importLists = _netImportFactory.GetAvailableProviders();
// No listId is set return all movies in all lists
var lists = listId == 0 ? importLists.Where(n => ((NetImportDefinition) n.Definition).Enabled == true) : importLists.Where(n => ((NetImportDefinition) n.Definition).Id == listId);
// Only return lists where enabledAuto is truthy
if (onlyEnableAuto)
{
lists = importLists.Where(a => a.EnableAuto == true);
}
foreach (var list in lists)
{
movies.AddRange(list.Fetch());
}
return movies;
}
public List<Movie> FetchAndFilter(int listId, bool onlyEnableAuto)
{
var movies = new List<Movie>();
// Get all the lists
var importLists = _netImportFactory.GetAvailableProviders();
// No listId is set return all movies in all lists
var lists = listId == 0 ? importLists.Where(n => ((NetImportDefinition)n.Definition).Enabled == true) : importLists.Where(n => ((NetImportDefinition)n.Definition).Id == listId);
// Only return lists where enabledAuto is truthy
if (onlyEnableAuto)
{
lists = importLists.Where(a => a.EnableAuto == true);
}
// Get all existing movies
var existingMovies = _movieService.GetAllMovies();
foreach (var list in lists)
{
movies = (List<Movie>)list.Fetch();
}
// remove from movies list where existMovies (choose one)
// movies.RemoveAll(x => existingMovies.Contains(x));
// return movies;
// movies.RemoveAll(a => existingMovies.Exists(w => w.TmdbId == a.TmdbId));
// return movies;
return movies.Where(x => !existingMovies.Contains(x)).ToList();
}
}
}

@ -17,6 +17,7 @@ namespace NzbDrone.Core.NetImport.RSSImport
{ {
public override string Name => "RSSList"; public override string Name => "RSSList";
public override bool Enabled => true; public override bool Enabled => true;
public override bool EnableAuto => true;
public RSSImport(IHttpClient httpClient, IConfigService configService, IParsingService parsingService, Logger logger) public RSSImport(IHttpClient httpClient, IConfigService configService, IParsingService parsingService, Logger logger)
: base(httpClient, configService, parsingService, logger) : base(httpClient, configService, parsingService, logger)

@ -130,6 +130,7 @@
<Compile Include="NetImport\CouchPotato\CouchPotatoImport.cs" /> <Compile Include="NetImport\CouchPotato\CouchPotatoImport.cs" />
<Compile Include="NetImport\Exceptions\NetImportException.cs" /> <Compile Include="NetImport\Exceptions\NetImportException.cs" />
<Compile Include="NetImport\HttpNetImportBase.cs" /> <Compile Include="NetImport\HttpNetImportBase.cs" />
<Compile Include="NetImport\NetImportSearchService.cs" />
<Compile Include="NetImport\NetImportFactory.cs" /> <Compile Include="NetImport\NetImportFactory.cs" />
<Compile Include="NetImport\IProcessNetImportResponse.cs" /> <Compile Include="NetImport\IProcessNetImportResponse.cs" />
<Compile Include="NetImport\NetImportBaseSettings.cs" /> <Compile Include="NetImport\NetImportBaseSettings.cs" />

Loading…
Cancel
Save