From 4390e2f7108f24f89a1bf7ef9f6f7c9c57b4f221 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 23 Apr 2013 15:17:21 -0400 Subject: #35 - Make IBN path configurable --- .../Library/LibraryManager.cs | 31 ++++++++++++++-------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library/LibraryManager.cs') diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 315abd49d..132dca4e2 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -212,9 +212,11 @@ namespace MediaBrowser.Server.Implementations.Library private bool _internetProvidersEnabled; private bool _peopleImageFetchingEnabled; + private string _itemsByNamePath; private void RecordConfigurationValues(ServerConfiguration configuration) { + _itemsByNamePath = ConfigurationManager.ApplicationPaths.ItemsByNamePath; _internetProvidersEnabled = configuration.EnableInternetProviders; _peopleImageFetchingEnabled = configuration.InternetProviderExcludeTypes == null || !configuration.InternetProviderExcludeTypes.Contains(typeof(Person).Name, StringComparer.OrdinalIgnoreCase); } @@ -239,6 +241,13 @@ namespace MediaBrowser.Server.Implementations.Library refreshPeopleAfterUpdate = newConfigurationFetchesPeopleImages && !_peopleImageFetchingEnabled; } + var ibnPathChanged = !string.Equals(_itemsByNamePath, ConfigurationManager.ApplicationPaths.ItemsByNamePath); + + if (ibnPathChanged) + { + _itemsByName.Clear(); + } + RecordConfigurationValues(config); Task.Run(() => @@ -528,7 +537,7 @@ namespace MediaBrowser.Server.Implementations.Library /// Task{Person}. private Task GetPerson(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool forceCreation = false) { - return GetImagesByNameItem(ConfigurationManager.ApplicationPaths.PeoplePath, name, cancellationToken, allowSlowProviders, forceCreation); + return GetItemByName(ConfigurationManager.ApplicationPaths.PeoplePath, name, cancellationToken, allowSlowProviders, forceCreation); } /// @@ -539,7 +548,7 @@ namespace MediaBrowser.Server.Implementations.Library /// Task{Studio}. public Task GetStudio(string name, bool allowSlowProviders = false) { - return GetImagesByNameItem(ConfigurationManager.ApplicationPaths.StudioPath, name, CancellationToken.None, allowSlowProviders); + return GetItemByName(ConfigurationManager.ApplicationPaths.StudioPath, name, CancellationToken.None, allowSlowProviders); } /// @@ -550,7 +559,7 @@ namespace MediaBrowser.Server.Implementations.Library /// Task{Genre}. public Task GetGenre(string name, bool allowSlowProviders = false) { - return GetImagesByNameItem(ConfigurationManager.ApplicationPaths.GenrePath, name, CancellationToken.None, allowSlowProviders); + return GetItemByName(ConfigurationManager.ApplicationPaths.GenrePath, name, CancellationToken.None, allowSlowProviders); } /// @@ -574,7 +583,7 @@ namespace MediaBrowser.Server.Implementations.Library /// Task{Artist}. private Task GetArtist(string name, CancellationToken cancellationToken, bool allowSlowProviders = false, bool forceCreation = false) { - return GetImagesByNameItem(ConfigurationManager.ApplicationPaths.ArtistsPath, name, cancellationToken, allowSlowProviders, forceCreation); + return GetItemByName(ConfigurationManager.ApplicationPaths.ArtistsPath, name, cancellationToken, allowSlowProviders, forceCreation); } /// @@ -596,13 +605,13 @@ namespace MediaBrowser.Server.Implementations.Library throw new ArgumentOutOfRangeException(); } - return GetImagesByNameItem(ConfigurationManager.ApplicationPaths.YearPath, value.ToString(UsCulture), CancellationToken.None, allowSlowProviders); + return GetItemByName(ConfigurationManager.ApplicationPaths.YearPath, value.ToString(UsCulture), CancellationToken.None, allowSlowProviders); } /// /// The images by name item cache /// - private readonly ConcurrentDictionary _imagesByNameItemCache = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); + private readonly ConcurrentDictionary _itemsByName = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase); /// /// Generically retrieves an IBN item @@ -616,7 +625,7 @@ namespace MediaBrowser.Server.Implementations.Library /// Task{``0}. /// /// - private async Task GetImagesByNameItem(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true, bool forceCreation = false) + private async Task GetItemByName(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true, bool forceCreation = false) where T : BaseItem, new() { if (string.IsNullOrEmpty(path)) @@ -633,11 +642,11 @@ namespace MediaBrowser.Server.Implementations.Library BaseItem obj; - if (forceCreation || !_imagesByNameItemCache.TryGetValue(key, out obj)) + if (forceCreation || !_itemsByName.TryGetValue(key, out obj)) { - obj = await CreateImagesByNameItem(path, name, cancellationToken, allowSlowProviders).ConfigureAwait(false); + obj = await CreateItemByName(path, name, cancellationToken, allowSlowProviders).ConfigureAwait(false); - _imagesByNameItemCache.AddOrUpdate(key, obj, (keyName, oldValue) => obj); + _itemsByName.AddOrUpdate(key, obj, (keyName, oldValue) => obj); } return obj as T; @@ -653,7 +662,7 @@ namespace MediaBrowser.Server.Implementations.Library /// if set to true [allow slow providers]. /// Task{``0}. /// Path not created: + path - private async Task CreateImagesByNameItem(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true) + private async Task CreateItemByName(string path, string name, CancellationToken cancellationToken, bool allowSlowProviders = true) where T : BaseItem, new() { cancellationToken.ThrowIfCancellationRequested(); -- cgit v1.2.3