aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs12
-rw-r--r--MediaBrowser.Api/LibraryService.cs14
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs10
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs45
-rw-r--r--MediaBrowser.Controller/Entities/IHasImages.cs6
-rw-r--r--MediaBrowser.Controller/Entities/TV/Episode.cs4
-rw-r--r--MediaBrowser.Controller/Entities/UserRootFolder.cs18
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs13
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs13
-rw-r--r--MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs12
-rw-r--r--MediaBrowser.Providers/All/LocalImageProvider.cs7
-rw-r--r--MediaBrowser.Providers/BaseXmlProvider.cs7
-rw-r--r--MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs2
-rw-r--r--MediaBrowser.Providers/Manager/ImageSaver.cs8
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs2
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs2
-rw-r--r--MediaBrowser.Providers/Savers/AlbumXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/ArtistXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/ChannelXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/FolderXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/GameXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/MovieXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/PersonXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/SeasonXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/Savers/SeriesXmlSaver.cs3
-rw-r--r--MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs25
-rw-r--r--MediaBrowser.Providers/TV/EpisodeXmlProvider.cs10
-rw-r--r--MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs5
-rw-r--r--MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs17
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs6
34 files changed, 88 insertions, 187 deletions
diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs
index 17520ba1c..6ffa10191 100644
--- a/MediaBrowser.Api/Library/LibraryService.cs
+++ b/MediaBrowser.Api/Library/LibraryService.cs
@@ -69,17 +69,7 @@ namespace MediaBrowser.Api.Library
public object Get(GetPhyscialPaths request)
{
var result = _libraryManager.RootFolder.Children
- .SelectMany(c =>
- {
- var locationType = c.LocationType;
-
- if (locationType != LocationType.Remote && locationType != LocationType.Virtual)
- {
- return c.PhysicalLocations;
- }
-
- return new List<string>();
- })
+ .SelectMany(c => c.PhysicalLocations)
.ToList();
return ToOptimizedSerializedResultUsingCache(result);
diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs
index a7a58dbfb..aeb795a78 100644
--- a/MediaBrowser.Api/LibraryService.cs
+++ b/MediaBrowser.Api/LibraryService.cs
@@ -243,8 +243,8 @@ namespace MediaBrowser.Api
public object Get(GetFile request)
{
var item = _dtoService.GetItemByDtoId(request.Id);
-
- if (item.LocationType == LocationType.Remote || item.LocationType == LocationType.Virtual)
+ var locationType = item.LocationType;
+ if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
{
throw new ArgumentException("This command cannot be used for remote or virtual items.");
}
@@ -331,8 +331,7 @@ namespace MediaBrowser.Api
{
if (item.Parent is AggregateFolder)
{
- return user.RootFolder.GetChildren(user, true).FirstOrDefault(i => i.LocationType == LocationType.FileSystem &&
- i.PhysicalLocations.Contains(item.Path));
+ return user.RootFolder.GetChildren(user, true).FirstOrDefault(i => i.PhysicalLocations.Contains(item.Path));
}
return item;
@@ -442,12 +441,9 @@ namespace MediaBrowser.Api
var parent = item.Parent;
- if (item.LocationType == LocationType.Offline)
- {
- throw new InvalidOperationException(string.Format("{0} is currently offline.", item.Name));
- }
+ var locationType = item.LocationType;
- if (item.LocationType == LocationType.FileSystem)
+ if (locationType == LocationType.FileSystem || locationType == LocationType.Offline)
{
foreach (var path in item.GetDeletePaths().ToList())
{
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 38f40ea48..8dcf08642 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -157,6 +157,16 @@ namespace MediaBrowser.Controller.Entities
}
}
+ public virtual bool SupportsLocalMetadata
+ {
+ get
+ {
+ var locationType = LocationType;
+
+ return locationType == LocationType.FileSystem || locationType == LocationType.Offline;
+ }
+ }
+
/// <summary>
/// This is just a helper for convenience
/// </summary>
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index f0b044d43..310ddf64c 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -1052,50 +1052,17 @@ namespace MediaBrowser.Controller.Entities
throw new ArgumentNullException();
}
- try
+ if (string.Equals(Path, path, StringComparison.OrdinalIgnoreCase))
{
- var locationType = LocationType;
-
- if (locationType == LocationType.Remote && string.Equals(Path, path, StringComparison.OrdinalIgnoreCase))
- {
- return this;
- }
-
- if (locationType != LocationType.Virtual && PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
- {
- return this;
- }
- }
- catch (IOException ex)
- {
- Logger.ErrorException("Error getting ResolveArgs for {0}", ex, Path);
+ return this;
}
- return RecursiveChildren.Where(i => i.LocationType != LocationType.Virtual).FirstOrDefault(i =>
+ if (PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
{
- try
- {
- if (string.Equals(i.Path, path, StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
-
- if (i.LocationType != LocationType.Remote)
- {
- if (i.PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
- {
- return true;
- }
- }
+ return this;
+ }
- return false;
- }
- catch (IOException ex)
- {
- Logger.ErrorException("Error getting ResolveArgs for {0}", ex, Path);
- return false;
- }
- });
+ return RecursiveChildren.FirstOrDefault(i => string.Equals(i.Path, path, StringComparison.OrdinalIgnoreCase) || i.PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase));
}
public override bool IsPlayed(User user)
diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs
index eee169363..d53eba11a 100644
--- a/MediaBrowser.Controller/Entities/IHasImages.cs
+++ b/MediaBrowser.Controller/Entities/IHasImages.cs
@@ -136,6 +136,12 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
/// <returns><c>true</c> if [is save local metadata enabled]; otherwise, <c>false</c>.</returns>
bool IsSaveLocalMetadataEnabled();
+
+ /// <summary>
+ /// Gets a value indicating whether [supports local metadata].
+ /// </summary>
+ /// <value><c>true</c> if [supports local metadata]; otherwise, <c>false</c>.</value>
+ bool SupportsLocalMetadata { get; }
}
public static class HasImagesExtensions
diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs
index 39c11569a..daff3dd6c 100644
--- a/MediaBrowser.Controller/Entities/TV/Episode.cs
+++ b/MediaBrowser.Controller/Entities/TV/Episode.cs
@@ -185,7 +185,7 @@ namespace MediaBrowser.Controller.Entities.TV
{
get
{
- return LocationType == Model.Entities.LocationType.Virtual && PremiereDate.HasValue && PremiereDate.Value < DateTime.UtcNow;
+ return LocationType == LocationType.Virtual && PremiereDate.HasValue && PremiereDate.Value < DateTime.UtcNow;
}
}
@@ -198,7 +198,7 @@ namespace MediaBrowser.Controller.Entities.TV
[IgnoreDataMember]
public bool IsVirtualUnaired
{
- get { return LocationType == Model.Entities.LocationType.Virtual && IsUnaired; }
+ get { return LocationType == LocationType.Virtual && IsUnaired; }
}
[IgnoreDataMember]
diff --git a/MediaBrowser.Controller/Entities/UserRootFolder.cs b/MediaBrowser.Controller/Entities/UserRootFolder.cs
index 9afcdfe67..dc3d4c384 100644
--- a/MediaBrowser.Controller/Entities/UserRootFolder.cs
+++ b/MediaBrowser.Controller/Entities/UserRootFolder.cs
@@ -1,6 +1,7 @@
-using System.Collections.Generic;
-using System.Linq;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
+using System.Collections.Generic;
+using System.Linq;
namespace MediaBrowser.Controller.Entities
{
@@ -18,5 +19,18 @@ namespace MediaBrowser.Controller.Entities
{
return base.GetNonCachedChildren(directoryService).Concat(LibraryManager.RootFolder.VirtualChildren);
}
+
+ public override ItemUpdateType BeforeMetadataRefresh()
+ {
+ var updateType = base.BeforeMetadataRefresh();
+
+ if (string.Equals("default", Name, System.StringComparison.OrdinalIgnoreCase))
+ {
+ Name = "Default Media Library";
+ updateType = updateType | ItemUpdateType.MetadataEdit;
+ }
+
+ return updateType;
+ }
}
}
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
index f093ef7cb..81515a2e9 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
@@ -26,19 +26,6 @@ namespace MediaBrowser.Controller.LiveTv
public string ServiceName { get; set; }
/// <summary>
- /// Returns the folder containing the item.
- /// If the item is a folder, it returns the folder itself
- /// </summary>
- /// <value>The containing folder path.</value>
- public override string ContainingFolderPath
- {
- get
- {
- return Path;
- }
- }
-
- /// <summary>
/// Gets a value indicating whether this instance is owned item.
/// </summary>
/// <value><c>true</c> if this instance is owned item; otherwise, <c>false</c>.</value>
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
index aad760cc9..3f8d67e3b 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
@@ -47,19 +47,6 @@ namespace MediaBrowser.Controller.LiveTv
}
/// <summary>
- /// Returns the folder containing the item.
- /// If the item is a folder, it returns the folder itself
- /// </summary>
- /// <value>The containing folder path.</value>
- public override string ContainingFolderPath
- {
- get
- {
- return Path;
- }
- }
-
- /// <summary>
/// Gets a value indicating whether this instance is owned item.
/// </summary>
/// <value><c>true</c> if this instance is owned item; otherwise, <c>false</c>.</value>
diff --git a/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs b/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs
index c264b0c58..edaa5edaf 100644
--- a/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs
+++ b/MediaBrowser.Providers/All/InternalMetadataFolderImageProvider.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
using System.Collections.Generic;
using System.IO;
@@ -35,16 +34,7 @@ namespace MediaBrowser.Providers.All
return true;
}
- var locationType = item.LocationType;
-
- if (locationType == LocationType.FileSystem ||
- locationType == LocationType.Offline)
- {
- return false;
- }
-
- // These always save locally
- if (item is IItemByName || item is User)
+ if (item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/All/LocalImageProvider.cs b/MediaBrowser.Providers/All/LocalImageProvider.cs
index 983600397..354b081cf 100644
--- a/MediaBrowser.Providers/All/LocalImageProvider.cs
+++ b/MediaBrowser.Providers/All/LocalImageProvider.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using System;
@@ -26,9 +27,7 @@ namespace MediaBrowser.Providers.All
public bool Supports(IHasImages item)
{
- var locationType = item.LocationType;
-
- if (locationType == LocationType.FileSystem)
+ if (item.SupportsLocalMetadata)
{
// Episode has it's own provider
if (item.IsOwnedItem || item is Episode || item is Audio)
@@ -39,7 +38,7 @@ namespace MediaBrowser.Providers.All
return true;
}
- if (locationType == LocationType.Virtual)
+ if (item.LocationType == LocationType.Virtual)
{
var season = item as Season;
diff --git a/MediaBrowser.Providers/BaseXmlProvider.cs b/MediaBrowser.Providers/BaseXmlProvider.cs
index b80f27259..eb3be0eeb 100644
--- a/MediaBrowser.Providers/BaseXmlProvider.cs
+++ b/MediaBrowser.Providers/BaseXmlProvider.cs
@@ -60,9 +60,14 @@ namespace MediaBrowser.Providers
protected abstract FileInfo GetXmlFile(ItemInfo info);
+ protected virtual FileInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ {
+ return GetXmlFile(info);
+ }
+
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date)
{
- var file = GetXmlFile(new ItemInfo { IsInMixedFolder = item.IsInMixedFolder, Path = item.Path });
+ var file = GetXmlFile(new ItemInfo { IsInMixedFolder = item.IsInMixedFolder, Path = item.Path }, directoryService);
if (file == null)
{
diff --git a/MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs b/MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs
index 04fe042c8..fa5946bd5 100644
--- a/MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs
+++ b/MediaBrowser.Providers/Folders/CollectionFolderImageProvider.cs
@@ -15,7 +15,7 @@ namespace MediaBrowser.Providers.Folders
public bool Supports(IHasImages item)
{
- return item is CollectionFolder && item.LocationType == LocationType.FileSystem;
+ return item is CollectionFolder && item.SupportsLocalMetadata;
}
public int Order
diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs
index c9425c5e5..bac90ae37 100644
--- a/MediaBrowser.Providers/Manager/ImageSaver.cs
+++ b/MediaBrowser.Providers/Manager/ImageSaver.cs
@@ -93,13 +93,9 @@ namespace MediaBrowser.Providers.Manager
{
var series = season.Series;
- if (series != null)
+ if (series != null && series.SupportsLocalMetadata)
{
- var seriesLocationType = series.LocationType;
- if (seriesLocationType == LocationType.FileSystem || seriesLocationType == LocationType.Offline)
- {
- saveLocally = true;
- }
+ saveLocally = true;
}
}
}
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 604953909..a7af795a1 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -351,7 +351,7 @@ namespace MediaBrowser.Providers.Manager
return false;
}
- if (item.LocationType != LocationType.FileSystem && provider is ILocalMetadataProvider)
+ if (!item.SupportsLocalMetadata && provider is ILocalMetadataProvider)
{
return false;
}
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
index 951996a9f..7ac48655a 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
@@ -148,7 +148,7 @@ namespace MediaBrowser.Providers.MediaInfo
return true;
}
- if (item.LocationType == LocationType.FileSystem)
+ if (item.SupportsLocalMetadata)
{
var video = item as Video;
diff --git a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs
index 91d01a2c6..ef7d9b122 100644
--- a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs
@@ -27,8 +27,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs b/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs
index a19a2cc4a..93eafd123 100644
--- a/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs
@@ -27,8 +27,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs b/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs
index 59e112b04..9c3ceac7e 100644
--- a/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs
@@ -27,8 +27,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/ChannelXmlSaver.cs b/MediaBrowser.Providers/Savers/ChannelXmlSaver.cs
index 25aea69c4..52242cb53 100644
--- a/MediaBrowser.Providers/Savers/ChannelXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/ChannelXmlSaver.cs
@@ -22,8 +22,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs
index 124a29571..12efda85a 100644
--- a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs
@@ -31,8 +31,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/FolderXmlSaver.cs b/MediaBrowser.Providers/Savers/FolderXmlSaver.cs
index f37658c64..481189ee3 100644
--- a/MediaBrowser.Providers/Savers/FolderXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/FolderXmlSaver.cs
@@ -29,8 +29,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs b/MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs
index 3c949314d..78098f50e 100644
--- a/MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs
@@ -27,8 +27,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/GameXmlSaver.cs b/MediaBrowser.Providers/Savers/GameXmlSaver.cs
index 3758a3c7b..ccb53a017 100644
--- a/MediaBrowser.Providers/Savers/GameXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/GameXmlSaver.cs
@@ -31,8 +31,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/MovieXmlSaver.cs b/MediaBrowser.Providers/Savers/MovieXmlSaver.cs
index 2b5fed41c..a098c8160 100644
--- a/MediaBrowser.Providers/Savers/MovieXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/MovieXmlSaver.cs
@@ -41,8 +41,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/PersonXmlSaver.cs b/MediaBrowser.Providers/Savers/PersonXmlSaver.cs
index 10f75d591..b612f9974 100644
--- a/MediaBrowser.Providers/Savers/PersonXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/PersonXmlSaver.cs
@@ -31,8 +31,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs b/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs
index de3d1b68e..3e59ff34c 100644
--- a/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs
@@ -27,8 +27,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs b/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs
index 5d947f8c5..52f5a521b 100644
--- a/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs
@@ -28,8 +28,7 @@ namespace MediaBrowser.Providers.Savers
/// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
{
- var locationType = item.LocationType;
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
+ if (!item.SupportsLocalMetadata)
{
return false;
}
diff --git a/MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs b/MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs
index 4f806d834..1ec0e0f48 100644
--- a/MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs
+++ b/MediaBrowser.Providers/TV/EpisodeLocalImageProvider.cs
@@ -18,7 +18,7 @@ namespace MediaBrowser.Providers.TV
public bool Supports(IHasImages item)
{
- return item is Episode && item.LocationType == LocationType.FileSystem;
+ return item is Episode && item.SupportsLocalMetadata;
}
public List<LocalImageInfo> GetImages(IHasImages item, IDirectoryService directoryService)
@@ -77,28 +77,5 @@ namespace MediaBrowser.Providers.TV
})
.ToList();
}
-
- private List<LocalImageInfo> GetFilesFromMetadataFolder(string filenameWithoutExtension, IEnumerable<FileInfo> metadataFiles)
- {
- return metadataFiles
- .Where(i =>
- {
- if (BaseItem.SupportedImageExtensions.Contains(i.Extension))
- {
- if (string.Equals(filenameWithoutExtension, Path.GetFileNameWithoutExtension(i.Name), StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
- }
-
- return false;
- })
- .Select(i => new LocalImageInfo
- {
- FileInfo = i,
- Type = ImageType.Primary
- })
- .ToList();
- }
}
}
diff --git a/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs b/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs
index 18330e80f..0f4ad1485 100644
--- a/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs
+++ b/MediaBrowser.Providers/TV/EpisodeXmlProvider.cs
@@ -30,5 +30,15 @@ namespace MediaBrowser.Providers.TV
return new FileInfo(metadataFile);
}
+
+ protected override FileInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService)
+ {
+ var metadataPath = Path.GetDirectoryName(info.Path);
+ metadataPath = Path.Combine(metadataPath, "metadata");
+
+ var metadataFile = Path.Combine(metadataPath, Path.ChangeExtension(Path.GetFileName(info.Path), ".xml"));
+
+ return directoryService.GetFile(metadataFile);
+ }
}
}
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
index 7dacfacc2..a91033839 100644
--- a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
+++ b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
@@ -273,8 +273,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
{
if (item.LocationType == LocationType.FileSystem)
{
- return collections.Where(i => i.LocationType == LocationType.FileSystem &&
- i.PhysicalLocations.Contains(item.Path)).Cast<T>();
+ return collections.Where(i => i.PhysicalLocations.Contains(item.Path)).Cast<T>();
}
}
@@ -283,7 +282,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
{
if (item.Id == user.RootFolder.Id)
{
- return new T[] { item };
+ return new[] { item };
}
return new T[] { };
diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
index f1f9048a9..8634919fc 100644
--- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
+++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
@@ -161,7 +161,6 @@ namespace MediaBrowser.Server.Implementations.IO
.RootFolder
.Children
.OfType<Folder>()
- .Where(i => i.LocationType != LocationType.Remote && i.LocationType != LocationType.Virtual)
.SelectMany(f => f.PhysicalLocations)
.Distinct(StringComparer.OrdinalIgnoreCase)
.OrderBy(i => i)
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 92d7a4a90..d4da9dbe7 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -1399,22 +1399,7 @@ namespace MediaBrowser.Server.Implementations.Library
.Distinct()
.SelectMany(i => i.Children)
.OfType<CollectionFolder>()
- .Where(i =>
- {
- var locationType = i.LocationType;
-
- if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
- {
- return false;
- }
-
- if (string.Equals(i.Path, item.Path, StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
-
- return i.PhysicalLocations.Contains(item.Path);
- })
+ .Where(i => string.Equals(i.Path, item.Path, StringComparison.OrdinalIgnoreCase) || i.PhysicalLocations.Contains(item.Path))
.Select(i => i.CollectionType)
.Where(i => !string.IsNullOrEmpty(i))
.Distinct()
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index fd78d1aaa..09a442966 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -615,13 +615,9 @@ namespace MediaBrowser.Server.Implementations.Session
}
var items = command.ItemIds.Select(i => _libraryManager.GetItemById(new Guid(i)))
+ .Where(i => i.LocationType != LocationType.Virtual)
.ToList();
- if (items.Any(i => i.LocationType == LocationType.Virtual))
- {
- throw new ArgumentException("Virtual items are not playable.");
- }
-
if (command.PlayCommand != PlayCommand.PlayNow)
{
if (items.Any(i => !session.QueueableMediaTypes.Contains(i.MediaType, StringComparer.OrdinalIgnoreCase)))