瀏覽代碼

add network share config

Luke Pulverenti 8 年之前
父節點
當前提交
fdc2826709

+ 26 - 0
MediaBrowser.Api/Library/LibraryStructureService.cs

@@ -121,6 +121,18 @@ namespace MediaBrowser.Api.Library
         public bool RefreshLibrary { get; set; }
     }
 
+    [Route("/Library/VirtualFolders/Paths/Update", "POST")]
+    public class UpdateMediaPath : IReturnVoid
+    {
+        /// <summary>
+        /// Gets or sets the name.
+        /// </summary>
+        /// <value>The name.</value>
+        public string Name { get; set; }
+
+        public MediaPathInfo PathInfo { get; set; }
+    }
+
     [Route("/Library/VirtualFolders/Paths", "DELETE")]
     public class RemoveMediaPath : IReturnVoid
     {
@@ -348,6 +360,20 @@ namespace MediaBrowser.Api.Library
             }
         }
 
+        /// <summary>
+        /// Posts the specified request.
+        /// </summary>
+        /// <param name="request">The request.</param>
+        public void Post(UpdateMediaPath request)
+        {
+            if (string.IsNullOrWhiteSpace(request.Name))
+            {
+                throw new ArgumentNullException("request");
+            }
+
+            _libraryManager.UpdateMediaPath(request.Name, request.PathInfo);
+        }
+
         /// <summary>
         /// Deletes the specified request.
         /// </summary>

+ 1 - 0
MediaBrowser.Controller/Library/ILibraryManager.cs

@@ -559,6 +559,7 @@ namespace MediaBrowser.Controller.Library
         void AddVirtualFolder(string name, string collectionType, LibraryOptions options, bool refreshLibrary);
         void RemoveVirtualFolder(string name, bool refreshLibrary);
         void AddMediaPath(string virtualFolderName, MediaPathInfo path);
+        void UpdateMediaPath(string virtualFolderName, MediaPathInfo path);
         void RemoveMediaPath(string virtualFolderName, string path);
 
         QueryResult<Tuple<BaseItem, ItemCounts>> GetGenres(InternalItemsQuery query);

+ 4 - 1
MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs

@@ -43,7 +43,10 @@ namespace MediaBrowser.Server.Implementations.IO
 
             // WMC temp recording directories that will constantly be written to
             "TempRec",
-            "TempSBE"
+            "TempSBE",
+            "@eaDir",
+            "eaDir",
+            "#recycle"
         };
 
         private readonly IReadOnlyList<string> _alwaysIgnoreSubstrings = new List<string>

+ 38 - 3
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -2858,6 +2858,32 @@ namespace MediaBrowser.Server.Implementations.Library
             }
         }
 
+        public void UpdateMediaPath(string virtualFolderName, MediaPathInfo pathInfo)
+        {
+            if (pathInfo == null)
+            {
+                throw new ArgumentNullException("path");
+            }
+
+            var rootFolderPath = ConfigurationManager.ApplicationPaths.DefaultUserViewsPath;
+            var virtualFolderPath = Path.Combine(rootFolderPath, virtualFolderName);
+
+            var libraryOptions = CollectionFolder.GetLibraryOptions(virtualFolderPath);
+
+            var list = libraryOptions.PathInfos.ToList();
+            foreach (var originalPathInfo in list)
+            {
+                if (string.Equals(pathInfo.Path, originalPathInfo.Path, StringComparison.Ordinal))
+                {
+                    originalPathInfo.NetworkPath = pathInfo.NetworkPath;
+                    break;
+                }
+            }
+            libraryOptions.PathInfos = list.ToArray();
+
+            CollectionFolder.SaveLibraryOptions(virtualFolderPath, libraryOptions);
+        }
+
         public void RemoveVirtualFolder(string name, bool refreshLibrary)
         {
             if (string.IsNullOrWhiteSpace(name))
@@ -2938,19 +2964,28 @@ namespace MediaBrowser.Server.Implementations.Library
             }
 
             var rootFolderPath = ConfigurationManager.ApplicationPaths.DefaultUserViewsPath;
-            var path = Path.Combine(rootFolderPath, virtualFolderName);
+            var virtualFolderPath = Path.Combine(rootFolderPath, virtualFolderName);
 
-            if (!_fileSystem.DirectoryExists(path))
+            if (!_fileSystem.DirectoryExists(virtualFolderPath))
             {
                 throw new DirectoryNotFoundException(string.Format("The media collection {0} does not exist", virtualFolderName));
             }
 
-            var shortcut = Directory.EnumerateFiles(path, ShortcutFileSearch, SearchOption.AllDirectories).FirstOrDefault(f => _fileSystem.ResolveShortcut(f).Equals(mediaPath, StringComparison.OrdinalIgnoreCase));
+            var shortcut = Directory.EnumerateFiles(virtualFolderPath, ShortcutFileSearch, SearchOption.AllDirectories).FirstOrDefault(f => _fileSystem.ResolveShortcut(f).Equals(mediaPath, StringComparison.OrdinalIgnoreCase));
 
             if (!string.IsNullOrEmpty(shortcut))
             {
                 _fileSystem.DeleteFile(shortcut);
             }
+
+            var libraryOptions = CollectionFolder.GetLibraryOptions(virtualFolderPath);
+
+            libraryOptions.PathInfos = libraryOptions
+                .PathInfos
+                .Where(i => !string.Equals(i.Path, mediaPath, StringComparison.Ordinal))
+                .ToArray();
+
+            CollectionFolder.SaveLibraryOptions(virtualFolderPath, libraryOptions);
         }
     }
 }

+ 5 - 1
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -699,7 +699,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             item.HomePageUrl = info.HomePageUrl;
 
             item.ProductionYear = info.ProductionYear;
-            item.PremiereDate = info.OriginalAirDate;
+
+            if (!info.IsSeries || info.IsRepeat)
+            {
+                item.PremiereDate = info.OriginalAirDate;
+            }
 
             item.IndexNumber = info.EpisodeNumber;
             item.ParentIndexNumber = info.SeasonNumber;