diff --git a/MediaBrowser.Api/Library/FileOrganizationService.cs b/MediaBrowser.Api/Library/FileOrganizationService.cs index 849e9cf0db..0ed08a8607 100644 --- a/MediaBrowser.Api/Library/FileOrganizationService.cs +++ b/MediaBrowser.Api/Library/FileOrganizationService.cs @@ -119,8 +119,6 @@ namespace MediaBrowser.Api.Library { private readonly IFileOrganizationService _iFileOrganizationService; - /// The _json serializer - /// private readonly IJsonSerializer _jsonSerializer; public FileOrganizationService(IFileOrganizationService iFileOrganizationService, IJsonSerializer jsonSerializer) diff --git a/MediaBrowser.Dlna/Main/DlnaEntryPoint.cs b/MediaBrowser.Dlna/Main/DlnaEntryPoint.cs index dfec8baaae..a2e9cd60e7 100644 --- a/MediaBrowser.Dlna/Main/DlnaEntryPoint.cs +++ b/MediaBrowser.Dlna/Main/DlnaEntryPoint.cs @@ -85,14 +85,14 @@ namespace MediaBrowser.Dlna.Main _config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated; } - private bool _lastEnableUPnP; + private bool _lastEnableUpnP; void _config_ConfigurationUpdated(object sender, EventArgs e) { - if (_lastEnableUPnP != _config.Configuration.EnableUPnP) + if (_lastEnableUpnP != _config.Configuration.EnableUPnP) { ReloadComponents(); } - _lastEnableUPnP = _config.Configuration.EnableUPnP; + _lastEnableUpnP = _config.Configuration.EnableUPnP; } void _config_NamedConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e) @@ -111,7 +111,10 @@ namespace MediaBrowser.Dlna.Main { if (_ssdpHandlerStarted) { - StopSsdpHandler(); + // Sat/ip live tv depends on device discovery, as well as hd homerun detection + // In order to allow this to be disabled, we need a modular way of knowing if there are + // any parts of the system that are dependant on it + // DisposeSsdpHandler(); } return; } @@ -149,19 +152,44 @@ namespace MediaBrowser.Dlna.Main try { _ssdpHandler.Start(); + _ssdpHandlerStarted = true; + + StartDeviceDiscovery(); + } + catch (Exception ex) + { + _logger.ErrorException("Error starting ssdp handlers", ex); + } + } + private void StartDeviceDiscovery() + { + try + { ((DeviceDiscovery)_deviceDiscovery).Start(_ssdpHandler); + } + catch (Exception ex) + { + _logger.ErrorException("Error starting device discovery", ex); + } + } - _ssdpHandlerStarted = true; + private void DisposeDeviceDiscovery() + { + try + { + ((DeviceDiscovery)_deviceDiscovery).Dispose(); } catch (Exception ex) { - _logger.ErrorException("Error starting ssdp handlers", ex); + _logger.ErrorException("Error stopping device discovery", ex); } } - private void StopSsdpHandler() + private void DisposeSsdpHandler() { + DisposeDeviceDiscovery(); + try { ((DeviceDiscovery)_deviceDiscovery).Dispose(); @@ -277,6 +305,7 @@ namespace MediaBrowser.Dlna.Main { DisposeDlnaServer(); DisposePlayToManager(); + DisposeSsdpHandler(); } public void DisposeDlnaServer() diff --git a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs index f402a0a33b..83801b3e76 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs @@ -356,6 +356,11 @@ namespace MediaBrowser.Server.Implementations.FileOrganization private void SaveSmartMatchString(string matchString, Series series, AutoOrganizeOptions options) { + if (string.IsNullOrEmpty(matchString) || matchString.Length < 3) + { + return; + } + SmartMatchInfo info = options.SmartMatchInfos.FirstOrDefault(i => string.Equals(i.ItemName, series.Name, StringComparison.OrdinalIgnoreCase)); if (info == null) diff --git a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs index 0e8a606122..60d515e120 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs @@ -95,7 +95,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization return _repo.Delete(resultId); } - private AutoOrganizeOptions GetAutoOrganizeptions() + private AutoOrganizeOptions GetAutoOrganizeOptions() { return _config.GetAutoOrganizeOptions(); } @@ -112,7 +112,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization var organizer = new EpisodeFileOrganizer(this, _config, _fileSystem, _logger, _libraryManager, _libraryMonitor, _providerManager); - await organizer.OrganizeEpisodeFile(result.OriginalPath, GetAutoOrganizeptions(), true, CancellationToken.None) + await organizer.OrganizeEpisodeFile(result.OriginalPath, GetAutoOrganizeOptions(), true, CancellationToken.None) .ConfigureAwait(false); } @@ -126,7 +126,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization var organizer = new EpisodeFileOrganizer(this, _config, _fileSystem, _logger, _libraryManager, _libraryMonitor, _providerManager); - await organizer.OrganizeWithCorrection(request, GetAutoOrganizeptions(), CancellationToken.None).ConfigureAwait(false); + await organizer.OrganizeWithCorrection(request, GetAutoOrganizeOptions(), CancellationToken.None).ConfigureAwait(false); } public QueryResult GetSmartMatchInfos(FileOrganizationResultQuery query) @@ -136,7 +136,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization throw new ArgumentNullException("query"); } - var options = GetAutoOrganizeptions(); + var options = GetAutoOrganizeOptions(); var items = options.SmartMatchInfos.Skip(query.StartIndex ?? 0).Take(query.Limit ?? Int32.MaxValue).ToArray(); @@ -159,7 +159,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization throw new ArgumentNullException("matchString"); } - var options = GetAutoOrganizeptions(); + var options = GetAutoOrganizeOptions(); SmartMatchInfo info = options.SmartMatchInfos.FirstOrDefault(i => string.Equals(i.ItemName, itemName));