2
0
Эх сурвалжийг харах

update sync folder structure

Luke Pulverenti 10 жил өмнө
parent
commit
eaf70589ae

+ 46 - 22
MediaBrowser.Server.Implementations/Sync/MediaSync.cs

@@ -1,4 +1,5 @@
-using MediaBrowser.Common.IO;
+using System.Globalization;
+using MediaBrowser.Common.IO;
 using MediaBrowser.Common.Progress;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller.Sync;
@@ -142,8 +143,9 @@ namespace MediaBrowser.Server.Implementations.Sync
         {
             var libraryItem = jobItem.Item;
             var internalSyncJobItem = _syncManager.GetJobItem(jobItem.SyncJobItemId);
+            var internalSyncJob = _syncManager.GetJob(jobItem.SyncJobId);
 
-            var localItem = CreateLocalItem(provider, jobItem, target, libraryItem, serverId, serverName, jobItem.OriginalFileName);
+            var localItem = CreateLocalItem(provider, jobItem, internalSyncJob, target, libraryItem, serverId, serverName, jobItem.OriginalFileName);
 
             await _syncManager.ReportSyncJobItemTransferBeginning(internalSyncJobItem.Id);
 
@@ -329,9 +331,9 @@ namespace MediaBrowser.Server.Implementations.Sync
             }
         }
 
-        public LocalItem CreateLocalItem(IServerSyncProvider provider, SyncedItem syncedItem, SyncTarget target, BaseItemDto libraryItem, string serverId, string serverName, string originalFileName)
+        public LocalItem CreateLocalItem(IServerSyncProvider provider, SyncedItem syncedItem, SyncJob job, SyncTarget target, BaseItemDto libraryItem, string serverId, string serverName, string originalFileName)
         {
-            var path = GetDirectoryPath(provider, syncedItem, libraryItem, serverId, serverName);
+            var path = GetDirectoryPath(provider, job, syncedItem, libraryItem, serverName);
             path.Add(GetLocalFileName(provider, libraryItem, originalFileName));
 
             var localPath = provider.GetFullPath(path, target);
@@ -352,29 +354,51 @@ namespace MediaBrowser.Server.Implementations.Sync
             };
         }
 
-        private string GetSyncJobFolderName(SyncedItem syncedItem, IServerSyncProvider provider)
+        private List<string> GetDirectoryPath(IServerSyncProvider provider, SyncJob job, SyncedItem syncedItem, BaseItemDto item, string serverName)
         {
-            var name = syncedItem.SyncJobName + "-" + syncedItem.SyncJobDateCreated
-                .ToLocalTime()
-                .ToString("g")
-                .Replace(" ", "-");
+            var parts = new List<string>
+            {
+                serverName
+            };
 
-            name = GetValidFilename(provider, name);
+            var profileOption = _syncManager.GetProfileOptions(job.TargetId)
+                .FirstOrDefault(i => string.Equals(i.Id, job.Profile, StringComparison.OrdinalIgnoreCase));
 
-            return name;
-        }
+            string name;
 
-        private List<string> GetDirectoryPath(IServerSyncProvider provider, SyncedItem syncedItem, BaseItemDto item, string serverId, string serverName)
-        {
-            var parts = new List<string>
+            if (profileOption != null && !string.IsNullOrWhiteSpace(profileOption.Name))
             {
-                serverName,
-                GetSyncJobFolderName(syncedItem, provider)
-            };
+                name = profileOption.Name;
+
+                if (job.Bitrate.HasValue)
+                {
+                    name += "-" + job.Bitrate.Value.ToString(CultureInfo.InvariantCulture);
+                }
+                else
+                {
+                    var qualityOption = _syncManager.GetQualityOptions(job.TargetId)
+                        .FirstOrDefault(i => string.Equals(i.Id, job.Quality, StringComparison.OrdinalIgnoreCase));
+
+                    if (qualityOption != null && !string.IsNullOrWhiteSpace(qualityOption.Name))
+                    {
+                        name += "-" + qualityOption.Name;
+                    }
+                }
+            }
+            else
+            {
+                name = syncedItem.SyncJobName + "-" + syncedItem.SyncJobDateCreated
+                   .ToLocalTime()
+                   .ToString("g")
+                   .Replace(" ", "-");
+            }
+
+            name = GetValidFilename(provider, name);
+            parts.Add(name);
 
             if (item.IsType("episode"))
             {
-                //parts.Add("TV");
+                parts.Add("TV");
                 if (!string.IsNullOrWhiteSpace(item.SeriesName))
                 {
                     parts.Add(item.SeriesName);
@@ -382,12 +406,12 @@ namespace MediaBrowser.Server.Implementations.Sync
             }
             else if (item.IsVideo)
             {
-                //parts.Add("Videos");
+                parts.Add("Videos");
                 parts.Add(item.Name);
             }
             else if (item.IsAudio)
             {
-                //parts.Add("Music");
+                parts.Add("Music");
 
                 if (!string.IsNullOrWhiteSpace(item.AlbumArtist))
                 {
@@ -401,7 +425,7 @@ namespace MediaBrowser.Server.Implementations.Sync
             }
             else if (string.Equals(item.MediaType, MediaType.Photo, StringComparison.OrdinalIgnoreCase))
             {
-                //parts.Add("Photos");
+                parts.Add("Photos");
 
                 if (!string.IsNullOrWhiteSpace(item.Album))
                 {