Refactored BacklogProvider

Fixed some issues with root folder and settings controller
This commit is contained in:
Keivan 2011-03-28 14:57:06 -07:00
parent e62cb3b5da
commit 613a49c3ea
5 changed files with 107 additions and 98 deletions

View File

@ -148,7 +148,7 @@
<virtualDirectory path="/" physicalPath="%NZBDRONE_PATH%\NZBDrone.Web" /> <virtualDirectory path="/" physicalPath="%NZBDRONE_PATH%\NZBDrone.Web" />
</application> </application>
<bindings> <bindings>
<binding protocol="http" bindingInformation="*:8989:" /> <binding protocol="http" bindingInformation="*:8111:" />
</bindings> </bindings>
</site> </site>
<siteDefaults> <siteDefaults>

View File

@ -121,78 +121,7 @@ namespace NzbDrone.Core.Providers
foreach (var series in _seriesList) foreach (var series in _seriesList)
{ {
try BackLogSeries(series);
{
//Do the searching here
_backlogSearchNotification.CurrentStatus = String.Format("Backlog Searching For: {0}", series.Title);
var sceneNames = SceneNameHelper.FindById(series.SeriesId);
if (sceneNames.Count < 1)
sceneNames.Add(series.Title);
foreach (var season in series.Seasons)
{
var episodesWithoutFiles = season.Episodes.Where(e => e.EpisodeFileId == 0);
if (season.Episodes.Count() == episodesWithoutFiles.Count())
{
//Whole season needs to be grabbed, look for the whole season first
//Lookup scene name using seriesId
foreach (var sceneName in sceneNames)
{
var searchString = String.Format("{0} Season {1}", sceneName,
season.SeasonNumber);
foreach (var i in _indexerProvider.EnabledIndexers())
{
//Get the users URL
GetUsersUrl(i, searchString);
//If the url still contains '{' & '}' the user probably hasn't configured the indexer settings
if (i.ApiUrl.Contains("{") && i.ApiUrl.Contains("}"))
{
Logger.Debug("Unable to Sync {0}. User Information has not been configured.", i.IndexerName);
continue; //Skip this indexer
}
var indexer = new FeedInfoModel(i.IndexerName, i.ApiUrl);
var feedItems = _rssProvider.GetFeed(indexer);
if (feedItems.Count() == 0)
{
Logger.Debug("Failed to download Backlog Search URL: {0}", indexer.Name);
continue; //No need to process anything else
}
foreach (RssItem item in feedItems)
{
NzbInfoModel nzb = Parser.ParseNzbInfo(indexer, item);
QueueSeasonIfWanted(nzb, i);
}
}
}
}
else
{
//Grab the episodes 1-by-1 (or in smaller chunks)
}
}
//Done searching for each episode
}
catch (Exception ex)
{
Logger.WarnException(ex.Message, ex);
}
_backlogSearchNotification.ProgressValue++;
} }
_backlogSearchNotification.CurrentStatus = "Backlog Search Completed"; _backlogSearchNotification.CurrentStatus = "Backlog Search Completed";
@ -208,6 +137,80 @@ namespace NzbDrone.Core.Providers
} }
} }
private void BackLogSeries(Series series)
{
try
{
//Do the searching here
_backlogSearchNotification.CurrentStatus = String.Format("Backlog Searching For: {0}", series.Title);
var sceneNames = SceneNameHelper.FindById(series.SeriesId);
if (sceneNames.Count < 1)
sceneNames.Add(series.Title);
foreach (var season in series.Seasons)
{
BackLogSeason(sceneNames, season);
}
//Done searching for each episode
}
catch (Exception ex)
{
Logger.WarnException(ex.Message, ex);
}
_backlogSearchNotification.ProgressValue++;
}
private void BackLogSeason(List<string> sceneNames, Season season)
{
var episodesWithoutFiles = season.Episodes.Where(e => e.EpisodeFileId == 0);
if (season.Episodes.Count() == episodesWithoutFiles.Count())
{
//Whole season needs to be grabbed, look for the whole season first
//Lookup scene name using seriesId
foreach (var sceneName in sceneNames)
{
var searchString = String.Format("{0} Season {1}", sceneName,
season.SeasonNumber);
foreach (var i in _indexerProvider.EnabledIndexers())
{
//Get the users URL
GetUsersUrl(i, searchString);
//If the url still contains '{' & '}' the user probably hasn't configured the indexer settings
if (i.ApiUrl.Contains("{") && i.ApiUrl.Contains("}"))
{
Logger.Debug("Unable to Sync {0}. User Information has not been configured.", i.IndexerName);
continue; //Skip this indexer
}
var indexer = new FeedInfoModel(i.IndexerName, i.ApiUrl);
var feedItems = _rssProvider.GetFeed(indexer);
if (feedItems.Count() == 0)
{
Logger.Debug("Failed to download Backlog Search URL: {0}", indexer.Name);
continue; //No need to process anything else
}
foreach (RssItem item in feedItems)
{
NzbInfoModel nzb = Parser.ParseNzbInfo(indexer, item);
QueueSeasonIfWanted(nzb, i);
}
}
}
}
}
private void GetUsersUrl(Indexer indexer, string searchString) private void GetUsersUrl(Indexer indexer, string searchString)
{ {
if (indexer.IndexerName == "NzbMatrix") if (indexer.IndexerName == "NzbMatrix")

View File

@ -24,8 +24,8 @@ namespace NzbDrone.Web.Controllers
private IRootDirProvider _rootDirProvider; private IRootDirProvider _rootDirProvider;
private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private string _settingsSaved = "Settings Saved."; private const string SETTINGS_SAVED = "Settings Saved.";
private string _settingsFailed = "Error Saving Settings, please fix any errors"; private const string SETTINGS_FAILED = "Error Saving Settings, please fix any errors";
public SettingsController(IConfigProvider configProvider, IIndexerProvider indexerProvider, public SettingsController(IConfigProvider configProvider, IIndexerProvider indexerProvider,
IQualityProvider qualityProvider, IRootDirProvider rootDirProvider) IQualityProvider qualityProvider, IRootDirProvider rootDirProvider)
@ -53,7 +53,7 @@ namespace NzbDrone.Web.Controllers
return View("Index", new SettingsModel return View("Index", new SettingsModel
{ {
Directories = new List<RootDir>() Directories = _rootDirProvider.GetAll()
}); });
} }
@ -211,11 +211,14 @@ namespace NzbDrone.Web.Controllers
[HttpPost] [HttpPost]
public ActionResult SaveGeneral(SettingsModel data) public ActionResult SaveGeneral(SettingsModel data)
{ {
if (data.Directories.Count > 0) if (data.Directories != null && data.Directories.Count > 0)
{ {
//If the Javascript was beaten we need to return an error //If the Javascript was beaten we need to return an error
if (!data.Directories.Exists(d => d.Default))
return Content(_settingsFailed); /*
* Kay.one: I can't see what its doing, all it does it dooesn't let me s.
* if (!data.Directories.Exists(d => d.Default))
return Content(SETTINGS_FAILED);*/
var currentRootDirs = _rootDirProvider.GetAll(); var currentRootDirs = _rootDirProvider.GetAll();
@ -235,10 +238,10 @@ namespace NzbDrone.Web.Controllers
_rootDirProvider.Update(dir); _rootDirProvider.Update(dir);
} }
return Content(_settingsSaved); return Content(SETTINGS_SAVED);
} }
return Content(_settingsFailed); return Content(SETTINGS_FAILED);
} }
[HttpPost] [HttpPost]
@ -257,10 +260,10 @@ namespace NzbDrone.Web.Controllers
_configProvider.SetValue("NzbsrusUId", data.NzbsrusUId); _configProvider.SetValue("NzbsrusUId", data.NzbsrusUId);
_configProvider.SetValue("NzbsrusHash", data.NzbsrusHash); _configProvider.SetValue("NzbsrusHash", data.NzbsrusHash);
return Content(_settingsSaved); return Content(SETTINGS_SAVED);
} }
return Content(_settingsFailed); return Content(SETTINGS_FAILED);
} }
[HttpPost] [HttpPost]
@ -281,10 +284,10 @@ namespace NzbDrone.Web.Controllers
_configProvider.SetValue("UseBlackhole", data.UseBlackHole.ToString()); _configProvider.SetValue("UseBlackhole", data.UseBlackHole.ToString());
_configProvider.SetValue("BlackholeDirectory", data.BlackholeDirectory); _configProvider.SetValue("BlackholeDirectory", data.BlackholeDirectory);
return Content(_settingsSaved); return Content(SETTINGS_SAVED);
} }
return Content(_settingsFailed); return Content(SETTINGS_FAILED);
} }
[HttpPost] [HttpPost]
@ -296,7 +299,7 @@ namespace NzbDrone.Web.Controllers
//Saves only the Default Quality, skips User Profiles since none exist //Saves only the Default Quality, skips User Profiles since none exist
if (data.UserProfiles == null) if (data.UserProfiles == null)
return Content(_settingsSaved); return Content(SETTINGS_SAVED);
foreach (var dbProfile in _qualityProvider.GetAllProfiles().Where(q => q.UserProfile)) foreach (var dbProfile in _qualityProvider.GetAllProfiles().Where(q => q.UserProfile))
{ {
@ -326,11 +329,11 @@ namespace NzbDrone.Web.Controllers
else else
_qualityProvider.Add(profile); _qualityProvider.Add(profile);
return Content(_settingsSaved); return Content(SETTINGS_SAVED);
} }
} }
return Content(_settingsFailed); return Content(SETTINGS_FAILED);
} }
[HttpPost] [HttpPost]
@ -353,10 +356,10 @@ namespace NzbDrone.Web.Controllers
_configProvider.SetValue("XbmcUsername", data.XbmcUsername); _configProvider.SetValue("XbmcUsername", data.XbmcUsername);
_configProvider.SetValue("XbmcPassword", data.XbmcPassword); _configProvider.SetValue("XbmcPassword", data.XbmcPassword);
return Content(_settingsSaved); return Content(SETTINGS_SAVED);
} }
return Content(_settingsFailed); return Content(SETTINGS_FAILED);
} }
[HttpPost] [HttpPost]
@ -375,10 +378,10 @@ namespace NzbDrone.Web.Controllers
_configProvider.SetValue("Sorting_NumberStyle", data.NumberStyle.ToString()); _configProvider.SetValue("Sorting_NumberStyle", data.NumberStyle.ToString());
_configProvider.SetValue("Sorting_MultiEpisodeStyle", data.MultiEpisodeStyle.ToString()); _configProvider.SetValue("Sorting_MultiEpisodeStyle", data.MultiEpisodeStyle.ToString());
return Content(_settingsSaved); return Content(SETTINGS_SAVED);
} }
return Content(_settingsFailed); return Content(SETTINGS_FAILED);
} }
} }
} }

