diff options
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Dlna/ISsdpHandler.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Dlna/SsdpMessageEventArgs.cs | 23 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Drawing/IImageProcessor.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 35 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Game.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/IHasSoundtracks.cs | 29 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Movies/Movie.cs | 18 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Series.cs | 22 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Trailer.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 3 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Providers/BaseItemXmlParser.cs | 40 |
12 files changed, 118 insertions, 77 deletions
diff --git a/MediaBrowser.Controller/Dlna/ISsdpHandler.cs b/MediaBrowser.Controller/Dlna/ISsdpHandler.cs new file mode 100644 index 000000000..e4126ddcf --- /dev/null +++ b/MediaBrowser.Controller/Dlna/ISsdpHandler.cs @@ -0,0 +1,9 @@ +using System; + +namespace MediaBrowser.Controller.Dlna +{ + public interface ISsdpHandler + { + event EventHandler<SsdpMessageEventArgs> MessageReceived; + } +} diff --git a/MediaBrowser.Controller/Dlna/SsdpMessageEventArgs.cs b/MediaBrowser.Controller/Dlna/SsdpMessageEventArgs.cs new file mode 100644 index 000000000..63f3a67aa --- /dev/null +++ b/MediaBrowser.Controller/Dlna/SsdpMessageEventArgs.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Net; + +namespace MediaBrowser.Controller.Dlna +{ + public class SsdpMessageEventArgs + { + public string Method { get; set; } + + public EndPoint EndPoint { get; set; } + + public Dictionary<string, string> Headers { get; set; } + + public IPAddress LocalIp { get; set; } + public byte[] Message { get; set; } + + public SsdpMessageEventArgs() + { + Headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); + } + } +} diff --git a/MediaBrowser.Controller/Drawing/IImageProcessor.cs b/MediaBrowser.Controller/Drawing/IImageProcessor.cs index 685d2706d..aeb817392 100644 --- a/MediaBrowser.Controller/Drawing/IImageProcessor.cs +++ b/MediaBrowser.Controller/Drawing/IImageProcessor.cs @@ -104,6 +104,6 @@ namespace MediaBrowser.Controller.Drawing /// Creates the image collage. /// </summary> /// <param name="options">The options.</param> - void CreateImageCollage(ImageCollageOptions options); + Task CreateImageCollage(ImageCollageOptions options); } } diff --git a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs index 254f90376..a7c914664 100644 --- a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs @@ -17,10 +17,6 @@ namespace MediaBrowser.Controller.Entities.Audio public static class HasArtistExtensions { - public static bool HasArtist(this IHasArtist hasArtist, string artist) - { - return NameExtensions.EqualsAny(hasArtist.Artists, artist); - } public static bool HasAnyArtist(this IHasArtist hasArtist, string artist) { return NameExtensions.EqualsAny(hasArtist.AllArtists, artist); diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 22efd3fba..3313f45fd 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -491,6 +491,17 @@ namespace MediaBrowser.Controller.Entities } } + /// <summary> + /// Finds a parent of a given type + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns>``0.</returns> + public T FindParent<T>() + where T : Folder + { + return Parents.OfType<T>().FirstOrDefault(); + } + [IgnoreDataMember] public virtual BaseItem DisplayParent { @@ -1458,30 +1469,6 @@ namespace MediaBrowser.Controller.Entities } /// <summary> - /// Finds a parent of a given type - /// </summary> - /// <typeparam name="T"></typeparam> - /// <returns>``0.</returns> - public T FindParent<T>() - where T : Folder - { - var parent = Parent; - - while (parent != null) - { - var result = parent as T; - if (result != null) - { - return result; - } - - parent = parent.Parent; - } - - return null; - } - - /// <summary> /// Gets an image /// </summary> /// <param name="type">The type.</param> diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs index 899e5628f..15d2d755a 100644 --- a/MediaBrowser.Controller/Entities/Game.cs +++ b/MediaBrowser.Controller/Entities/Game.cs @@ -8,10 +8,8 @@ using System.Linq; namespace MediaBrowser.Controller.Entities { - public class Game : BaseItem, IHasSoundtracks, IHasTrailers, IHasThemeMedia, IHasTags, IHasScreenshots, ISupportsPlaceHolders, IHasPreferredMetadataLanguage, IHasLookupInfo<GameInfo> + public class Game : BaseItem, IHasTrailers, IHasThemeMedia, IHasTags, IHasScreenshots, ISupportsPlaceHolders, IHasPreferredMetadataLanguage, IHasLookupInfo<GameInfo> { - public List<Guid> SoundtrackIds { get; set; } - public List<Guid> ThemeSongIds { get; set; } public List<Guid> ThemeVideoIds { get; set; } @@ -26,7 +24,6 @@ namespace MediaBrowser.Controller.Entities public Game() { MultiPartGameFiles = new List<string>(); - SoundtrackIds = new List<Guid>(); RemoteTrailers = new List<MediaUrl>(); LocalTrailerIds = new List<Guid>(); RemoteTrailerIds = new List<Guid>(); diff --git a/MediaBrowser.Controller/Entities/IHasSoundtracks.cs b/MediaBrowser.Controller/Entities/IHasSoundtracks.cs deleted file mode 100644 index 3ac2491fb..000000000 --- a/MediaBrowser.Controller/Entities/IHasSoundtracks.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace MediaBrowser.Controller.Entities -{ - /// <summary> - /// Interface IHasSoundtracks - /// </summary> - public interface IHasSoundtracks - { - /// <summary> - /// Gets or sets the soundtrack ids. - /// </summary> - /// <value>The soundtrack ids.</value> - List<Guid> SoundtrackIds { get; set; } - - /// <summary> - /// Gets the name. - /// </summary> - /// <value>The name.</value> - string Name { get; } - - /// <summary> - /// Gets the identifier. - /// </summary> - /// <value>The identifier.</value> - Guid Id { get; } - } -} diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 411004782..fc07f6778 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -14,12 +14,11 @@ namespace MediaBrowser.Controller.Entities.Movies /// <summary> /// Class Movie /// </summary> - public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasSpecialFeatures, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTrailers, IHasThemeMedia, IHasTaglines, IHasAwards, IHasMetascore, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping, IHasOriginalTitle + public class Movie : Video, IHasCriticRating, IHasSpecialFeatures, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTrailers, IHasThemeMedia, IHasTaglines, IHasAwards, IHasMetascore, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping, IHasOriginalTitle { public List<Guid> SpecialFeatureIds { get; set; } public string OriginalTitle { get; set; } - public List<Guid> SoundtrackIds { get; set; } public List<Guid> ThemeSongIds { get; set; } public List<Guid> ThemeVideoIds { get; set; } @@ -28,7 +27,6 @@ namespace MediaBrowser.Controller.Entities.Movies public Movie() { SpecialFeatureIds = new List<Guid>(); - SoundtrackIds = new List<Guid>(); RemoteTrailers = new List<MediaUrl>(); LocalTrailerIds = new List<Guid>(); RemoteTrailerIds = new List<Guid>(); @@ -102,7 +100,19 @@ namespace MediaBrowser.Controller.Entities.Movies /// <returns>System.String.</returns> protected override string CreateUserDataKey() { - return this.GetProviderId(MetadataProviders.Tmdb) ?? this.GetProviderId(MetadataProviders.Imdb) ?? base.CreateUserDataKey(); + var key = this.GetProviderId(MetadataProviders.Tmdb); + + if (string.IsNullOrWhiteSpace(key)) + { + key = this.GetProviderId(MetadataProviders.Imdb); + } + + if (string.IsNullOrWhiteSpace(key)) + { + key = base.CreateUserDataKey(); + } + + return key; } protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken) diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 91014ccda..4696afeb6 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -15,10 +15,9 @@ namespace MediaBrowser.Controller.Entities.TV /// <summary> /// Class Series /// </summary> - public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasDisplayOrder, IHasLookupInfo<SeriesInfo>, IHasSpecialFeatures, IMetadataContainer, IHasOriginalTitle + public class Series : Folder, IHasTrailers, IHasDisplayOrder, IHasLookupInfo<SeriesInfo>, IHasSpecialFeatures, IMetadataContainer, IHasOriginalTitle { public List<Guid> SpecialFeatureIds { get; set; } - public List<Guid> SoundtrackIds { get; set; } public string OriginalTitle { get; set; } public int SeasonCount { get; set; } @@ -30,7 +29,6 @@ namespace MediaBrowser.Controller.Entities.TV AirDays = new List<DayOfWeek>(); SpecialFeatureIds = new List<Guid>(); - SoundtrackIds = new List<Guid>(); RemoteTrailers = new List<MediaUrl>(); LocalTrailerIds = new List<Guid>(); RemoteTrailerIds = new List<Guid>(); @@ -63,7 +61,7 @@ namespace MediaBrowser.Controller.Entities.TV /// airdate, dvd or absolute /// </summary> public string DisplayOrder { get; set; } - + /// <summary> /// Gets or sets the status. /// </summary> @@ -115,7 +113,19 @@ namespace MediaBrowser.Controller.Entities.TV /// <returns>System.String.</returns> protected override string CreateUserDataKey() { - return this.GetProviderId(MetadataProviders.Tvdb) ?? this.GetProviderId(MetadataProviders.Tvcom) ?? base.CreateUserDataKey(); + var key = this.GetProviderId(MetadataProviders.Tvdb); + + if (string.IsNullOrWhiteSpace(key)) + { + key = this.GetProviderId(MetadataProviders.Imdb); + } + + if (string.IsNullOrWhiteSpace(key)) + { + key = base.CreateUserDataKey(); + } + + return key; } /// <summary> @@ -190,7 +200,7 @@ namespace MediaBrowser.Controller.Entities.TV public IEnumerable<Episode> GetEpisodes(User user) { var config = user.Configuration; - + return GetEpisodes(user, config.DisplayMissingEpisodes, config.DisplayUnairedEpisodes); } diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index 522e6edf6..f44128e2d 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -14,17 +14,14 @@ namespace MediaBrowser.Controller.Entities /// Class Trailer /// </summary> [Obsolete] - public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTaglines, IHasMetascore, IHasLookupInfo<TrailerInfo> + public class Trailer : Video, IHasCriticRating, IHasProductionLocations, IHasBudget, IHasKeywords, IHasTaglines, IHasMetascore, IHasLookupInfo<TrailerInfo> { - public List<Guid> SoundtrackIds { get; set; } - public List<string> ProductionLocations { get; set; } public Trailer() { RemoteTrailers = new List<MediaUrl>(); Taglines = new List<string>(); - SoundtrackIds = new List<Guid>(); Keywords = new List<string>(); ProductionLocations = new List<string>(); } diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 199f5e0d1..b66e6b9c8 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -116,7 +116,9 @@ <Compile Include="Dlna\IDlnaManager.cs" /> <Compile Include="Dlna\IEventManager.cs" /> <Compile Include="Dlna\IMediaReceiverRegistrar.cs" /> + <Compile Include="Dlna\ISsdpHandler.cs" /> <Compile Include="Dlna\IUpnpService.cs" /> + <Compile Include="Dlna\SsdpMessageEventArgs.cs" /> <Compile Include="Drawing\IImageProcessor.cs" /> <Compile Include="Drawing\ImageCollageOptions.cs" /> <Compile Include="Drawing\ImageProcessingOptions.cs" /> @@ -150,7 +152,6 @@ <Compile Include="Entities\IHasScreenshots.cs" /> <Compile Include="Entities\IHasSeries.cs" /> <Compile Include="Entities\IHasShortOverview.cs" /> - <Compile Include="Entities\IHasSoundtracks.cs" /> <Compile Include="Entities\IHasSpecialFeatures.cs" /> <Compile Include="Entities\IHasTaglines.cs" /> <Compile Include="Entities\IHasTags.cs" /> diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 13f83c0fc..a8a3e88ab 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -1426,6 +1426,46 @@ namespace MediaBrowser.Controller.Providers return null; } + protected Share GetShare(XmlReader reader) + { + reader.MoveToContent(); + + var item = new Share(); + + while (reader.Read()) + { + if (reader.NodeType == XmlNodeType.Element) + { + switch (reader.Name) + { + case "UserId": + { + item.UserId = reader.ReadElementContentAsString(); + break; + } + + case "CanEdit": + { + item.CanEdit = string.Equals(reader.ReadElementContentAsString(), "true", StringComparison.OrdinalIgnoreCase); + break; + } + + default: + reader.Skip(); + break; + } + } + } + + // This is valid + if (!string.IsNullOrWhiteSpace(item.UserId)) + { + return item; + } + + return null; + } + /// <summary> /// Used to split names of comma or pipe delimeted genres and people |
