diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-10 22:38:31 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-03-10 22:38:31 -0400 |
| commit | 4c5aa11c1d03fda7836ebb851ee35d8330f202f4 (patch) | |
| tree | 136d65170d4dc2b1b356a0a939cd746bd878c4a8 | |
| parent | d0df24d957d3e7d41281a839d190d5ec6e8c50a2 (diff) | |
add filter to SyncedMediaSourceProvider
| -rw-r--r-- | MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs index 3e0df94f5..0422e9791 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs @@ -3,9 +3,11 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Sync; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading; 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); - list.AddRange(localItems.SelectMany(i => i.Item.MediaSources)); + foreach (var localItem in localItems) + { + list.AddRange(GetPlayableMediaSources(localItem)); + } } } } 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; + } } } |
