瀏覽代碼

add filter to SyncedMediaSourceProvider

Luke Pulverenti 10 年之前
父節點
當前提交
4c5aa11c1d
共有 1 個文件被更改,包括 25 次插入1 次删除
  1. 25 1
      MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs

+ 25 - 1
MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs

@@ -3,9 +3,11 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Sync;
 using MediaBrowser.Controller.Sync;
 using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.MediaInfo;
 using MediaBrowser.Model.Sync;
 using MediaBrowser.Model.Sync;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Linq;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
@@ -54,12 +56,34 @@ namespace MediaBrowser.Server.Implementations.Sync
 
 
                         var localItems = await dataProvider.GetCachedItems(syncTarget, serverId, item.Id.ToString("N")).ConfigureAwait(false);
                         var localItems = await dataProvider.GetCachedItems(syncTarget, serverId, item.Id.ToString("N")).ConfigureAwait(false);
 
 
-                        list.AddRange(localItems.SelectMany(i => i.Item.MediaSources));
+                        foreach (var localItem in localItems)
+                        {
+                            list.AddRange(GetPlayableMediaSources(localItem));
+                        }
                     }
                     }
                 }
                 }
             }
             }
 
 
             return list;
             return list;
         }
         }
+
+        private IEnumerable<MediaSourceInfo> GetPlayableMediaSources(LocalItem item)
+        {
+            return item.Item.MediaSources
+                .Where(IsMediaSourcePlayable);
+        }
+
+        private bool IsMediaSourcePlayable(MediaSourceInfo mediaSource)
+        {
+            if (mediaSource.Protocol == MediaProtocol.File)
+            {
+                if (!File.Exists(mediaSource.Path))
+                {
+                    return false;
+                }
+            }
+
+            return true;
+        }
     }
     }
 }
 }