1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2025-11-06 09:19:38 +02:00

Revered back to subsonic

Added indexer configuration back-end
This commit is contained in:
Keivan
2011-04-18 17:12:06 -07:00
parent 129be92001
commit 6f2dcbf838
20 changed files with 368 additions and 478 deletions

View File

@@ -1,37 +0,0 @@
using System.ServiceModel.Syndication;
using NzbDrone.Core.Providers.Core;
namespace NzbDrone.Core.Providers.Feed
{
internal class NzbsOrgFeedProvider : FeedProviderBase
{
public NzbsOrgFeedProvider(SeriesProvider seriesProvider, SeasonProvider seasonProvider,
EpisodeProvider episodeProvider, ConfigProvider configProvider,
HttpProvider httpProvider)
: base(seriesProvider, seasonProvider, episodeProvider, configProvider, httpProvider)
{
}
protected override string[] URL
{
get
{
return new[]
{
string.Format("http://nzbs.org/rss.php?type=1&i={0}&h={1}", _configProvider.NzbsOrgUId,
_configProvider.NzbsOrgHash)
};
}
}
protected override string Name
{
get { return "Nzbs.Org"; }
}
protected override string NzbDownloadUrl(SyndicationItem item)
{
return item.Id.Replace("action=view", "action=getnzb");
}
}
}

View File

@@ -2,39 +2,45 @@
using NLog;
using NzbDrone.Core.Model;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository;
using SubSonic.Repository;
namespace NzbDrone.Core.Providers.Feed
namespace NzbDrone.Core.Providers.Indexer
{
public abstract class FeedProviderBase
public abstract class IndexerProviderBase
{
protected static readonly Logger Logger = LogManager.GetCurrentClassLogger();
protected readonly ConfigProvider _configProvider;
protected readonly EpisodeProvider _episodeProvider;
private readonly HttpProvider _httpProvider;
protected readonly IRepository _repository;
private readonly IndexerProvider _indexerProvider;
protected readonly SeasonProvider _seasonProvider;
protected readonly SeriesProvider _seriesProvider;
public FeedProviderBase(SeriesProvider seriesProvider, SeasonProvider seasonProvider,
public IndexerProviderBase(SeriesProvider seriesProvider, SeasonProvider seasonProvider,
EpisodeProvider episodeProvider, ConfigProvider configProvider,
HttpProvider httpProvider)
HttpProvider httpProvider, IRepository repository, IndexerProvider indexerProvider)
{
_seriesProvider = seriesProvider;
_seasonProvider = seasonProvider;
_episodeProvider = episodeProvider;
_configProvider = configProvider;
_httpProvider = httpProvider;
_repository = repository;
_indexerProvider = indexerProvider;
}
/// <summary>
/// Gets the source URL for the feed
/// </summary>
protected abstract string[] URL { get; }
protected abstract string[] Url { get; }
/// <summary>
/// Gets the name for this feed
/// Gets the name for the feed
/// </summary>
protected abstract string Name { get; }
public abstract string Name { get; }
/// <summary>
@@ -74,9 +80,9 @@ namespace NzbDrone.Core.Providers.Feed
/// </summary>
public void Fetch()
{
Logger.Info("Fetching feeds from " + Name);
Logger.Info("Fetching feeds from " + Settings.Name);
foreach (var url in URL)
foreach (var url in Url)
{
Logger.Debug("Downloading RSS " + url);
var feed = SyndicationFeed.Load(_httpProvider.DownloadXml(url)).Items;
@@ -87,7 +93,7 @@ namespace NzbDrone.Core.Providers.Feed
}
}
Logger.Info("Finished processing feeds from " + Name);
Logger.Info("Finished processing feeds from " + Settings.Name);
}
private void ProcessItem(SyndicationItem feedItem)
@@ -119,5 +125,17 @@ namespace NzbDrone.Core.Providers.Feed
}
}
}
protected IndexerSetting Settings
{
get
{
return _indexerProvider.GetSettings(GetType());
}
}
}
}

View File

@@ -0,0 +1,38 @@
using System.ServiceModel.Syndication;
using NzbDrone.Core.Providers.Core;
using SubSonic.Repository;
namespace NzbDrone.Core.Providers.Indexer
{
public class NzbsOrgProvider : IndexerProviderBase
{
public NzbsOrgProvider(SeriesProvider seriesProvider, SeasonProvider seasonProvider, EpisodeProvider episodeProvider, ConfigProvider configProvider, HttpProvider httpProvider, IRepository repository, IndexerProvider indexerProvider)
: base(seriesProvider, seasonProvider, episodeProvider, configProvider, httpProvider, repository, indexerProvider)
{
}
protected override string[] Url
{
get
{
return new[]
{
string.Format("http://nzbs.org/rss.php?type=1&i={0}&h={1}", _configProvider.NzbsOrgUId, _configProvider.NzbsOrgHash)
};
}
}
public override string Name
{
get { return "Nzbs.org"; }
}
protected override string NzbDownloadUrl(SyndicationItem item)
{
return item.Id.Replace("action=view", "action=getnzb");
}
}
}

View File

@@ -1,7 +1,9 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using NLog;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Providers.Indexer;
using NzbDrone.Core.Repository;
using SubSonic.Repository;
@@ -10,33 +12,70 @@ namespace NzbDrone.Core.Providers
public class IndexerProvider
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private readonly ConfigProvider _configProvider;
private readonly IRepository _sonicRepo;
private readonly IRepository _repository;
public IndexerProvider(IRepository sonicRepo, ConfigProvider configProvider)
public IndexerProvider(IRepository repository)
{
_sonicRepo = sonicRepo;
_configProvider = configProvider;
_repository = repository;
}
public virtual List<Indexer> AllIndexers()
public IndexerProvider()
{
return _sonicRepo.All<Indexer>().OrderBy(i => i.Order).ToList();
}
public virtual List<Indexer> EnabledIndexers()
public virtual List<IndexerSetting> AllIndexers()
{
return _sonicRepo.All<Indexer>().Where(i => i.Enabled).OrderBy(i => i.Order).ToList();
return _repository.All<IndexerSetting>().ToList();
}
public virtual void Update(Indexer indexer)
public virtual void SaveSettings(IndexerSetting settings)
{
_sonicRepo.Update(indexer);
if (settings.Id == 0)
{
Logger.Debug("Adding Indexer settings for {0}", settings.Name);
_repository.Add(settings);
}
else
{
Logger.Debug("Updating Indexer settings for {0}", settings.Name);
_repository.Update(settings);
}
}
public virtual Indexer Single(int indexerId)
public virtual IndexerSetting GetSettings(Type type)
{
return _sonicRepo.Single<Indexer>(indexerId);
return _repository.Single<IndexerSetting>(s => s.IndexProviderType == type.ToString());
}
public IndexerSetting GetSettings(int id)
{
return _repository.Single<IndexerSetting>(s => s.Id == id);
}
public virtual void InitializeIndexers(IList<IndexerProviderBase> indexers)
{
Logger.Info("Initializing indexers. Count {0}", indexers.Count);
var currentIndexers = AllIndexers();
foreach (var feedProvider in indexers)
{
IndexerProviderBase indexerProviderLocal = feedProvider;
if (!currentIndexers.Exists(c => c.IndexProviderType == indexerProviderLocal.GetType().ToString()))
{
var settings = new IndexerSetting()
{
Enable = false,
IndexProviderType = indexerProviderLocal.GetType().ToString(),
Name = indexerProviderLocal.Name
};
SaveSettings(settings);
}
}
}
}
}