mirror of
https://github.com/Radarr/Radarr.git
synced 2024-08-17 07:49:45 +02:00
Refactored BacklogProvider
Fixed some issues with root folder and settings controller
This commit is contained in:
parent
e62cb3b5da
commit
613a49c3ea
@ -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>
|
||||||
|
@ -121,78 +121,7 @@ private void PerformSearch()
|
|||||||
|
|
||||||
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 @@ private void PerformSearch()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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")
|
||||||
|
@ -24,8 +24,8 @@ public class SettingsController : Controller
|
|||||||
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)
|
||||||
@ -50,10 +50,10 @@ public ActionResult Index(string viewName)
|
|||||||
public ActionResult General()
|
public ActionResult General()
|
||||||
{
|
{
|
||||||
ViewData["viewName"] = "General";
|
ViewData["viewName"] = "General";
|
||||||
|
|
||||||
return View("Index", new SettingsModel
|
return View("Index", new SettingsModel
|
||||||
{
|
{
|
||||||
Directories = new List<RootDir>()
|
Directories = _rootDirProvider.GetAll()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,11 +211,14 @@ public QualityModel GetUpdatedProfileList()
|
|||||||
[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 @@ public ActionResult SaveGeneral(SettingsModel data)
|
|||||||
_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 @@ public ActionResult SaveIndexers(IndexerSettingsModel data)
|
|||||||
_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 @@ public ActionResult SaveDownloads(DownloadSettingsModel data)
|
|||||||
_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 @@ public ActionResult SaveQuality(QualityModel data)
|
|||||||
|
|
||||||
//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 @@ public ActionResult SaveQuality(QualityModel data)
|
|||||||
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 @@ public ActionResult SaveNotifications(NotificationSettingsModel data)
|
|||||||
_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 @@ public ActionResult SaveEpisodeSorting(EpisodeSortingModel data)
|
|||||||
_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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 @@ private enum AttachType
|
|||||||
ManagedAndNative
|
ManagedAndNative
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private enum AttachResult
|
private enum AttachResult
|
||||||
{
|
{
|
||||||
Attached,
|
Attached,
|
||||||
@ -40,7 +43,7 @@ public static void Attach()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#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 @@ public static void Attach()
|
|||||||
|
|
||||||
#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 @@ private ProcessAttacher(DTE2 dte, string processName, int waitTimeout)
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region private methods
|
#region private methods
|
||||||
|
|
||||||
private AttachResult Attach(AttachType attachType)
|
private AttachResult Attach(AttachType attachType)
|
||||||
{
|
{
|
||||||
@ -130,7 +133,7 @@ private bool IsBeingDebugged()
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region public methods
|
#region public methods
|
||||||
|
|
||||||
|
|
||||||
public void OptimisticAttachManaged()
|
public void OptimisticAttachManaged()
|
||||||
|
@ -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>
|
Loading…
Reference in New Issue
Block a user