You've already forked Sonarr
mirror of
https://github.com/Sonarr/Sonarr.git
synced 2025-11-06 09:19:38 +02:00
ReSharper code cleanup
This commit is contained in:
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
@@ -13,6 +10,7 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public virtual bool StartSearch(int seriesId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
|
||||
@@ -238,10 +238,10 @@ namespace NzbDrone.Core.Providers.Core
|
||||
if (dbValue == null)
|
||||
{
|
||||
_sonicRepo.Add(new Config
|
||||
{
|
||||
Key = key,
|
||||
Value = value
|
||||
});
|
||||
{
|
||||
Key = key,
|
||||
Value = value
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -5,8 +5,6 @@ namespace NzbDrone.Core.Providers.Core
|
||||
{
|
||||
public class DiskProvider
|
||||
{
|
||||
#region IDiskProvider Members
|
||||
|
||||
public virtual bool FolderExists(string path)
|
||||
{
|
||||
return Directory.Exists(path);
|
||||
@@ -48,7 +46,5 @@ namespace NzbDrone.Core.Providers.Core
|
||||
{
|
||||
File.Move(sourcePath, destinationPath);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -47,7 +47,6 @@ namespace NzbDrone.Core.Providers.Core
|
||||
{
|
||||
var webClient = new WebClient();
|
||||
webClient.DownloadFile(request, filename);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -55,8 +54,6 @@ namespace NzbDrone.Core.Providers.Core
|
||||
Logger.TraceException(ex.Message, ex);
|
||||
throw;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public virtual void DownloadFile(string request, string filename, string username, string password)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Repository;
|
||||
@@ -13,17 +12,17 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
//TODO: Remove parsing of the series name, it should be done in series provider
|
||||
|
||||
private readonly IRepository _sonicRepo;
|
||||
private readonly SeriesProvider _series;
|
||||
private readonly SeasonProvider _seasons;
|
||||
private readonly TvDbProvider _tvDb;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly HistoryProvider _history;
|
||||
private readonly QualityProvider _quality;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly SeasonProvider _seasons;
|
||||
private readonly SeriesProvider _series;
|
||||
private readonly IRepository _sonicRepo;
|
||||
private readonly TvDbProvider _tvDb;
|
||||
|
||||
public EpisodeProvider(IRepository sonicRepo, SeriesProvider seriesProvider,
|
||||
SeasonProvider seasonProvider, TvDbProvider tvDbProvider,
|
||||
HistoryProvider history, QualityProvider quality)
|
||||
SeasonProvider seasonProvider, TvDbProvider tvDbProvider,
|
||||
HistoryProvider history, QualityProvider quality)
|
||||
{
|
||||
_sonicRepo = sonicRepo;
|
||||
_series = seriesProvider;
|
||||
@@ -35,7 +34,6 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
public EpisodeProvider()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual Episode GetEpisode(long id)
|
||||
@@ -45,7 +43,9 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
public virtual Episode GetEpisode(int seriesId, int seasonNumber, int episodeNumber)
|
||||
{
|
||||
return _sonicRepo.Single<Episode>(c => c.SeriesId == seriesId && c.SeasonNumber == seasonNumber && c.EpisodeNumber == episodeNumber);
|
||||
return
|
||||
_sonicRepo.Single<Episode>(
|
||||
c => c.SeriesId == seriesId && c.SeasonNumber == seasonNumber && c.EpisodeNumber == episodeNumber);
|
||||
}
|
||||
|
||||
public virtual IList<Episode> GetEpisodeBySeries(long seriesId)
|
||||
@@ -68,9 +68,9 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Comprehensive check on whether or not this episode is needed.
|
||||
/// Comprehensive check on whether or not this episode is needed.
|
||||
/// </summary>
|
||||
/// <param name="parsedReport">Episode that needs to be checked</param>
|
||||
/// <param name = "parsedReport">Episode that needs to be checked</param>
|
||||
/// <returns></returns>
|
||||
public virtual bool IsNeeded(EpisodeParseResult parsedReport)
|
||||
{
|
||||
@@ -112,11 +112,10 @@ namespace NzbDrone.Core.Providers
|
||||
continue;
|
||||
}
|
||||
|
||||
return true;//If we get to this point and the file has not yet been rejected then accept it
|
||||
return true; //If we get to this point and the file has not yet been rejected then accept it
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
public virtual void RefreshEpisodeInfo(int seriesId)
|
||||
@@ -130,7 +129,7 @@ namespace NzbDrone.Core.Providers
|
||||
var newList = new List<Episode>();
|
||||
|
||||
Logger.Debug("Updating season info for series:{0}", targetSeries.SeriesName);
|
||||
targetSeries.Episodes.Select(e => new { e.SeasonId, e.SeasonNumber })
|
||||
targetSeries.Episodes.Select(e => new {e.SeasonId, e.SeasonNumber})
|
||||
.Distinct().ToList()
|
||||
.ForEach(s => _seasons.EnsureSeason(seriesId, s.SeasonId, s.SeasonNumber));
|
||||
|
||||
@@ -145,19 +144,20 @@ namespace NzbDrone.Core.Providers
|
||||
if (episode.FirstAired < new DateTime(1753, 1, 1))
|
||||
episode.FirstAired = new DateTime(1753, 1, 1);
|
||||
|
||||
Logger.Trace("Updating info for series:{0} - episode:{1}", targetSeries.SeriesName, episode.EpisodeNumber);
|
||||
var newEpisode = new Episode()
|
||||
{
|
||||
AirDate = episode.FirstAired,
|
||||
EpisodeId = episode.Id,
|
||||
EpisodeNumber = episode.EpisodeNumber,
|
||||
Language = episode.Language.Abbriviation,
|
||||
Overview = episode.Overview,
|
||||
SeasonId = episode.SeasonId,
|
||||
SeasonNumber = episode.SeasonNumber,
|
||||
SeriesId = seriesId,
|
||||
Title = episode.EpisodeName
|
||||
};
|
||||
Logger.Trace("Updating info for series:{0} - episode:{1}", targetSeries.SeriesName,
|
||||
episode.EpisodeNumber);
|
||||
var newEpisode = new Episode
|
||||
{
|
||||
AirDate = episode.FirstAired,
|
||||
EpisodeId = episode.Id,
|
||||
EpisodeNumber = episode.EpisodeNumber,
|
||||
Language = episode.Language.Abbriviation,
|
||||
Overview = episode.Overview,
|
||||
SeasonId = episode.SeasonId,
|
||||
SeasonNumber = episode.SeasonNumber,
|
||||
SeriesId = seriesId,
|
||||
Title = episode.EpisodeName
|
||||
};
|
||||
|
||||
if (_sonicRepo.Exists<Episode>(e => e.EpisodeId == newEpisode.EpisodeId))
|
||||
{
|
||||
@@ -172,7 +172,8 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.FatalException(String.Format("An error has occurred while updating episode info for series {0}", seriesId), e);
|
||||
Logger.FatalException(
|
||||
String.Format("An error has occurred while updating episode info for series {0}", seriesId), e);
|
||||
failCount++;
|
||||
}
|
||||
}
|
||||
@@ -180,12 +181,14 @@ namespace NzbDrone.Core.Providers
|
||||
_sonicRepo.AddMany(newList);
|
||||
_sonicRepo.UpdateMany(updateList);
|
||||
|
||||
Logger.Debug("Finished episode refresh for series:{0}. Successful:{1} - Failed:{2} ", targetSeries.SeriesName, successCount, failCount);
|
||||
Logger.Debug("Finished episode refresh for series:{0}. Successful:{1} - Failed:{2} ",
|
||||
targetSeries.SeriesName, successCount, failCount);
|
||||
}
|
||||
|
||||
public virtual void RefreshEpisodeInfo(Season season)
|
||||
{
|
||||
Logger.Info("Starting episode info refresh for season {0} of series:{1}", season.SeasonNumber, season.SeriesId);
|
||||
Logger.Info("Starting episode info refresh for season {0} of series:{1}", season.SeasonNumber,
|
||||
season.SeriesId);
|
||||
int successCount = 0;
|
||||
int failCount = 0;
|
||||
var targetSeries = _tvDb.GetSeries(season.SeriesId, true);
|
||||
@@ -204,19 +207,20 @@ namespace NzbDrone.Core.Providers
|
||||
if (episode.FirstAired < new DateTime(1753, 1, 1))
|
||||
episode.FirstAired = new DateTime(1753, 1, 1);
|
||||
|
||||
Logger.Trace("Updating info for series:{0} - episode:{1}", targetSeries.SeriesName, episode.EpisodeNumber);
|
||||
var newEpisode = new Episode()
|
||||
{
|
||||
AirDate = episode.FirstAired,
|
||||
EpisodeId = episode.Id,
|
||||
EpisodeNumber = episode.EpisodeNumber,
|
||||
Language = episode.Language.Abbriviation,
|
||||
Overview = episode.Overview,
|
||||
SeasonId = episode.SeasonId,
|
||||
SeasonNumber = episode.SeasonNumber,
|
||||
SeriesId = season.SeriesId,
|
||||
Title = episode.EpisodeName
|
||||
};
|
||||
Logger.Trace("Updating info for series:{0} - episode:{1}", targetSeries.SeriesName,
|
||||
episode.EpisodeNumber);
|
||||
var newEpisode = new Episode
|
||||
{
|
||||
AirDate = episode.FirstAired,
|
||||
EpisodeId = episode.Id,
|
||||
EpisodeNumber = episode.EpisodeNumber,
|
||||
Language = episode.Language.Abbriviation,
|
||||
Overview = episode.Overview,
|
||||
SeasonId = episode.SeasonId,
|
||||
SeasonNumber = episode.SeasonNumber,
|
||||
SeriesId = season.SeriesId,
|
||||
Title = episode.EpisodeName
|
||||
};
|
||||
|
||||
if (_sonicRepo.Exists<Episode>(e => e.EpisodeId == newEpisode.EpisodeId))
|
||||
{
|
||||
@@ -231,7 +235,9 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.FatalException(String.Format("An error has occurred while updating episode info for season {0} of series {1}", season.SeasonNumber, season.SeriesId), e);
|
||||
Logger.FatalException(
|
||||
String.Format("An error has occurred while updating episode info for season {0} of series {1}",
|
||||
season.SeasonNumber, season.SeriesId), e);
|
||||
failCount++;
|
||||
}
|
||||
}
|
||||
@@ -239,7 +245,8 @@ namespace NzbDrone.Core.Providers
|
||||
_sonicRepo.AddMany(newList);
|
||||
_sonicRepo.UpdateMany(updateList);
|
||||
|
||||
Logger.Debug("Finished episode refresh for series:{0}. Successful:{1} - Failed:{2} ", targetSeries.SeriesName, successCount, failCount);
|
||||
Logger.Debug("Finished episode refresh for series:{0}. Successful:{1} - Failed:{2} ",
|
||||
targetSeries.SeriesName, successCount, failCount);
|
||||
}
|
||||
|
||||
public virtual void DeleteEpisode(int episodeId)
|
||||
@@ -251,6 +258,5 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
_sonicRepo.Update(episode);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,29 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Helpers;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
using NzbDrone.Core.Repository;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class ExternalNotificationProvider
|
||||
{
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly ConfigProvider _configProvider;
|
||||
private readonly XbmcProvider _xbmcProvider;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public ExternalNotificationProvider(ConfigProvider configProvider, XbmcProvider xbmcProvider)
|
||||
{
|
||||
_configProvider = configProvider;
|
||||
_xbmcProvider = xbmcProvider;
|
||||
}
|
||||
|
||||
#region ExternalNotificationProvider Members
|
||||
public virtual void OnGrab(string message)
|
||||
{
|
||||
var header = "NzbDrone [TV] - Grabbed";
|
||||
@@ -100,6 +94,5 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,24 +4,19 @@ using NzbDrone.Core.Model.Notification;
|
||||
|
||||
namespace NzbDrone.Core.Providers.Fakes
|
||||
{
|
||||
class FakeNotificationProvider
|
||||
internal class FakeNotificationProvider
|
||||
{
|
||||
private readonly Dictionary<Guid, BasicNotification> _basicNotifications = new Dictionary<Guid, BasicNotification>();
|
||||
private readonly Dictionary<Guid, ProgressNotification> _progressNotification = new Dictionary<Guid, ProgressNotification>();
|
||||
private readonly Dictionary<Guid, BasicNotification> _basicNotifications =
|
||||
new Dictionary<Guid, BasicNotification>();
|
||||
|
||||
private readonly Object _lock = new object();
|
||||
|
||||
private readonly Dictionary<Guid, ProgressNotification> _progressNotification =
|
||||
new Dictionary<Guid, ProgressNotification>();
|
||||
|
||||
ProgressNotification fakeNotification = new ProgressNotification("Updating Series");
|
||||
ProgressNotification fakeNotification2 = new ProgressNotification("Updating Series2");
|
||||
public void Register(ProgressNotification notification)
|
||||
{
|
||||
_progressNotification.Add(notification.Id, notification);
|
||||
}
|
||||
|
||||
public void Register(BasicNotification notification)
|
||||
{
|
||||
_basicNotifications.Add(notification.Id, notification);
|
||||
}
|
||||
private readonly ProgressNotification fakeNotification = new ProgressNotification("Updating Series");
|
||||
private readonly ProgressNotification fakeNotification2 = new ProgressNotification("Updating Series2");
|
||||
|
||||
public List<BasicNotification> BasicNotifications
|
||||
{
|
||||
@@ -30,17 +25,26 @@ namespace NzbDrone.Core.Providers.Fakes
|
||||
|
||||
public List<ProgressNotification> GetProgressNotifications
|
||||
{
|
||||
|
||||
get
|
||||
{
|
||||
fakeNotification.Status = ProgressNotificationStatus.InProgress;
|
||||
fakeNotification.Status = ProgressNotificationStatus.InProgress;
|
||||
fakeNotification2.CurrentStatus = DateTime.UtcNow.ToString();
|
||||
fakeNotification.CurrentStatus = DateTime.Now.ToString();
|
||||
return new List<ProgressNotification> { fakeNotification };
|
||||
return new List<ProgressNotification> {fakeNotification};
|
||||
}
|
||||
}
|
||||
|
||||
public void Register(ProgressNotification notification)
|
||||
{
|
||||
_progressNotification.Add(notification.Id, notification);
|
||||
}
|
||||
|
||||
public void Register(BasicNotification notification)
|
||||
{
|
||||
_basicNotifications.Add(notification.Id, notification);
|
||||
}
|
||||
|
||||
public void Dismiss(Guid notificationId)
|
||||
{
|
||||
lock (_lock)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.ServiceModel.Syndication;
|
||||
using System.Xml;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
@@ -8,15 +7,16 @@ namespace NzbDrone.Core.Providers.Feed
|
||||
{
|
||||
public abstract class FeedProviderBase
|
||||
{
|
||||
protected readonly SeriesProvider _seriesProvider;
|
||||
protected readonly SeasonProvider _seasonProvider;
|
||||
protected readonly EpisodeProvider _episodeProvider;
|
||||
protected readonly ConfigProvider _configProvider;
|
||||
private readonly HttpProvider _httpProvider;
|
||||
protected static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
protected readonly ConfigProvider _configProvider;
|
||||
protected readonly EpisodeProvider _episodeProvider;
|
||||
private readonly HttpProvider _httpProvider;
|
||||
protected readonly SeasonProvider _seasonProvider;
|
||||
protected readonly SeriesProvider _seriesProvider;
|
||||
|
||||
public FeedProviderBase(SeriesProvider seriesProvider, SeasonProvider seasonProvider,
|
||||
EpisodeProvider episodeProvider, ConfigProvider configProvider, HttpProvider httpProvider)
|
||||
EpisodeProvider episodeProvider, ConfigProvider configProvider,
|
||||
HttpProvider httpProvider)
|
||||
{
|
||||
_seriesProvider = seriesProvider;
|
||||
_seasonProvider = seasonProvider;
|
||||
@@ -27,28 +27,28 @@ namespace NzbDrone.Core.Providers.Feed
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets the source URL for the feed
|
||||
/// Gets the source URL for the feed
|
||||
/// </summary>
|
||||
protected abstract string[] URL { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the name for this feed
|
||||
/// Gets the name for this feed
|
||||
/// </summary>
|
||||
protected abstract string Name { get; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Generates direct link to download an NZB
|
||||
/// Generates direct link to download an NZB
|
||||
/// </summary>
|
||||
/// <param name="item">RSS Feed item to generate the link for</param>
|
||||
/// <param name = "item">RSS Feed item to generate the link for</param>
|
||||
/// <returns>Download link URL</returns>
|
||||
protected abstract string NzbDownloadUrl(SyndicationItem item);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Parses the RSS feed item and.
|
||||
/// Parses the RSS feed item and.
|
||||
/// </summary>
|
||||
/// <param name="item">RSS feed item to parse</param>
|
||||
/// <param name = "item">RSS feed item to parse</param>
|
||||
/// <returns>Detailed episode info</returns>
|
||||
protected EpisodeParseResult ParseFeed(SyndicationItem item)
|
||||
{
|
||||
@@ -66,13 +66,11 @@ namespace NzbDrone.Core.Providers.Feed
|
||||
|
||||
Logger.Debug("Unable to map {0} to any of series in database", episodeParseResult.SeriesTitle);
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Fetches RSS feed and process each news item.
|
||||
/// Fetches RSS feed and process each news item.
|
||||
/// </summary>
|
||||
public void Fetch()
|
||||
{
|
||||
@@ -122,5 +120,4 @@ namespace NzbDrone.Core.Providers.Feed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.ServiceModel.Syndication;
|
||||
using System.Text;
|
||||
using System.ServiceModel.Syndication;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
|
||||
namespace NzbDrone.Core.Providers.Feed
|
||||
{
|
||||
class NzbsOrgFeedProvider : FeedProviderBase
|
||||
internal class NzbsOrgFeedProvider : FeedProviderBase
|
||||
{
|
||||
public NzbsOrgFeedProvider(SeriesProvider seriesProvider, SeasonProvider seasonProvider, EpisodeProvider episodeProvider, ConfigProvider configProvider, HttpProvider httpProvider)
|
||||
public NzbsOrgFeedProvider(SeriesProvider seriesProvider, SeasonProvider seasonProvider,
|
||||
EpisodeProvider episodeProvider, ConfigProvider configProvider,
|
||||
HttpProvider httpProvider)
|
||||
: base(seriesProvider, seasonProvider, episodeProvider, configProvider, httpProvider)
|
||||
{
|
||||
}
|
||||
@@ -18,7 +16,11 @@ namespace NzbDrone.Core.Providers.Feed
|
||||
{
|
||||
get
|
||||
{
|
||||
return new[] { string.Format("http://nzbs.org/rss.php?type=1&i={0}&h={1}", _configProvider.NzbsOrgUId, _configProvider.NzbsOrgHash) };
|
||||
return new[]
|
||||
{
|
||||
string.Format("http://nzbs.org/rss.php?type=1&i={0}&h={1}", _configProvider.NzbsOrgUId,
|
||||
_configProvider.NzbsOrgHash)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,4 +34,4 @@ namespace NzbDrone.Core.Providers.Feed
|
||||
return item.Id.Replace("action=view", "action=getnzb");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Repository;
|
||||
using NzbDrone.Core.Repository.Quality;
|
||||
@@ -11,9 +10,8 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class HistoryProvider
|
||||
{
|
||||
private readonly IRepository _sonicRepo;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly IRepository _sonicRepo;
|
||||
|
||||
public HistoryProvider(IRepository sonicRepo)
|
||||
{
|
||||
@@ -24,8 +22,6 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
}
|
||||
|
||||
#region HistoryProvider Members
|
||||
|
||||
public virtual List<History> AllItems()
|
||||
{
|
||||
return _sonicRepo.All<History>().ToList();
|
||||
@@ -54,13 +50,11 @@ namespace NzbDrone.Core.Providers
|
||||
public virtual bool Exists(int episodeId, QualityTypes quality, bool proper)
|
||||
{
|
||||
//Looks for the existance of this episode in History
|
||||
if (_sonicRepo.Exists<History>(h => h.EpisodeId == episodeId && (QualityTypes)h.Quality == quality && h.IsProper == proper))
|
||||
if (_sonicRepo.Exists<History>(h => h.EpisodeId == episodeId && h.Quality == quality && h.IsProper == proper))
|
||||
return true;
|
||||
|
||||
Logger.Debug("Episode not in History: {0}", episodeId);
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,21 +1,17 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
using SubSonic.Repository;
|
||||
using NzbDrone.Core.Repository;
|
||||
using SubSonic.Repository;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class IndexerProvider
|
||||
{
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly IRepository _sonicRepo;
|
||||
private readonly ConfigProvider _configProvider;
|
||||
private readonly IRepository _sonicRepo;
|
||||
|
||||
public IndexerProvider(IRepository sonicRepo, ConfigProvider configProvider)
|
||||
{
|
||||
@@ -23,8 +19,6 @@ namespace NzbDrone.Core.Providers
|
||||
_configProvider = configProvider;
|
||||
}
|
||||
|
||||
#region IndexerProvider Members
|
||||
|
||||
public virtual List<Indexer> AllIndexers()
|
||||
{
|
||||
return _sonicRepo.All<Indexer>().OrderBy(i => i.Order).ToList();
|
||||
@@ -44,7 +38,5 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
return _sonicRepo.Single<Indexer>(indexerId);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
using NzbDrone.Core.Repository;
|
||||
using SubSonic.Repository;
|
||||
@@ -14,31 +11,28 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class MediaFileProvider
|
||||
{
|
||||
private readonly IRepository _repository;
|
||||
private readonly ConfigProvider _configProvider;
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private readonly EpisodeProvider _episodeProvider;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private static readonly string[] MediaExtentions = new[] { "*.mkv", "*.avi", "*.wmv" };
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private readonly EpisodeProvider _episodeProvider;
|
||||
private readonly IRepository _repository;
|
||||
|
||||
public MediaFileProvider(IRepository repository, ConfigProvider configProvider, DiskProvider diskProvider, EpisodeProvider episodeProvider)
|
||||
public MediaFileProvider(IRepository repository, DiskProvider diskProvider,
|
||||
EpisodeProvider episodeProvider)
|
||||
{
|
||||
_repository = repository;
|
||||
_configProvider = configProvider;
|
||||
_diskProvider = diskProvider;
|
||||
_episodeProvider = episodeProvider;
|
||||
}
|
||||
|
||||
public MediaFileProvider()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Scans the specified series folder for media files
|
||||
/// Scans the specified series folder for media files
|
||||
/// </summary>
|
||||
/// <param name="series">The series to be scanned</param>
|
||||
/// <param name = "series">The series to be scanned</param>
|
||||
public List<EpisodeFile> Scan(Series series)
|
||||
{
|
||||
var mediaFileList = GetMediaFileList(series.Path);
|
||||
@@ -54,9 +48,9 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Scans the specified series folder for media files
|
||||
/// Scans the specified series folder for media files
|
||||
/// </summary>
|
||||
/// <param name="series">The series to be scanned</param>
|
||||
/// <param name = "series">The series to be scanned</param>
|
||||
public List<EpisodeFile> Scan(Series series, string path)
|
||||
{
|
||||
var mediaFileList = GetMediaFileList(path);
|
||||
@@ -84,7 +78,8 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
foreach (var episodeNumber in episodesInFile.Episodes)
|
||||
{
|
||||
var episode = _episodeProvider.GetEpisode(series.SeriesId, episodesInFile.SeasonNumber, episodeNumber);
|
||||
var episode = _episodeProvider.GetEpisode(series.SeriesId, episodesInFile.SeasonNumber,
|
||||
episodeNumber);
|
||||
|
||||
if (episode != null)
|
||||
{
|
||||
@@ -92,7 +87,8 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
|
||||
else
|
||||
Logger.Warn("Unable to find Series:{0} Season:{1} Episode:{2} in the database. File:{3}", series.Title, episodesInFile.SeasonNumber, episodeNumber, filePath);
|
||||
Logger.Warn("Unable to find Series:{0} Season:{1} Episode:{2} in the database. File:{3}",
|
||||
series.Title, episodesInFile.SeasonNumber, episodeNumber, filePath);
|
||||
}
|
||||
|
||||
//Return null if no Episodes exist in the DB for the parsed episodes from file
|
||||
@@ -125,7 +121,8 @@ namespace NzbDrone.Core.Providers
|
||||
_episodeProvider.UpdateEpisode(ep);
|
||||
episodeList += String.Format(", {0}", ep.EpisodeId).Trim(' ', ',');
|
||||
}
|
||||
Logger.Trace("File {0}:{1} attached to episode(s): '{2}'", episodeFile.EpisodeFileId, filePath, episodeList);
|
||||
Logger.Trace("File {0}:{1} attached to episode(s): '{2}'", episodeFile.EpisodeFileId, filePath,
|
||||
episodeList);
|
||||
|
||||
return episodeFile;
|
||||
}
|
||||
@@ -135,9 +132,9 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes files that no longer exist from the database
|
||||
/// Removes files that no longer exist from the database
|
||||
/// </summary>
|
||||
/// <param name="files">list of files to verify</param>
|
||||
/// <param name = "files">list of files to verify</param>
|
||||
public void CleanUp(List<EpisodeFile> files)
|
||||
{
|
||||
foreach (var episodeFile in files)
|
||||
@@ -192,4 +189,4 @@ namespace NzbDrone.Core.Providers
|
||||
return mediaFileList;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,25 +1,19 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NzbDrone.Core.Model.Notification;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class NotificationProvider
|
||||
{
|
||||
private readonly Dictionary<Guid, BasicNotification> _basicNotifications = new Dictionary<Guid, BasicNotification>();
|
||||
private Dictionary<Guid, ProgressNotification> _progressNotification = new Dictionary<Guid, ProgressNotification>();
|
||||
private readonly Dictionary<Guid, BasicNotification> _basicNotifications =
|
||||
new Dictionary<Guid, BasicNotification>();
|
||||
|
||||
private readonly Object _lock = new object();
|
||||
|
||||
public virtual void Register(ProgressNotification notification)
|
||||
{
|
||||
_progressNotification.Add(notification.Id, notification);
|
||||
}
|
||||
|
||||
public virtual void Register(BasicNotification notification)
|
||||
{
|
||||
_basicNotifications.Add(notification.Id, notification);
|
||||
}
|
||||
private readonly Dictionary<Guid, ProgressNotification> _progressNotification =
|
||||
new Dictionary<Guid, ProgressNotification>();
|
||||
|
||||
public virtual List<BasicNotification> BasicNotifications
|
||||
{
|
||||
@@ -30,10 +24,22 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
get
|
||||
{
|
||||
return new List<ProgressNotification>(_progressNotification.Values.Where(p => p.Status == ProgressNotificationStatus.InProgress));
|
||||
return
|
||||
new List<ProgressNotification>(
|
||||
_progressNotification.Values.Where(p => p.Status == ProgressNotificationStatus.InProgress));
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Register(ProgressNotification notification)
|
||||
{
|
||||
_progressNotification.Add(notification.Id, notification);
|
||||
}
|
||||
|
||||
public virtual void Register(BasicNotification notification)
|
||||
{
|
||||
_basicNotifications.Add(notification.Id, notification);
|
||||
}
|
||||
|
||||
public virtual void Dismiss(Guid notificationId)
|
||||
{
|
||||
lock (_lock)
|
||||
|
||||
@@ -1,30 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
using NzbDrone.Core.Helpers;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class PostProcessingProvider
|
||||
{
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
private readonly MediaFileProvider _mediaFileProvider;
|
||||
private readonly RenameProvider _renameProvider;
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
|
||||
public PostProcessingProvider(SeriesProvider seriesProvider,
|
||||
MediaFileProvider mediaFileProvider, RenameProvider renameProvider)
|
||||
MediaFileProvider mediaFileProvider, RenameProvider renameProvider)
|
||||
{
|
||||
_seriesProvider = seriesProvider;
|
||||
_mediaFileProvider = mediaFileProvider;
|
||||
_mediaFileProvider = mediaFileProvider;
|
||||
_renameProvider = renameProvider;
|
||||
}
|
||||
|
||||
#region PostProcessingProvider Members
|
||||
|
||||
public virtual void ProcessEpisode(string dir, string nzbName)
|
||||
{
|
||||
var parsedSeries = Parser.ParseSeriesName(nzbName);
|
||||
@@ -42,7 +31,5 @@ namespace NzbDrone.Core.Providers
|
||||
_renameProvider.RenameEpisodeFile(file.EpisodeFileId, true);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Repository.Quality;
|
||||
using SubSonic.Repository;
|
||||
@@ -11,12 +9,11 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class QualityProvider
|
||||
{
|
||||
private IRepository _sonicRepo;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly IRepository _sonicRepo;
|
||||
|
||||
public QualityProvider()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public QualityProvider(IRepository sonicRepo)
|
||||
@@ -24,8 +21,6 @@ namespace NzbDrone.Core.Providers
|
||||
_sonicRepo = sonicRepo;
|
||||
}
|
||||
|
||||
#region IQualityProvider Members
|
||||
|
||||
public virtual void Add(QualityProfile profile)
|
||||
{
|
||||
_sonicRepo.Add(profile);
|
||||
@@ -58,7 +53,5 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
return _sonicRepo.Single<QualityProfile>(q => q.QualityProfileId == profileId);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,35 +2,32 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Helpers;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
using NzbDrone.Core.Repository;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class RenameProvider
|
||||
{
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
private readonly SeasonProvider _seasonProvider;
|
||||
private readonly EpisodeProvider _episodeProvider;
|
||||
private readonly MediaFileProvider _mediaFileProvider;
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly ConfigProvider _configProvider;
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private readonly EpisodeProvider _episodeProvider;
|
||||
private readonly List<EpisodeRenameModel> _epsToRename = new List<EpisodeRenameModel>();
|
||||
private readonly ExternalNotificationProvider _externalNotificationProvider;
|
||||
private readonly MediaFileProvider _mediaFileProvider;
|
||||
private readonly SeasonProvider _seasonProvider;
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
|
||||
private Thread _renameThread;
|
||||
private List<EpisodeRenameModel> _epsToRename = new List<EpisodeRenameModel>();
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public RenameProvider(SeriesProvider seriesProvider, SeasonProvider seasonProvider,
|
||||
EpisodeProvider episodeProvider, MediaFileProvider mediaFileProvider,
|
||||
DiskProvider diskProvider, ConfigProvider configProvider,
|
||||
ExternalNotificationProvider extenalNotificationProvider)
|
||||
EpisodeProvider episodeProvider, MediaFileProvider mediaFileProvider,
|
||||
DiskProvider diskProvider, ConfigProvider configProvider,
|
||||
ExternalNotificationProvider extenalNotificationProvider)
|
||||
{
|
||||
_seriesProvider = seriesProvider;
|
||||
_seasonProvider = seasonProvider;
|
||||
@@ -41,7 +38,6 @@ namespace NzbDrone.Core.Providers
|
||||
_externalNotificationProvider = extenalNotificationProvider;
|
||||
}
|
||||
|
||||
#region RenameProvider Members
|
||||
public virtual void RenameAll()
|
||||
{
|
||||
//Get a list of all episode files/episodes and rename them
|
||||
@@ -49,12 +45,14 @@ namespace NzbDrone.Core.Providers
|
||||
foreach (var episodeFile in _mediaFileProvider.GetEpisodeFiles())
|
||||
{
|
||||
var series = _seriesProvider.GetSeries(episodeFile.SeriesId);
|
||||
var erm = new EpisodeRenameModel();
|
||||
erm.SeriesName = series.Title;
|
||||
erm.Folder = series.Path;
|
||||
var erm = new EpisodeRenameModel {SeriesName = series.Title, Folder = series.Path};
|
||||
|
||||
if (series.SeasonFolder)
|
||||
erm.Folder += Path.DirectorySeparatorChar + EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber, _configProvider.GetValue("Sorting_SeasonFolderFormat", "Season %s", true));
|
||||
erm.Folder += Path.DirectorySeparatorChar +
|
||||
EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber,
|
||||
_configProvider.GetValue(
|
||||
"Sorting_SeasonFolderFormat", "Season %s",
|
||||
true));
|
||||
|
||||
erm.EpisodeFile = episodeFile;
|
||||
_epsToRename.Add(erm);
|
||||
@@ -70,13 +68,14 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
foreach (var episodeFile in _mediaFileProvider.GetEpisodeFiles().Where(s => s.SeriesId == seriesId))
|
||||
{
|
||||
var erm = new EpisodeRenameModel();
|
||||
erm.SeriesName = series.Title;
|
||||
|
||||
erm.Folder = series.Path;
|
||||
var erm = new EpisodeRenameModel {SeriesName = series.Title, Folder = series.Path};
|
||||
|
||||
if (series.SeasonFolder)
|
||||
erm.Folder += Path.DirectorySeparatorChar + EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber, _configProvider.GetValue("Sorting_SeasonFolderFormat", "Season %s", true));
|
||||
erm.Folder += Path.DirectorySeparatorChar +
|
||||
EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber,
|
||||
_configProvider.GetValue(
|
||||
"Sorting_SeasonFolderFormat", "Season %s",
|
||||
true));
|
||||
|
||||
erm.EpisodeFile = episodeFile;
|
||||
_epsToRename.Add(erm);
|
||||
@@ -90,15 +89,17 @@ namespace NzbDrone.Core.Providers
|
||||
var season = _seasonProvider.GetSeason(seasonId);
|
||||
var series = _seriesProvider.GetSeries(season.SeriesId);
|
||||
|
||||
foreach (var episodeFile in _mediaFileProvider.GetEpisodeFiles().Where(s => s.Episodes[0].SeasonId == seasonId))
|
||||
foreach (
|
||||
var episodeFile in _mediaFileProvider.GetEpisodeFiles().Where(s => s.Episodes[0].SeasonId == seasonId))
|
||||
{
|
||||
var erm = new EpisodeRenameModel();
|
||||
erm.SeriesName = series.Title;
|
||||
|
||||
erm.Folder = series.Path;
|
||||
var erm = new EpisodeRenameModel {SeriesName = series.Title, Folder = series.Path};
|
||||
|
||||
if (series.SeasonFolder)
|
||||
erm.Folder += Path.DirectorySeparatorChar + EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber, _configProvider.GetValue("Sorting_SeasonFolderFormat", "Season %s", true));
|
||||
erm.Folder += Path.DirectorySeparatorChar +
|
||||
EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber,
|
||||
_configProvider.GetValue(
|
||||
"Sorting_SeasonFolderFormat", "Season %s",
|
||||
true));
|
||||
|
||||
erm.EpisodeFile = episodeFile;
|
||||
_epsToRename.Add(erm);
|
||||
@@ -112,15 +113,16 @@ namespace NzbDrone.Core.Providers
|
||||
var episode = _episodeProvider.GetEpisode(episodeId);
|
||||
var series = _seriesProvider.GetSeries(episode.SeriesId);
|
||||
|
||||
var episodeFile = _mediaFileProvider.GetEpisodeFiles().Where(s => s.Episodes.Contains(episode)).FirstOrDefault();
|
||||
var episodeFile =
|
||||
_mediaFileProvider.GetEpisodeFiles().Where(s => s.Episodes.Contains(episode)).FirstOrDefault();
|
||||
|
||||
var erm = new EpisodeRenameModel();
|
||||
erm.SeriesName = series.Title;
|
||||
|
||||
erm.Folder = series.Path;
|
||||
var erm = new EpisodeRenameModel {SeriesName = series.Title, Folder = series.Path};
|
||||
|
||||
if (series.SeasonFolder)
|
||||
erm.Folder += Path.DirectorySeparatorChar + EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber, _configProvider.GetValue("Sorting_SeasonFolderFormat", "Season %s", true));
|
||||
erm.Folder += Path.DirectorySeparatorChar +
|
||||
EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber,
|
||||
_configProvider.GetValue(
|
||||
"Sorting_SeasonFolderFormat", "Season %s", true));
|
||||
|
||||
erm.EpisodeFile = episodeFile;
|
||||
_epsToRename.Add(erm);
|
||||
@@ -133,21 +135,19 @@ namespace NzbDrone.Core.Providers
|
||||
var episodeFile = _mediaFileProvider.GetEpisodeFile(episodeFileId);
|
||||
var series = _seriesProvider.GetSeries(episodeFile.Series.SeriesId);
|
||||
|
||||
var erm = new EpisodeRenameModel();
|
||||
erm.SeriesName = series.Title;
|
||||
|
||||
erm.Folder = series.Path;
|
||||
var erm = new EpisodeRenameModel {SeriesName = series.Title, Folder = series.Path};
|
||||
|
||||
if (series.SeasonFolder)
|
||||
erm.Folder += Path.DirectorySeparatorChar + EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber, _configProvider.GetValue("Sorting_SeasonFolderFormat", "Season %s", true));
|
||||
erm.Folder += Path.DirectorySeparatorChar +
|
||||
EpisodeRenameHelper.GetSeasonFolder(episodeFile.Episodes[0].SeasonNumber,
|
||||
_configProvider.GetValue(
|
||||
"Sorting_SeasonFolderFormat", "Season %s", true));
|
||||
|
||||
erm.EpisodeFile = episodeFile;
|
||||
_epsToRename.Add(erm);
|
||||
StartRename();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void StartRename()
|
||||
{
|
||||
Logger.Debug("Episode Rename Starting");
|
||||
@@ -155,10 +155,10 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
Logger.Debug("Initializing background rename of episodes");
|
||||
_renameThread = new Thread(RenameProcessor)
|
||||
{
|
||||
Name = "RenameEpisodes",
|
||||
Priority = ThreadPriority.Lowest
|
||||
};
|
||||
{
|
||||
Name = "RenameEpisodes",
|
||||
Priority = ThreadPriority.Lowest
|
||||
};
|
||||
|
||||
_renameThread.Start();
|
||||
}
|
||||
@@ -203,7 +203,6 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
else
|
||||
_externalNotificationProvider.OnRename(erm);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -212,4 +211,4 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NzbDrone.Core.Repository;
|
||||
using SubSonic.Repository;
|
||||
|
||||
@@ -27,17 +25,17 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
_sonioRepo.Add(rootDir);
|
||||
}
|
||||
|
||||
|
||||
public virtual void Remove(int rootDirId)
|
||||
{
|
||||
_sonioRepo.Delete<RootDir>(rootDirId);
|
||||
}
|
||||
|
||||
|
||||
public virtual void Update(RootDir rootDir)
|
||||
{
|
||||
_sonioRepo.Update(rootDir);
|
||||
}
|
||||
|
||||
|
||||
public virtual RootDir GetRootDir(int rootDirId)
|
||||
{
|
||||
return _sonioRepo.Single<RootDir>(rootDirId);
|
||||
@@ -45,4 +43,4 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class RssSyncProvider
|
||||
{
|
||||
public virtual void Begin()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,19 +9,16 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class SabProvider
|
||||
{
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly ConfigProvider _config;
|
||||
private readonly HttpProvider _http;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public SabProvider(ConfigProvider config, HttpProvider http)
|
||||
{
|
||||
_config = config;
|
||||
_http = http;
|
||||
}
|
||||
|
||||
#region IDownloadProvider Members
|
||||
|
||||
public virtual bool AddByUrl(string url, string title)
|
||||
{
|
||||
const string mode = "addurl";
|
||||
@@ -31,7 +28,8 @@ namespace NzbDrone.Core.Providers
|
||||
string name = url.Replace("&", "%26");
|
||||
string nzbName = HttpUtility.UrlEncode(title);
|
||||
|
||||
string action = string.Format("mode={0}&name={1}&priority={2}&cat={3}&nzbname={4}", mode, name, priority, cat, nzbName);
|
||||
string action = string.Format("mode={0}&name={1}&priority={2}&cat={3}&nzbname={4}", mode, name, priority,
|
||||
cat, nzbName);
|
||||
string request = GetSabRequest(action);
|
||||
|
||||
Logger.Debug("Adding report [{0}] to the queue.", nzbName);
|
||||
@@ -61,7 +59,10 @@ namespace NzbDrone.Core.Providers
|
||||
return false;
|
||||
|
||||
//Get the Count of Items in Queue where 'filename' is Equal to goodName, if not zero, return true (isInQueue)))
|
||||
if ((xDoc.Descendants("slot").Where(s => s.Element("filename").Value.Equals(title, StringComparison.InvariantCultureIgnoreCase))).Count() != 0)
|
||||
if (
|
||||
(xDoc.Descendants("slot").Where(
|
||||
s => s.Element("filename").Value.Equals(title, StringComparison.InvariantCultureIgnoreCase))).Count() !=
|
||||
0)
|
||||
{
|
||||
Logger.Debug("Episode in queue - '{0}'", title);
|
||||
|
||||
@@ -81,7 +82,8 @@ namespace NzbDrone.Core.Providers
|
||||
string priority = _config.GetValue("SabTvPriority", String.Empty, false);
|
||||
string nzbName = HttpUtility.UrlEncode(title);
|
||||
|
||||
string action = string.Format("mode={0}&name={1}&priority={2}&cat={3}&nzbname={4}", mode, id, priority, cat, nzbName);
|
||||
string action = string.Format("mode={0}&name={1}&priority={2}&cat={3}&nzbname={4}", mode, id, priority, cat,
|
||||
nzbName);
|
||||
string request = GetSabRequest(action);
|
||||
|
||||
Logger.Debug("Adding report [{0}] to the queue.", nzbName);
|
||||
@@ -95,16 +97,17 @@ namespace NzbDrone.Core.Providers
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private string GetSabRequest(string action)
|
||||
{
|
||||
string sabnzbdInfo = _config.GetValue("SabHost", String.Empty, false) + ":" + _config.GetValue("SabPort", String.Empty, false);
|
||||
string sabnzbdInfo = _config.GetValue("SabHost", String.Empty, false) + ":" +
|
||||
_config.GetValue("SabPort", String.Empty, false);
|
||||
string username = _config.GetValue("SabUsername", String.Empty, false);
|
||||
string password = _config.GetValue("SabPassword", String.Empty, false);
|
||||
string apiKey = _config.GetValue("SabApiKey", String.Empty, false);
|
||||
|
||||
return string.Format(@"http://{0}/api?$Action&apikey={1}&ma_username={2}&ma_password={3}", sabnzbdInfo, apiKey, username, password).Replace("$Action", action);
|
||||
return
|
||||
string.Format(@"http://{0}/api?$Action&apikey={1}&ma_username={2}&ma_password={3}", sabnzbdInfo, apiKey,
|
||||
username, password).Replace("$Action", action);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,29 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Repository;
|
||||
using SubSonic.Repository;
|
||||
using System.Linq;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class SeasonProvider
|
||||
{
|
||||
private readonly IRepository _sonicRepo;
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly IRepository _sonicRepo;
|
||||
|
||||
public SeasonProvider(IRepository dataRepository, SeriesProvider seriesProvider)
|
||||
public SeasonProvider(IRepository dataRepository)
|
||||
{
|
||||
_sonicRepo = dataRepository;
|
||||
_seriesProvider = seriesProvider;
|
||||
}
|
||||
|
||||
public SeasonProvider()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual Season GetSeason(int seasonId)
|
||||
@@ -51,16 +46,17 @@ namespace NzbDrone.Core.Providers
|
||||
if (_sonicRepo.Exists<Season>(s => s.SeasonId == seasonId))
|
||||
return;
|
||||
//TODO: Calculate Season Folder
|
||||
Logger.Trace("Adding Season To DB. [SeriesID:{0} SeasonID:{1} SeasonNumber:{2}]", seriesId, seasonId, seasonNumber, "????");
|
||||
Logger.Trace("Adding Season To DB. [SeriesID:{0} SeasonID:{1} SeasonNumber:{2}]", seriesId, seasonId,
|
||||
seasonNumber, "????");
|
||||
|
||||
var newSeason = new Season()
|
||||
{
|
||||
Monitored = true,
|
||||
SeasonId = seasonId,
|
||||
SeasonNumber = seasonNumber,
|
||||
SeriesId = seriesId
|
||||
};
|
||||
_sonicRepo.Add<Season>(newSeason);
|
||||
var newSeason = new Season
|
||||
{
|
||||
Monitored = true,
|
||||
SeasonId = seasonId,
|
||||
SeasonNumber = seasonNumber,
|
||||
SeriesId = seriesId
|
||||
};
|
||||
_sonicRepo.Add(newSeason);
|
||||
}
|
||||
|
||||
public virtual int SaveSeason(Season season)
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Ninject;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
using NzbDrone.Core.Repository;
|
||||
@@ -19,14 +16,14 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
//Trims all white spaces and separators from the end of the title.
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly ConfigProvider _config;
|
||||
private readonly QualityProvider _quality;
|
||||
private readonly IRepository _sonioRepo;
|
||||
private readonly TvDbProvider _tvDb;
|
||||
private readonly QualityProvider _quality;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public SeriesProvider(ConfigProvider configProvider,
|
||||
IRepository dataRepository, TvDbProvider tvDbProvider, QualityProvider quality)
|
||||
IRepository dataRepository, TvDbProvider tvDbProvider, QualityProvider quality)
|
||||
{
|
||||
_config = configProvider;
|
||||
_sonioRepo = dataRepository;
|
||||
@@ -38,8 +35,6 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
}
|
||||
|
||||
#region SeriesProvider Members
|
||||
|
||||
public virtual IQueryable<Series> GetAllSeries()
|
||||
{
|
||||
return _sonioRepo.All<Series>();
|
||||
@@ -51,9 +46,9 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if a series is being actively watched.
|
||||
/// Determines if a series is being actively watched.
|
||||
/// </summary>
|
||||
/// <param name="id">The TVDB ID of the series</param>
|
||||
/// <param name = "id">The TVDB ID of the series</param>
|
||||
/// <returns>Whether or not the show is monitored</returns>
|
||||
public virtual bool IsMonitored(long id)
|
||||
{
|
||||
@@ -149,7 +144,6 @@ namespace NzbDrone.Core.Providers
|
||||
_sonioRepo.Delete<Series>(seriesId);
|
||||
|
||||
Logger.Info("Successfully deleted Series [{0}]", seriesId);
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -165,8 +159,5 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Model.Notification;
|
||||
using NzbDrone.Core.Providers.Core;
|
||||
|
||||
@@ -13,20 +11,19 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class SyncProvider
|
||||
{
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private readonly EpisodeProvider _episodeProvider;
|
||||
private readonly MediaFileProvider _mediaFileProvider;
|
||||
private readonly NotificationProvider _notificationProvider;
|
||||
private readonly DiskProvider _diskProvider;
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
|
||||
private ProgressNotification _seriesSyncNotification;
|
||||
private Thread _seriesSyncThread;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public SyncProvider(SeriesProvider seriesProvider, EpisodeProvider episodeProvider,
|
||||
MediaFileProvider mediaFileProvider, NotificationProvider notificationProvider,
|
||||
DiskProvider diskProvider)
|
||||
MediaFileProvider mediaFileProvider, NotificationProvider notificationProvider,
|
||||
DiskProvider diskProvider)
|
||||
{
|
||||
_seriesProvider = seriesProvider;
|
||||
_episodeProvider = episodeProvider;
|
||||
@@ -35,8 +32,6 @@ namespace NzbDrone.Core.Providers
|
||||
_diskProvider = diskProvider;
|
||||
}
|
||||
|
||||
#region ISyncProvider Members
|
||||
|
||||
public List<String> GetUnmappedFolders(string path)
|
||||
{
|
||||
Logger.Debug("Generating list of unmapped folders");
|
||||
@@ -64,8 +59,6 @@ namespace NzbDrone.Core.Providers
|
||||
return results;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public bool BeginUpdateNewSeries()
|
||||
{
|
||||
Logger.Debug("User has requested a scan of new series");
|
||||
@@ -73,10 +66,10 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
Logger.Debug("Initializing background scan thread");
|
||||
_seriesSyncThread = new Thread(SyncNewSeries)
|
||||
{
|
||||
Name = "SyncNewSeries",
|
||||
Priority = ThreadPriority.Lowest
|
||||
};
|
||||
{
|
||||
Name = "SyncNewSeries",
|
||||
Priority = ThreadPriority.Lowest
|
||||
};
|
||||
|
||||
_seriesSyncThread.Start();
|
||||
}
|
||||
@@ -120,8 +113,6 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
private void ScanSeries()
|
||||
{
|
||||
|
||||
|
||||
var syncList = _seriesProvider.GetAllSeries().Where(s => s.LastInfoSync == null).ToList();
|
||||
if (syncList.Count == 0) return;
|
||||
|
||||
@@ -131,13 +122,16 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
try
|
||||
{
|
||||
_seriesSyncNotification.CurrentStatus = String.Format("Searching For: {0}", new DirectoryInfo(currentSeries.Path).Name);
|
||||
_seriesSyncNotification.CurrentStatus = String.Format("Searching For: {0}",
|
||||
new DirectoryInfo(currentSeries.Path).Name);
|
||||
var updatedSeries = _seriesProvider.UpdateSeriesInfo(currentSeries.SeriesId);
|
||||
|
||||
_seriesSyncNotification.CurrentStatus = String.Format("Downloading episode info For: {0}", updatedSeries.Title);
|
||||
_seriesSyncNotification.CurrentStatus = String.Format("Downloading episode info For: {0}",
|
||||
updatedSeries.Title);
|
||||
_episodeProvider.RefreshEpisodeInfo(updatedSeries.SeriesId);
|
||||
|
||||
_seriesSyncNotification.CurrentStatus = String.Format("Scanning series folder {0}", updatedSeries.Path);
|
||||
_seriesSyncNotification.CurrentStatus = String.Format("Scanning series folder {0}",
|
||||
updatedSeries.Path);
|
||||
_mediaFileProvider.Scan(_seriesProvider.GetSeries(updatedSeries.SeriesId));
|
||||
|
||||
//Todo: Launch Backlog search for this series _backlogProvider.StartSearch(mappedSeries.Id);
|
||||
@@ -154,4 +148,4 @@ namespace NzbDrone.Core.Providers
|
||||
ScanSeries();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,27 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Timers;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Model.Notification;
|
||||
|
||||
namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class TimerProvider
|
||||
{
|
||||
private readonly RssSyncProvider _rssSyncProvider;
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
private readonly SeasonProvider _seasonProvider;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly EpisodeProvider _episodeProvider;
|
||||
private readonly MediaFileProvider _mediaFileProvider;
|
||||
|
||||
private Timer _rssSyncTimer;
|
||||
private Timer _minuteTimer;
|
||||
private readonly Timer _minuteTimer;
|
||||
private readonly RssSyncProvider _rssSyncProvider;
|
||||
private readonly Timer _rssSyncTimer;
|
||||
private readonly SeasonProvider _seasonProvider;
|
||||
private readonly SeriesProvider _seriesProvider;
|
||||
private DateTime _rssSyncNextInterval;
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public TimerProvider(RssSyncProvider rssSyncProvider, SeriesProvider seriesProvider, SeasonProvider seasonProvider, EpisodeProvider episodeProvider, MediaFileProvider mediaFileProvider)
|
||||
public TimerProvider(RssSyncProvider rssSyncProvider, SeriesProvider seriesProvider,
|
||||
SeasonProvider seasonProvider, EpisodeProvider episodeProvider,
|
||||
MediaFileProvider mediaFileProvider)
|
||||
{
|
||||
_rssSyncProvider = rssSyncProvider;
|
||||
_seriesProvider = seriesProvider;
|
||||
@@ -33,8 +31,6 @@ namespace NzbDrone.Core.Providers
|
||||
_minuteTimer = new Timer(60000);
|
||||
}
|
||||
|
||||
#region TimerProvider Members
|
||||
|
||||
public virtual void ResetRssSyncTimer()
|
||||
{
|
||||
double interval = _rssSyncTimer.Interval;
|
||||
@@ -43,13 +39,14 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
public virtual void StartRssSyncTimer()
|
||||
{
|
||||
if (_rssSyncTimer.Interval < 900000) //If Timer is less than 15 minutes, throw an error! This should also be handled when saving the config, though a user could by-pass it by editing the DB directly... TNO (Trust No One)
|
||||
if (_rssSyncTimer.Interval < 900000)
|
||||
//If Timer is less than 15 minutes, throw an error! This should also be handled when saving the config, though a user could by-pass it by editing the DB directly... TNO (Trust No One)
|
||||
{
|
||||
Logger.Error("RSS Sync Frequency is invalid, please set the interval first");
|
||||
throw new InvalidOperationException("RSS Sync Frequency Invalid");
|
||||
}
|
||||
|
||||
_rssSyncTimer.Elapsed += new ElapsedEventHandler(RunRssSync);
|
||||
_rssSyncTimer.Elapsed += RunRssSync;
|
||||
_rssSyncTimer.Start();
|
||||
_rssSyncNextInterval = DateTime.Now.AddMilliseconds(_rssSyncTimer.Interval);
|
||||
}
|
||||
@@ -61,7 +58,7 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
public virtual void SetRssSyncTimer(int minutes)
|
||||
{
|
||||
long ms = minutes * 60 * 1000;
|
||||
long ms = minutes*60*1000;
|
||||
_rssSyncTimer.Interval = ms;
|
||||
}
|
||||
|
||||
@@ -77,7 +74,7 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
public virtual void StartMinuteTimer()
|
||||
{
|
||||
_minuteTimer.Elapsed += new ElapsedEventHandler(MinuteTimer_Elapsed);
|
||||
_minuteTimer.Elapsed += MinuteTimer_Elapsed;
|
||||
_minuteTimer.Start();
|
||||
}
|
||||
|
||||
@@ -86,8 +83,6 @@ namespace NzbDrone.Core.Providers
|
||||
_minuteTimer.Stop();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void RunRssSync(object obj, ElapsedEventArgs args)
|
||||
{
|
||||
_rssSyncNextInterval = DateTime.Now.AddMilliseconds(_rssSyncTimer.Interval);
|
||||
@@ -132,4 +127,4 @@ namespace NzbDrone.Core.Providers
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using NLog;
|
||||
using TvdbLib;
|
||||
@@ -11,10 +10,12 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class TvDbProvider
|
||||
{
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private static readonly Regex CleanUpRegex = new Regex(@"((\s|^)the(\s|$))|((\s|^)and(\s|$))|[^a-z]", RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
private const string TVDB_APIKEY = "5D2D188E86E07F4F";
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
private static readonly Regex CleanUpRegex = new Regex(@"((\s|^)the(\s|$))|((\s|^)and(\s|$))|[^a-z]",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
private readonly TvdbHandler _handler;
|
||||
|
||||
public TvDbProvider()
|
||||
@@ -22,8 +23,6 @@ namespace NzbDrone.Core.Providers
|
||||
_handler = new TvdbHandler(new XmlCacheProvider(CentralDispatch.AppPath + @"\cache\tvdb"), TVDB_APIKEY);
|
||||
}
|
||||
|
||||
#region TvDbProvider Members
|
||||
|
||||
public virtual IList<TvdbSearchResult> SearchSeries(string title)
|
||||
{
|
||||
Logger.Debug("Searching TVDB for '{0}'", title);
|
||||
@@ -76,17 +75,15 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether a title in a search result is equal to the title searched for.
|
||||
/// Determines whether a title in a search result is equal to the title searched for.
|
||||
/// </summary>
|
||||
/// <param name="directoryName">Name of the directory.</param>
|
||||
/// <param name="tvdbTitle">The TVDB title.</param>
|
||||
/// <param name = "directoryName">Name of the directory.</param>
|
||||
/// <param name = "tvdbTitle">The TVDB title.</param>
|
||||
/// <returns>
|
||||
/// <c>true</c> if the titles are found to be same; otherwise, <c>false</c>.
|
||||
/// <c>true</c> if the titles are found to be same; otherwise, <c>false</c>.
|
||||
/// </returns>
|
||||
public static bool IsTitleMatch(string directoryName, string tvdbTitle)
|
||||
{
|
||||
|
||||
|
||||
var result = false;
|
||||
|
||||
if (String.IsNullOrEmpty(directoryName))
|
||||
@@ -98,14 +95,13 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
else if (String.Equals(CleanUpRegex.Replace(directoryName, ""), CleanUpRegex.Replace(tvdbTitle, ""), StringComparison.InvariantCultureIgnoreCase))
|
||||
else if (String.Equals(CleanUpRegex.Replace(directoryName, ""), CleanUpRegex.Replace(tvdbTitle, ""),
|
||||
StringComparison.InvariantCultureIgnoreCase))
|
||||
result = true;
|
||||
|
||||
Logger.Debug("Match between '{0}' and '{1}' was {2}", tvdbTitle, directoryName, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NzbDrone.Core.Model;
|
||||
using NzbDrone.Core.Repository;
|
||||
using SubSonic.Repository;
|
||||
@@ -10,18 +9,18 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class UpcomingEpisodesProvider
|
||||
{
|
||||
private IRepository _sonicRepo;
|
||||
private readonly IRepository _sonicRepo;
|
||||
|
||||
public UpcomingEpisodesProvider(IRepository sonicRepo)
|
||||
{
|
||||
_sonicRepo = sonicRepo;
|
||||
}
|
||||
|
||||
#region UpcomingEpisodesProvider Members
|
||||
|
||||
public virtual UpcomingEpisodesModel Upcoming()
|
||||
{
|
||||
var allEps = _sonicRepo.All<Episode>().Where(e => e.AirDate >= DateTime.Today.AddDays(-1) && e.AirDate < DateTime.Today.AddDays(8));
|
||||
var allEps =
|
||||
_sonicRepo.All<Episode>().Where(
|
||||
e => e.AirDate >= DateTime.Today.AddDays(-1) && e.AirDate < DateTime.Today.AddDays(8));
|
||||
|
||||
var yesterday = allEps.Where(e => e.AirDate == DateTime.Today.AddDays(-1)).ToList();
|
||||
var today = allEps.Where(e => e.AirDate == DateTime.Today).ToList();
|
||||
@@ -42,9 +41,9 @@ namespace NzbDrone.Core.Providers
|
||||
|
||||
public virtual List<Episode> Week()
|
||||
{
|
||||
return _sonicRepo.All<Episode>().Where(e => e.AirDate > DateTime.Today && e.AirDate < DateTime.Today.AddDays(8)).ToList();
|
||||
return
|
||||
_sonicRepo.All<Episode>().Where(e => e.AirDate > DateTime.Today && e.AirDate < DateTime.Today.AddDays(8))
|
||||
.ToList();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Helpers;
|
||||
@@ -12,23 +10,20 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
public class XbmcProvider
|
||||
{
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
private readonly ConfigProvider _configProvider;
|
||||
private readonly HttpProvider _httpProvider;
|
||||
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
public XbmcProvider(ConfigProvider configProvider, HttpProvider httpProvider)
|
||||
{
|
||||
_configProvider = configProvider;
|
||||
_httpProvider = httpProvider;
|
||||
}
|
||||
|
||||
#region XbmcProvider Members
|
||||
|
||||
public virtual void Notify(string header, string message)
|
||||
{
|
||||
//Get time in seconds and convert to ms
|
||||
var time = Convert.ToInt32(_configProvider.GetValue("XbmcDisplayTime", "3", true)) * 1000;
|
||||
var time = Convert.ToInt32(_configProvider.GetValue("XbmcDisplayTime", "3", true))*1000;
|
||||
var command = String.Format("ExecBuiltIn(Notification({0},{1},{2}))", header, message, time);
|
||||
|
||||
if (Convert.ToBoolean(_configProvider.GetValue("XbmcNotificationImage", false, true)))
|
||||
@@ -55,7 +50,8 @@ namespace NzbDrone.Core.Providers
|
||||
var xbmcSeriesPath = GetXbmcSeriesPath(host, seriesId);
|
||||
|
||||
//If the path is not found & the user wants to update the entire library, do it now.
|
||||
if (String.IsNullOrEmpty(xbmcSeriesPath) && Convert.ToBoolean(_configProvider.GetValue("XbmcFullUpdate", false, true)))
|
||||
if (String.IsNullOrEmpty(xbmcSeriesPath) &&
|
||||
Convert.ToBoolean(_configProvider.GetValue("XbmcFullUpdate", false, true)))
|
||||
{
|
||||
//Update the entire library
|
||||
Logger.Trace("Series [{0}] doesn't exist on XBMC host: {1}, Updating Entire Library", seriesId, host);
|
||||
@@ -78,8 +74,6 @@ namespace NzbDrone.Core.Providers
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private string SendCommand(string host, string command)
|
||||
{
|
||||
var username = _configProvider.GetValue("XbmcUsername", String.Empty, true);
|
||||
@@ -90,16 +84,20 @@ namespace NzbDrone.Core.Providers
|
||||
{
|
||||
return _httpProvider.DownloadString(url, username, password);
|
||||
}
|
||||
|
||||
|
||||
return _httpProvider.DownloadString(url);
|
||||
}
|
||||
|
||||
private string GetXbmcSeriesPath(string host, int seriesId)
|
||||
{
|
||||
var query = String.Format("select path.strPath from path, tvshow, tvshowlinkpath where tvshow.c12 = {0} and tvshowlinkpath.idShow = tvshow.idShow and tvshowlinkpath.idPath = path.idPath", seriesId);
|
||||
var query =
|
||||
String.Format(
|
||||
"select path.strPath from path, tvshow, tvshowlinkpath where tvshow.c12 = {0} and tvshowlinkpath.idShow = tvshow.idShow and tvshowlinkpath.idPath = path.idPath",
|
||||
seriesId);
|
||||
var command = String.Format("QueryVideoDatabase({0})", query);
|
||||
|
||||
var setResponseCommand = "SetResponseFormat(webheader;false;webfooter;false;header;<xml>;footer;</xml>;opentag;<tag>;closetag;</tag>;closefinaltag;false)";
|
||||
var setResponseCommand =
|
||||
"SetResponseFormat(webheader;false;webfooter;false;header;<xml>;footer;</xml>;opentag;<tag>;closetag;</tag>;closefinaltag;false)";
|
||||
var resetResponseCommand = "SetResponseFormat()";
|
||||
|
||||
SendCommand(host, setResponseCommand);
|
||||
@@ -123,4 +121,4 @@ namespace NzbDrone.Core.Providers
|
||||
return field.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user