View File

@ -7,6 +7,7 @@
#if DEBUG #if DEBUG
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using EnvDTE;
using EnvDTE80; using EnvDTE80;
namespace NzbDrone namespace NzbDrone
@ -21,6 +22,8 @@ namespace NzbDrone
ManagedAndNative ManagedAndNative
} }
private enum AttachResult private enum AttachResult
{ {
Attached, Attached,
@ -40,7 +43,7 @@ namespace NzbDrone
} }
#region private #region private
private readonly Dictionary<AttachType, string> _attachTypesMap; private readonly Dictionary<AttachType, string> _attachTypesMap;
private readonly DTE2 _dte; private readonly DTE2 _dte;
@ -49,7 +52,7 @@ namespace NzbDrone
#endregion #endregion
#region ctor #region ctor
private ProcessAttacher(DTE2 dte, string processName, int waitTimeout) private ProcessAttacher(DTE2 dte, string processName, int waitTimeout)
{ {
@ -63,7 +66,7 @@ namespace NzbDrone
#endregion #endregion
#region private methods #region private methods
private AttachResult Attach(AttachType attachType) private AttachResult Attach(AttachType attachType)
{ {
@ -130,7 +133,7 @@ namespace NzbDrone
#endregion #endregion
#region public methods #region public methods
public void OptimisticAttachManaged() public void OptimisticAttachManaged()

View File

@ -4,6 +4,6 @@
<supportedRuntime version="v4.0" /> <supportedRuntime version="v4.0" />
</startup> </startup>
<appSettings> <appSettings>
<add key="port" value="8989" /> <add key="port" value="8111" />
</appSettings> </appSettings>
</configuration> </configuration>