diff options
| -rw-r--r-- | MediaBrowser.Api/ItemLookupService.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamInfo.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Providers/Movies/MovieDbSearch.cs | 15 | ||||
| -rw-r--r-- | MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/MusicManager.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Localization/Server/server.json | 4 |
7 files changed, 46 insertions, 9 deletions
diff --git a/MediaBrowser.Api/ItemLookupService.cs b/MediaBrowser.Api/ItemLookupService.cs index 35b1b5385..a08f28533 100644 --- a/MediaBrowser.Api/ItemLookupService.cs +++ b/MediaBrowser.Api/ItemLookupService.cs @@ -22,6 +22,7 @@ namespace MediaBrowser.Api { [Route("/Items/{Id}/ExternalIdInfos", "GET")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetExternalIdInfos : IReturn<List<ExternalIdInfo>> { /// <summary> @@ -34,54 +35,63 @@ namespace MediaBrowser.Api [Route("/Items/RemoteSearch/Movie", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetMovieRemoteSearchResults : RemoteSearchQuery<MovieInfo>, IReturn<List<RemoteSearchResult>> { } [Route("/Items/RemoteSearch/Trailer", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetTrailerRemoteSearchResults : RemoteSearchQuery<TrailerInfo>, IReturn<List<RemoteSearchResult>> { } [Route("/Items/RemoteSearch/AdultVideo", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetAdultVideoRemoteSearchResults : RemoteSearchQuery<ItemLookupInfo>, IReturn<List<RemoteSearchResult>> { } [Route("/Items/RemoteSearch/Series", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetSeriesRemoteSearchResults : RemoteSearchQuery<SeriesInfo>, IReturn<List<RemoteSearchResult>> { } [Route("/Items/RemoteSearch/Game", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetGameRemoteSearchResults : RemoteSearchQuery<GameInfo>, IReturn<List<RemoteSearchResult>> { } [Route("/Items/RemoteSearch/BoxSet", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetBoxSetRemoteSearchResults : RemoteSearchQuery<BoxSetInfo>, IReturn<List<RemoteSearchResult>> { } [Route("/Items/RemoteSearch/MusicArtist", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetMusicArtistRemoteSearchResults : RemoteSearchQuery<ArtistInfo>, IReturn<List<RemoteSearchResult>> { } [Route("/Items/RemoteSearch/MusicAlbum", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetMusicAlbumRemoteSearchResults : RemoteSearchQuery<AlbumInfo>, IReturn<List<RemoteSearchResult>> { } [Route("/Items/RemoteSearch/Person", "POST")] [Api(Description = "Gets external id infos for an item")] + [Authenticated] public class GetPersonRemoteSearchResults : RemoteSearchQuery<PersonLookupInfo>, IReturn<List<RemoteSearchResult>> { } @@ -99,13 +109,13 @@ namespace MediaBrowser.Api [Route("/Items/RemoteSearch/Apply/{Id}", "POST")] [Api(Description = "Applies search criteria to an item and refreshes metadata")] + [Authenticated] public class ApplySearchCriteria : RemoteSearchResult, IReturnVoid { [ApiMember(Name = "Id", Description = "The item id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] public string Id { get; set; } } - [Authenticated] public class ItemLookupService : BaseApiService { private readonly IProviderManager _providerManager; diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index a8c6c0239..ffe71f4ea 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -57,6 +57,16 @@ namespace MediaBrowser.Api.Playback.Hls { var result = GetAsync(request).Result; + if (string.Equals(request.AudioCodec, "copy", StringComparison.OrdinalIgnoreCase)) + { + throw new ArgumentException("Audio codec copy is not allowed here."); + } + + if (string.Equals(request.VideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) + { + throw new ArgumentException("Video codec copy is not allowed here."); + } + return result; } diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index b8c256b25..e5e013b2a 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -91,7 +91,7 @@ namespace MediaBrowser.Model.Dlna if (StringHelper.EqualsIgnoreCase(Protocol, "hls")) { - return string.Format("{0}/videos/{1}/stream.m3u8?{2}", baseUrl, ItemId, dlnaCommand); + return string.Format("{0}/videos/{1}/master.m3u8?{2}", baseUrl, ItemId, dlnaCommand); } return string.Format("{0}/videos/{1}/stream{2}?{3}", baseUrl, ItemId, extension, dlnaCommand); diff --git a/MediaBrowser.Providers/Movies/MovieDbSearch.cs b/MediaBrowser.Providers/Movies/MovieDbSearch.cs index 500b71a79..b8f176454 100644 --- a/MediaBrowser.Providers/Movies/MovieDbSearch.cs +++ b/MediaBrowser.Providers/Movies/MovieDbSearch.cs @@ -109,7 +109,8 @@ namespace MediaBrowser.Providers.Movies { if (year.HasValue && i.ProductionYear.HasValue) { - return year.Value == i.ProductionYear.Value; + // Allow one year tolerance + return Math.Abs(year.Value - i.ProductionYear.Value) <= 1; } return true; @@ -177,11 +178,19 @@ namespace MediaBrowser.Providers.Movies // These dates are always in this exact format if (DateTime.TryParseExact(result.release_date, "yyyy-MM-dd", EnUs, DateTimeStyles.None, out r)) { - return Math.Abs(r.Year - year.Value); + // Allow one year tolernace, preserve order from Tmdb + var variance = Math.Abs(r.Year - year.Value); + + if (variance <= 1) + { + return 0; + } + + return variance; } } - return 0; + return int.MaxValue; } /// <summary> diff --git a/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs b/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs index af1edeed0..5e2c8b919 100644 --- a/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeasonImageProvider.cs @@ -95,7 +95,7 @@ namespace MediaBrowser.Providers.TV { var offset = TvdbSeriesProvider.GetSeriesOffset(series.ProviderIds); if (offset != null) - return (int) (seasonNumber + offset); + return (seasonNumber + offset.Value); return seasonNumber; } diff --git a/MediaBrowser.Server.Implementations/Library/MusicManager.cs b/MediaBrowser.Server.Implementations/Library/MusicManager.cs index 9d5826454..df122e166 100644 --- a/MediaBrowser.Server.Implementations/Library/MusicManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MusicManager.cs @@ -18,7 +18,12 @@ namespace MediaBrowser.Server.Implementations.Library public IEnumerable<Audio> GetInstantMixFromSong(Audio item, User user) { - return GetInstantMixFromGenres(item.Genres, user); + var list = new List<Audio> + { + item + }; + + return list.Concat(GetInstantMixFromGenres(item.Genres, user)); } public IEnumerable<Audio> GetInstantMixFromArtist(string name, User user) @@ -39,7 +44,7 @@ namespace MediaBrowser.Server.Implementations.Library public IEnumerable<Audio> GetInstantMixFromAlbum(MusicAlbum item, User user) { var genres = item - .RecursiveChildren + .GetRecursiveChildren(user, true) .OfType<Audio>() .SelectMany(i => i.Genres) .Concat(item.Genres) @@ -57,6 +62,7 @@ namespace MediaBrowser.Server.Implementations.Library return inputItems .OfType<Audio>() .Select(i => new Tuple<Audio, int>(i, i.Genres.Count(genresDictionary.ContainsKey))) + .Where(i => i.Item2 > 0) .OrderByDescending(i => i.Item2) .ThenBy(i => Guid.NewGuid()) .Select(i => i.Item1) diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index d6d4bbc51..a1c08c8d8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -858,5 +858,7 @@ "TabBranding": "Branding", "HeaderBrandingHelp": "Customize the appearance of Media Browser to fit the needs of your group or organization.", "LabelLoginDisclaimer": "Login disclaimer:", - "LabelLoginDisclaimerHelp": "This will be displayed at the bottom of the login page." + "LabelLoginDisclaimerHelp": "This will be displayed at the bottom of the login page.", + "LabelAutomaticallyDonate": "Automatically donate this amount each month", + "LabelAutomaticallyDonateHelp": "You can cancel at any time via your PayPal account." }
\ No newline at end of file |
