From 56f6b0335ce40aeab275f1038b96a8ecc642f18f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 2 Dec 2014 22:13:03 -0500 Subject: [PATCH] updated nuget --- MediaBrowser.Api/ItemLookupService.cs | 13 - MediaBrowser.Api/Movies/TrailersService.cs | 2 +- MediaBrowser.Api/PackageService.cs | 5 +- .../Networking/BaseNetworkManager.cs | 18 +- MediaBrowser.Controller/Entities/BaseItem.cs | 53 +++- MediaBrowser.Controller/Entities/Folder.cs | 42 +-- MediaBrowser.Controller/Entities/Trailer.cs | 1 + MediaBrowser.Controller/Entities/UserView.cs | 3 +- MediaBrowser.Controller/Entities/Video.cs | 254 +++++------------- .../Library/ILibraryManager.cs | 13 +- .../MediaBrowser.LocalMetadata.csproj | 1 - .../Providers/TrailerXmlProvider.cs | 37 --- .../ApiClient/ConnectionMode.cs | 3 +- MediaBrowser.Model/ApiClient/IApiClient.cs | 2 +- .../ApiClient/ServerCredentials.cs | 10 +- .../ApiClient/ServerDiscoveryInfo.cs | 5 + MediaBrowser.Model/ApiClient/ServerInfo.cs | 21 +- MediaBrowser.Model/Dto/BaseItemDto.cs | 5 - MediaBrowser.Model/Querying/ItemFields.cs | 5 - MediaBrowser.Model/Querying/ItemQuery.cs | 23 +- .../Querying/ItemsByNameQuery.cs | 5 +- .../Querying/LatestItemsQuery.cs | 9 +- MediaBrowser.Model/Querying/NextUpQuery.cs | 9 +- .../Querying/UpcomingEpisodesQuery.cs | 11 +- .../Manager/ProviderManager.cs | 1 - .../MediaBrowser.Providers.csproj | 1 - .../MediaInfo/FFProbeProvider.cs | 6 - .../Movies/FanartMovieImageProvider.cs | 7 - .../Movies/MovieDbImageProvider.cs | 7 - .../Movies/MovieDbTrailerProvider.cs | 7 +- .../Movies/MovieExternalIds.cs | 6 +- .../Movies/MovieUpdatesPrescanTask.cs | 2 +- .../Movies/TrailerMetadataService.cs | 34 --- .../Omdb/OmdbImageProvider.cs | 2 +- .../Omdb/OmdbItemProvider.cs | 14 +- .../Dto/DtoService.cs | 5 +- .../Intros/DefaultIntroProvider.cs | 11 +- .../Library/LibraryManager.cs | 150 +++++------ .../Library/Resolvers/BaseVideoResolver.cs | 160 ++++++++--- .../Library/Resolvers/LocalTrailerResolver.cs | 61 ----- .../Library/Resolvers/Movies/MovieResolver.cs | 101 +++---- .../Library/Resolvers/TV/EpisodeResolver.cs | 34 +-- .../Library/Resolvers/VideoResolver.cs | 6 + ...MediaBrowser.Server.Implementations.csproj | 3 +- .../Sync/SyncManager.cs | 2 +- .../packages.config | 2 +- .../ApplicationHost.cs | 7 +- .../Providers/MovieNfoProvider.cs | 9 - Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 52 files changed, 476 insertions(+), 724 deletions(-) delete mode 100644 MediaBrowser.LocalMetadata/Providers/TrailerXmlProvider.cs delete mode 100644 MediaBrowser.Providers/Movies/TrailerMetadataService.cs delete mode 100644 MediaBrowser.Server.Implementations/Library/Resolvers/LocalTrailerResolver.cs diff --git a/MediaBrowser.Api/ItemLookupService.cs b/MediaBrowser.Api/ItemLookupService.cs index b19d6c6549..507d569708 100644 --- a/MediaBrowser.Api/ItemLookupService.cs +++ b/MediaBrowser.Api/ItemLookupService.cs @@ -37,12 +37,6 @@ namespace MediaBrowser.Api { } - [Route("/Items/RemoteSearch/Trailer", "POST")] - [Authenticated] - public class GetTrailerRemoteSearchResults : RemoteSearchQuery, IReturn> - { - } - [Route("/Items/RemoteSearch/AdultVideo", "POST")] [Authenticated] public class GetAdultVideoRemoteSearchResults : RemoteSearchQuery, IReturn> @@ -162,13 +156,6 @@ namespace MediaBrowser.Api return ToOptimizedResult(result); } - public object Post(GetTrailerRemoteSearchResults request) - { - var result = _providerManager.GetRemoteSearchResults(request, CancellationToken.None).Result; - - return ToOptimizedResult(result); - } - public object Post(GetMusicAlbumRemoteSearchResults request) { var result = _providerManager.GetRemoteSearchResults(request, CancellationToken.None).Result; diff --git a/MediaBrowser.Api/Movies/TrailersService.cs b/MediaBrowser.Api/Movies/TrailersService.cs index a6024d4610..8e1704af73 100644 --- a/MediaBrowser.Api/Movies/TrailersService.cs +++ b/MediaBrowser.Api/Movies/TrailersService.cs @@ -92,7 +92,7 @@ namespace MediaBrowser.Api.Movies Logger, // Strip out secondary versions - request, item => (item is Movie || item is Trailer) && !((Video)item).PrimaryVersionId.HasValue, + request, item => (item is Movie) && !((Video)item).PrimaryVersionId.HasValue, SimilarItemsHelper.GetSimiliarityScore); diff --git a/MediaBrowser.Api/PackageService.cs b/MediaBrowser.Api/PackageService.cs index e24fa4964b..136969b170 100644 --- a/MediaBrowser.Api/PackageService.cs +++ b/MediaBrowser.Api/PackageService.cs @@ -173,9 +173,10 @@ namespace MediaBrowser.Api public object Get(GetPackage request) { var packages = _installationManager.GetAvailablePackages(CancellationToken.None, applicationVersion: _appHost.ApplicationVersion).Result; + var list = packages.ToList(); - var result = packages.FirstOrDefault(p => string.Equals(p.guid, request.AssemblyGuid ?? "none", StringComparison.OrdinalIgnoreCase)) - ?? packages.FirstOrDefault(p => p.name.Equals(request.Name, StringComparison.OrdinalIgnoreCase)); + var result = list.FirstOrDefault(p => string.Equals(p.guid, request.AssemblyGuid ?? "none", StringComparison.OrdinalIgnoreCase)) + ?? list.FirstOrDefault(p => p.name.Equals(request.Name, StringComparison.OrdinalIgnoreCase)); return ToOptimizedResult(result); } diff --git a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs index 2a1c5dfe68..bf6ebf7ef7 100644 --- a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs +++ b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs @@ -24,14 +24,28 @@ namespace MediaBrowser.Common.Implementations.Networking /// IPAddress. public IEnumerable GetLocalIpAddresses() { - var list = GetIPsDefault().Where(i => !IPAddress.IsLoopback(i)).Select(i => i.ToString()).ToList(); + var list = GetIPsDefault() + .Where(i => !IPAddress.IsLoopback(i)) + .Select(i => i.ToString()) + .Where(FilterIpAddress) + .ToList(); if (list.Count > 0) { return list; } - return GetLocalIpAddressesFallback(); + return GetLocalIpAddressesFallback().Where(FilterIpAddress); + } + + private bool FilterIpAddress(string address) + { + if (address.StartsWith("169.", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + return true; } private bool IsInPrivateAddressSpace(string endpoint) diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index ca08cf1a1b..5f1d45fc87 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -893,6 +893,28 @@ namespace MediaBrowser.Controller.Entities return Id.ToString(); } + internal virtual bool IsValidFromResolver(BaseItem newItem) + { + var current = this; + + var currentAsPlaceHolder = current as ISupportsPlaceHolders; + + if (currentAsPlaceHolder != null) + { + var newHasPlaceHolder = newItem as ISupportsPlaceHolders; + + if (newHasPlaceHolder != null) + { + if (currentAsPlaceHolder.IsPlaceHolder != newHasPlaceHolder.IsPlaceHolder) + { + return false; + } + } + } + + return current.IsInMixedFolder == newItem.IsInMixedFolder; + } + /// /// Gets the preferred metadata language. /// @@ -1288,7 +1310,7 @@ namespace MediaBrowser.Controller.Entities /// if set to true [reset position]. /// Task. /// - public virtual async Task MarkPlayed(User user, + public virtual async Task MarkPlayed(User user, DateTime? datePlayed, bool resetPosition) { @@ -1726,5 +1748,34 @@ namespace MediaBrowser.Controller.Entities } } } + + protected Task RefreshMetadataForOwnedVideo(MetadataRefreshOptions options, string path, CancellationToken cancellationToken) + { + var newOptions = new MetadataRefreshOptions(options.DirectoryService) + { + ImageRefreshMode = options.ImageRefreshMode, + MetadataRefreshMode = options.MetadataRefreshMode, + ReplaceAllMetadata = options.ReplaceAllMetadata + }; + + var id = LibraryManager.GetNewItemId(path, typeof(Video)); + + // Try to retrieve it from the db. If we don't find it, use the resolved version + var video = LibraryManager.GetItemById(id) as Video; + + if (video == null) + { + video = LibraryManager.ResolvePath(new FileInfo(path)) as Video; + + newOptions.ForceSave = true; + } + + if (video == null) + { + return Task.FromResult(true); + } + + return video.RefreshMetadata(newOptions, cancellationToken); + } } } diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index ad90027de4..8afa376b39 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -363,47 +363,7 @@ namespace MediaBrowser.Controller.Entities private bool IsValidFromResolver(BaseItem current, BaseItem newItem) { - var currentAsVideo = current as Video; - - if (currentAsVideo != null) - { - var newAsVideo = newItem as Video; - - if (newAsVideo != null) - { - if (currentAsVideo.IsPlaceHolder != newAsVideo.IsPlaceHolder) - { - return false; - } - if (currentAsVideo.IsMultiPart != newAsVideo.IsMultiPart) - { - return false; - } - if (currentAsVideo.HasLocalAlternateVersions != newAsVideo.HasLocalAlternateVersions) - { - return false; - } - } - } - else - { - var currentAsPlaceHolder = current as ISupportsPlaceHolders; - - if (currentAsPlaceHolder != null) - { - var newHasPlaceHolder = newItem as ISupportsPlaceHolders; - - if (newHasPlaceHolder != null) - { - if (currentAsPlaceHolder.IsPlaceHolder != newHasPlaceHolder.IsPlaceHolder) - { - return false; - } - } - } - } - - return current.IsInMixedFolder == newItem.IsInMixedFolder; + return current.IsValidFromResolver(newItem); } /// diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index bbbf2358f0..07173d26fd 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -12,6 +12,7 @@ namespace MediaBrowser.Controller.Entities /// /// Class Trailer /// + [Obsolete] public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasProductionLocations, IHasBudget, IHasTrailers, IHasKeywords, IHasTaglines, IHasMetascore, IHasLookupInfo { public List SoundtrackIds { get; set; } diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index 7674dc1d38..926ffa19c1 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -63,8 +63,7 @@ namespace MediaBrowser.Controller.Entities { CollectionType.Books, CollectionType.HomeVideos, - CollectionType.Photos, - CollectionType.Trailers + CollectionType.Photos }; var collectionFolder = folder as ICollectionFolder; diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index 1c59b8bfb2..d58ae71093 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -1,7 +1,6 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Providers; -using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.MediaInfo; @@ -19,24 +18,23 @@ namespace MediaBrowser.Controller.Entities /// /// Class Video /// - public class Video : BaseItem, - IHasAspectRatio, - IHasTags, + public class Video : BaseItem, + IHasAspectRatio, + IHasTags, ISupportsPlaceHolders, IHasMediaSources, IHasShortOverview, IHasPreferredMetadataLanguage, IThemeMedia { - public bool IsMultiPart { get; set; } - public bool HasLocalAlternateVersions { get; set; } public Guid? PrimaryVersionId { get; set; } - public List AdditionalPartIds { get; set; } - public List LocalAlternateVersionIds { get; set; } + public List AdditionalParts { get; set; } + public List LocalAlternateVersions { get; set; } + public List LinkedAlternateVersions { get; set; } public bool IsThemeMedia { get; set; } - + public string FormatName { get; set; } public long? Size { get; set; } public string Container { get; set; } @@ -56,12 +54,12 @@ namespace MediaBrowser.Controller.Entities /// /// The timestamp. public TransportStreamTimestamp? Timestamp { get; set; } - + public Video() { PlayableStreamFileNames = new List(); - AdditionalPartIds = new List(); - LocalAlternateVersionIds = new List(); + AdditionalParts = new List(); + LocalAlternateVersions = new List(); Tags = new List(); SubtitleFiles = new List(); LinkedAlternateVersions = new List(); @@ -78,11 +76,31 @@ namespace MediaBrowser.Controller.Entities { get { - return LinkedAlternateVersions.Count + LocalAlternateVersionIds.Count + 1; + return LinkedAlternateVersions.Count + LocalAlternateVersions.Count + 1; } } - public List LinkedAlternateVersions { get; set; } + [IgnoreDataMember] + public bool IsStacked + { + get { return AdditionalParts.Count > 0; } + } + + [IgnoreDataMember] + public bool HasLocalAlternateVersions + { + get { return LocalAlternateVersions.Count > 0; } + } + + public IEnumerable GetAdditionalPartIds() + { + return AdditionalParts.Select(i => LibraryManager.GetNewItemId(i, typeof(Video))); + } + + public IEnumerable GetLocalAlternateVersionIds() + { + return LocalAlternateVersions.Select(i => LibraryManager.GetNewItemId(i, typeof(Video))); + } /// /// Gets the linked children. @@ -90,7 +108,7 @@ namespace MediaBrowser.Controller.Entities /// IEnumerable{BaseItem}. public IEnumerable /// The genres. public string[] AllGenres { get; set; } - + /// /// Limit results to items containing specific studios /// @@ -211,7 +211,7 @@ namespace MediaBrowser.Model.Querying /// /// The max players. public int? MaxPlayers { get; set; } - + /// /// Gets or sets the name starts with or greater. /// @@ -223,7 +223,7 @@ namespace MediaBrowser.Model.Querying /// /// The name starts with or greater. public string NameStartsWith { get; set; } - + /// /// Gets or sets the name starts with. /// @@ -267,7 +267,7 @@ namespace MediaBrowser.Model.Querying public bool? CollapseBoxSetItems { get; set; } public bool? IsPlayed { get; set; } - + /// /// Gets or sets the exclude location types. /// @@ -285,8 +285,8 @@ namespace MediaBrowser.Model.Querying public bool? EnableImages { get; set; } public int? ImageTypeLimit { get; set; } - public string EnableImageTypes { get; set; } - + public ImageType[] EnableImageTypes { get; set; } + /// /// Initializes a new instance of the class. /// @@ -294,16 +294,16 @@ namespace MediaBrowser.Model.Querying { LocationTypes = new LocationType[] { }; ExcludeLocationTypes = new LocationType[] { }; - + SortBy = new string[] { }; - Filters = new ItemFilter[] {}; + Filters = new ItemFilter[] { }; - Fields = new ItemFields[] {}; + Fields = new ItemFields[] { }; - MediaTypes = new string[] {}; + MediaTypes = new string[] { }; - VideoTypes = new VideoType[] {}; + VideoTypes = new VideoType[] { }; Genres = new string[] { }; Studios = new string[] { }; @@ -317,6 +317,7 @@ namespace MediaBrowser.Model.Querying ImageTypes = new ImageType[] { }; AirDays = new DayOfWeek[] { }; SeriesStatuses = new SeriesStatus[] { }; + EnableImageTypes = new ImageType[] { }; } } } diff --git a/MediaBrowser.Model/Querying/ItemsByNameQuery.cs b/MediaBrowser.Model/Querying/ItemsByNameQuery.cs index 1780226288..578f22f600 100644 --- a/MediaBrowser.Model/Querying/ItemsByNameQuery.cs +++ b/MediaBrowser.Model/Querying/ItemsByNameQuery.cs @@ -115,8 +115,8 @@ namespace MediaBrowser.Model.Querying /// Gets or sets the enable image types. /// /// The enable image types. - public string EnableImageTypes { get; set; } - + public ImageType[] EnableImageTypes { get; set; } + /// /// Initializes a new instance of the class. /// @@ -130,6 +130,7 @@ namespace MediaBrowser.Model.Querying SortBy = new string[] { }; ExcludeItemTypes = new string[] { }; IncludeItemTypes = new string[] { }; + EnableImageTypes = new ImageType[] { }; } } } diff --git a/MediaBrowser.Model/Querying/LatestItemsQuery.cs b/MediaBrowser.Model/Querying/LatestItemsQuery.cs index 4537378f58..a8086e5cd9 100644 --- a/MediaBrowser.Model/Querying/LatestItemsQuery.cs +++ b/MediaBrowser.Model/Querying/LatestItemsQuery.cs @@ -1,4 +1,6 @@  +using MediaBrowser.Model.Entities; + namespace MediaBrowser.Model.Querying { public class LatestItemsQuery @@ -64,6 +66,11 @@ namespace MediaBrowser.Model.Querying /// Gets or sets the enable image types. /// /// The enable image types. - public string EnableImageTypes { get; set; } + public ImageType[] EnableImageTypes { get; set; } + + public LatestItemsQuery() + { + EnableImageTypes = new ImageType[] {}; + } } } diff --git a/MediaBrowser.Model/Querying/NextUpQuery.cs b/MediaBrowser.Model/Querying/NextUpQuery.cs index c3178b8eb6..b5f50bde03 100644 --- a/MediaBrowser.Model/Querying/NextUpQuery.cs +++ b/MediaBrowser.Model/Querying/NextUpQuery.cs @@ -1,4 +1,5 @@ - +using MediaBrowser.Model.Entities; + namespace MediaBrowser.Model.Querying { public class NextUpQuery @@ -52,7 +53,11 @@ namespace MediaBrowser.Model.Querying /// Gets or sets the enable image types. /// /// The enable image types. - public string EnableImageTypes { get; set; } + public ImageType[] EnableImageTypes { get; set; } + public NextUpQuery() + { + EnableImageTypes = new ImageType[] {}; + } } } diff --git a/MediaBrowser.Model/Querying/UpcomingEpisodesQuery.cs b/MediaBrowser.Model/Querying/UpcomingEpisodesQuery.cs index 359babeb23..665b980eb8 100644 --- a/MediaBrowser.Model/Querying/UpcomingEpisodesQuery.cs +++ b/MediaBrowser.Model/Querying/UpcomingEpisodesQuery.cs @@ -1,4 +1,6 @@ -namespace MediaBrowser.Model.Querying +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Model.Querying { public class UpcomingEpisodesQuery { @@ -45,6 +47,11 @@ /// Gets or sets the enable image types. /// /// The enable image types. - public string EnableImageTypes { get; set; } + public ImageType[] EnableImageTypes { get; set; } + + public UpcomingEpisodesQuery() + { + EnableImageTypes = new ImageType[] {}; + } } } \ No newline at end of file diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index cdf1e788c8..d9982e7863 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -437,7 +437,6 @@ namespace MediaBrowser.Providers.Manager GetPluginSummary(), GetPluginSummary(), GetPluginSummary(), - GetPluginSummary(), GetPluginSummary(), GetPluginSummary(), GetPluginSummary(), diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 0757541078..6ac1ab84e6 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -110,7 +110,6 @@ - diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs index 16c255397f..acca43cf81 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs @@ -31,7 +31,6 @@ namespace MediaBrowser.Providers.MediaInfo ICustomMetadataProvider, ICustomMetadataProvider, ICustomMetadataProvider, - ICustomMetadataProvider, ICustomMetadataProvider