From cd279d98e0574c396c0a35984e46658151e54fc0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 2 Dec 2013 11:46:25 -0500 Subject: added IHasTrailers --- MediaBrowser.Controller/Entities/BaseItem.cs | 21 ++++++++------------- MediaBrowser.Controller/Entities/Extensions.cs | 2 +- MediaBrowser.Controller/Entities/Game.cs | 12 +++++++++++- MediaBrowser.Controller/Entities/IHasTrailers.cs | 21 +++++++++++++++++++++ MediaBrowser.Controller/Entities/Movies/BoxSet.cs | 20 ++++++++++++++++++-- MediaBrowser.Controller/Entities/Movies/Movie.cs | 8 +++++++- MediaBrowser.Controller/Entities/TV/Series.cs | 8 +++++++- MediaBrowser.Controller/Entities/Trailer.cs | 7 ++++++- 8 files changed, 79 insertions(+), 20 deletions(-) create mode 100644 MediaBrowser.Controller/Entities/IHasTrailers.cs (limited to 'MediaBrowser.Controller/Entities') diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index f5cdaa988..4f7889f97 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -37,10 +37,8 @@ namespace MediaBrowser.Controller.Entities Tags = new List(); ThemeSongIds = new List(); ThemeVideoIds = new List(); - LocalTrailerIds = new List(); LockedFields = new List(); Taglines = new List(); - RemoteTrailers = new List(); ImageSources = new List(); } @@ -92,12 +90,6 @@ namespace MediaBrowser.Controller.Entities /// The taglines. public List Taglines { get; set; } - /// - /// Gets or sets the trailer URL. - /// - /// The trailer URL. - public List RemoteTrailers { get; set; } - /// /// Return the id that should be used to key display prefs for this item. /// Default is based on the type for everything except actual generic folders. @@ -654,7 +646,6 @@ namespace MediaBrowser.Controller.Entities public List ThemeSongIds { get; set; } public List ThemeVideoIds { get; set; } - public List LocalTrailerIds { get; set; } [IgnoreDataMember] public virtual string OfficialRatingForComparison @@ -897,7 +888,11 @@ namespace MediaBrowser.Controller.Entities themeVideosChanged = await RefreshThemeVideos(cancellationToken, forceSave, forceRefresh, allowSlowProviders).ConfigureAwait(false); - localTrailersChanged = await RefreshLocalTrailers(cancellationToken, forceSave, forceRefresh, allowSlowProviders).ConfigureAwait(false); + var hasTrailers = this as IHasTrailers; + if (hasTrailers != null) + { + localTrailersChanged = await RefreshLocalTrailers(hasTrailers, cancellationToken, forceSave, forceRefresh, allowSlowProviders).ConfigureAwait(false); + } } cancellationToken.ThrowIfCancellationRequested(); @@ -917,18 +912,18 @@ namespace MediaBrowser.Controller.Entities return changed; } - private async Task RefreshLocalTrailers(CancellationToken cancellationToken, bool forceSave = false, bool forceRefresh = false, bool allowSlowProviders = true) + private async Task RefreshLocalTrailers(IHasTrailers item, CancellationToken cancellationToken, bool forceSave = false, bool forceRefresh = false, bool allowSlowProviders = true) { var newItems = LoadLocalTrailers().ToList(); var newItemIds = newItems.Select(i => i.Id).ToList(); - var itemsChanged = !LocalTrailerIds.SequenceEqual(newItemIds); + var itemsChanged = !item.LocalTrailerIds.SequenceEqual(newItemIds); var tasks = newItems.Select(i => i.RefreshMetadata(cancellationToken, forceSave, forceRefresh, allowSlowProviders, resetResolveArgs: false)); var results = await Task.WhenAll(tasks).ConfigureAwait(false); - LocalTrailerIds = newItemIds; + item.LocalTrailerIds = newItemIds; return itemsChanged || results.Contains(true); } diff --git a/MediaBrowser.Controller/Entities/Extensions.cs b/MediaBrowser.Controller/Entities/Extensions.cs index d189f4e71..2a64bd3a4 100644 --- a/MediaBrowser.Controller/Entities/Extensions.cs +++ b/MediaBrowser.Controller/Entities/Extensions.cs @@ -16,7 +16,7 @@ namespace MediaBrowser.Controller.Entities /// The URL. /// if set to true [is direct link]. /// url - public static void AddTrailerUrl(this BaseItem item, string url, bool isDirectLink) + public static void AddTrailerUrl(this IHasTrailers item, string url, bool isDirectLink) { if (string.IsNullOrWhiteSpace(url)) { diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs index ea39cf50a..e15b7e4c9 100644 --- a/MediaBrowser.Controller/Entities/Game.cs +++ b/MediaBrowser.Controller/Entities/Game.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; namespace MediaBrowser.Controller.Entities { - public class Game : BaseItem, IHasSoundtracks + public class Game : BaseItem, IHasSoundtracks, IHasTrailers { public List SoundtrackIds { get; set; } @@ -12,8 +12,18 @@ namespace MediaBrowser.Controller.Entities { MultiPartGameFiles = new List(); SoundtrackIds = new List(); + RemoteTrailers = new List(); + LocalTrailerIds = new List(); } + public List LocalTrailerIds { get; set; } + + /// + /// Gets or sets the remote trailers. + /// + /// The remote trailers. + public List RemoteTrailers { get; set; } + /// /// Gets the type of the media. /// diff --git a/MediaBrowser.Controller/Entities/IHasTrailers.cs b/MediaBrowser.Controller/Entities/IHasTrailers.cs new file mode 100644 index 000000000..47779064b --- /dev/null +++ b/MediaBrowser.Controller/Entities/IHasTrailers.cs @@ -0,0 +1,21 @@ +using MediaBrowser.Model.Entities; +using System; +using System.Collections.Generic; + +namespace MediaBrowser.Controller.Entities +{ + public interface IHasTrailers + { + /// + /// Gets or sets the remote trailers. + /// + /// The remote trailers. + List RemoteTrailers { get; set; } + + /// + /// Gets or sets the local trailer ids. + /// + /// The local trailer ids. + List LocalTrailerIds { get; set; } + } +} diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index e52ece502..4a6221ee9 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -1,10 +1,26 @@ - +using System; +using MediaBrowser.Model.Entities; +using System.Collections.Generic; + namespace MediaBrowser.Controller.Entities.Movies { /// /// Class BoxSet /// - public class BoxSet : Folder + public class BoxSet : Folder, IHasTrailers { + public BoxSet() + { + RemoteTrailers = new List(); + LocalTrailerIds = new List(); + } + + public List LocalTrailerIds { get; set; } + + /// + /// Gets or sets the remote trailers. + /// + /// The remote trailers. + public List RemoteTrailers { get; set; } } } diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 30babe238..473ea4996 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -11,7 +11,7 @@ namespace MediaBrowser.Controller.Entities.Movies /// /// Class Movie /// - public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasBudget + public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasBudget, IHasTrailers { public List SpecialFeatureIds { get; set; } @@ -21,8 +21,14 @@ namespace MediaBrowser.Controller.Entities.Movies { SpecialFeatureIds = new List(); SoundtrackIds = new List(); + RemoteTrailers = new List(); + LocalTrailerIds = new List(); } + public List LocalTrailerIds { get; set; } + + public List RemoteTrailers { get; set; } + /// /// Gets or sets the budget. /// diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 02ea50c6b..f3c7b088a 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -11,7 +11,7 @@ namespace MediaBrowser.Controller.Entities.TV /// /// Class Series /// - public class Series : Folder, IHasSoundtracks + public class Series : Folder, IHasSoundtracks, IHasTrailers { public List SpecialFeatureIds { get; set; } public List SoundtrackIds { get; set; } @@ -24,8 +24,14 @@ namespace MediaBrowser.Controller.Entities.TV SpecialFeatureIds = new List(); SoundtrackIds = new List(); + RemoteTrailers = new List(); + LocalTrailerIds = new List(); } + public List LocalTrailerIds { get; set; } + + public List RemoteTrailers { get; set; } + /// /// Gets or sets the status. /// diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index 7c14c9865..77efe8e8c 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Entities /// /// Class Trailer /// - public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasBudget + public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasBudget, IHasTrailers { public List SoundtrackIds { get; set; } @@ -17,8 +17,13 @@ namespace MediaBrowser.Controller.Entities RemoteTrailers = new List(); Taglines = new List(); SoundtrackIds = new List(); + LocalTrailerIds = new List(); } + public List LocalTrailerIds { get; set; } + + public List RemoteTrailers { get; set; } + /// /// Gets or sets the budget. /// -- cgit v1.2.3