You've already forked Sonarr
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:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
38
NzbDrone.Core/Providers/Indexer/NzbsOrgProvider.cs
Normal file
38
NzbDrone.Core/Providers/Indexer/NzbsOrgProvider.cs
Normal 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");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user