better cleanup of recording libraries

This commit is contained in:
Luke Pulverenti 2016-05-20 11:57:07 -04:00
parent efe9fa8a8d
commit f54a0da88e
2 changed files with 27 additions and 6 deletions

View File

@ -20,12 +20,15 @@ namespace MediaBrowser.Model.LiveTv
public int PrePaddingSeconds { get; set; } public int PrePaddingSeconds { get; set; }
public int PostPaddingSeconds { get; set; } public int PostPaddingSeconds { get; set; }
public string[] MediaLocationsCreated { get; set; }
public LiveTvOptions() public LiveTvOptions()
{ {
EnableMovieProviders = true; EnableMovieProviders = true;
EnableRecordingSubfolders = true; EnableRecordingSubfolders = true;
TunerHosts = new List<TunerHostInfo>(); TunerHosts = new List<TunerHostInfo>();
ListingProviders = new List<ListingsProviderInfo>(); ListingProviders = new List<ListingsProviderInfo>();
MediaLocationsCreated = new string[] { };
} }
} }

View File

@ -115,17 +115,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{ {
var recordingFolders = GetRecordingFolders(); var recordingFolders = GetRecordingFolders();
var defaultRecordingPath = DefaultRecordingPath;
if (!recordingFolders.Any(i => i.Locations.Contains(defaultRecordingPath, StringComparer.OrdinalIgnoreCase)))
{
RemovePathFromLibrary(defaultRecordingPath);
}
var virtualFolders = _libraryManager.GetVirtualFolders() var virtualFolders = _libraryManager.GetVirtualFolders()
.ToList(); .ToList();
var allExistingPaths = virtualFolders.SelectMany(i => i.Locations).ToList(); var allExistingPaths = virtualFolders.SelectMany(i => i.Locations).ToList();
var pathsAdded = new List<string>();
foreach (var recordingFolder in recordingFolders) foreach (var recordingFolder in recordingFolders)
{ {
var pathsToCreate = recordingFolder.Locations var pathsToCreate = recordingFolder.Locations
@ -145,11 +141,33 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{ {
_logger.ErrorException("Error creating virtual folder", ex); _logger.ErrorException("Error creating virtual folder", ex);
} }
pathsAdded.AddRange(pathsToCreate);
}
var config = GetConfiguration();
var pathsToRemove = config.MediaLocationsCreated
.Except(recordingFolders.SelectMany(i => i.Locations))
.ToList();
if (pathsAdded.Count > 0 || pathsToRemove.Count > 0)
{
pathsAdded.InsertRange(0, config.MediaLocationsCreated);
config.MediaLocationsCreated = pathsAdded.Except(pathsToRemove).Distinct(StringComparer.OrdinalIgnoreCase).ToArray();
_config.SaveConfiguration("livetv", config);
}
foreach (var path in pathsToRemove)
{
RemovePathFromLibrary(path);
} }
} }
private void RemovePathFromLibrary(string path) private void RemovePathFromLibrary(string path)
{ {
_logger.Debug("Removing path from library: {0}", path);
var requiresRefresh = false; var requiresRefresh = false;
var virtualFolders = _libraryManager.GetVirtualFolders() var virtualFolders = _libraryManager.GetVirtualFolders()
.ToList(); .ToList();