瀏覽代碼

fixes #595 - Linux/Unix file quantity limitation for ImagesByName/People folder

Luke Pulverenti 11 年之前
父節點
當前提交
73b294b4ce

+ 7 - 1
MediaBrowser.Model/Configuration/ServerConfiguration.cs

@@ -244,7 +244,13 @@ namespace MediaBrowser.Model.Configuration
         /// </summary>
         /// <value>The width of the min movie poster.</value>
         public int MinMoviePosterWidth { get; set; }
-        
+
+        /// <summary>
+        /// Gets or sets a value indicating whether [enable people prefix sub folders].
+        /// </summary>
+        /// <value><c>true</c> if [enable people prefix sub folders]; otherwise, <c>false</c>.</value>
+        public bool EnablePeoplePrefixSubFolders { get; set; }
+
         /// <summary>
         /// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
         /// </summary>

+ 3 - 7
MediaBrowser.Providers/Movies/TmdbPersonProvider.cs

@@ -205,7 +205,7 @@ namespace MediaBrowser.Providers.Movies
             string url = string.Format(@"http://api.themoviedb.org/3/search/person?api_key={1}&query={0}", WebUtility.UrlEncode(person.Name), MovieDbProvider.ApiKey);
             PersonSearchResults searchResult = null;
 
-            using (Stream json = await MovieDbProvider.Current.GetMovieDbResponse(new HttpRequestOptions
+            using (var json = await MovieDbProvider.Current.GetMovieDbResponse(new HttpRequestOptions
             {
                 Url = url,
                 CancellationToken = cancellationToken,
@@ -231,15 +231,11 @@ namespace MediaBrowser.Providers.Movies
         {
             var personDataPath = GetPersonDataPath(ConfigurationManager.ApplicationPaths, id);
 
-            Directory.CreateDirectory(personDataPath);
-
-            var files = Directory.EnumerateFiles(personDataPath, "*.json", SearchOption.TopDirectoryOnly)
-                .Select(Path.GetFileName)
-                .ToList();
+            var file = Path.Combine(personDataPath, DataFileName);
 
             // Only download if not already there
             // The prescan task will take care of updates so we don't need to re-download here
-            if (!files.Contains(DataFileName, StringComparer.OrdinalIgnoreCase))
+            if (!File.Exists(file))
             {
                 await DownloadPersonInfo(id, cancellationToken).ConfigureAwait(false);
             }

+ 15 - 1
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -703,7 +703,21 @@ namespace MediaBrowser.Server.Implementations.Library
 
             var validFilename = FileSystem.GetValidFilename(name);
 
-            var key = Path.Combine(path, validFilename);
+            string subFolderPrefix = null;
+
+            if (typeof(T) == typeof(Person) && ConfigurationManager.Configuration.EnablePeoplePrefixSubFolders)
+            {
+                subFolderPrefix = validFilename.Substring(0, 1);
+
+                if (string.IsNullOrWhiteSpace(subFolderPrefix))
+                {
+                    subFolderPrefix = "0";
+                }
+            }
+
+            var key = string.IsNullOrEmpty(subFolderPrefix) ?
+                Path.Combine(path, validFilename) :
+                Path.Combine(path, subFolderPrefix, validFilename);
 
             BaseItem obj;