|
@@ -348,28 +348,19 @@ namespace MediaBrowser.Api.Library
|
|
|
|
|
|
private string[] GetRepresentativeItemTypes(string contentType)
|
|
|
{
|
|
|
- switch (contentType)
|
|
|
+ return contentType switch
|
|
|
{
|
|
|
- case CollectionType.BoxSets:
|
|
|
- return new string[] { "BoxSet" };
|
|
|
- case CollectionType.Playlists:
|
|
|
- return new string[] { "Playlist" };
|
|
|
- case CollectionType.Movies:
|
|
|
- return new string[] { "Movie" };
|
|
|
- case CollectionType.TvShows:
|
|
|
- return new string[] { "Series", "Season", "Episode" };
|
|
|
- case CollectionType.Books:
|
|
|
- return new string[] { "Book" };
|
|
|
- case CollectionType.Music:
|
|
|
- return new string[] { "MusicAlbum", "MusicArtist", "Audio", "MusicVideo" };
|
|
|
- case CollectionType.HomeVideos:
|
|
|
- case CollectionType.Photos:
|
|
|
- return new string[] { "Video", "Photo" };
|
|
|
- case CollectionType.MusicVideos:
|
|
|
- return new string[] { "MusicVideo" };
|
|
|
- default:
|
|
|
- return new string[] { "Series", "Season", "Episode", "Movie" };
|
|
|
- }
|
|
|
+ CollectionType.BoxSets => new[] {"BoxSet"},
|
|
|
+ CollectionType.Playlists => new[] {"Playlist"},
|
|
|
+ CollectionType.Movies => new[] {"Movie"},
|
|
|
+ CollectionType.TvShows => new[] {"Series", "Season", "Episode"},
|
|
|
+ CollectionType.Books => new[] {"Book"},
|
|
|
+ CollectionType.Music => new[] {"MusicAlbum", "MusicArtist", "Audio", "MusicVideo"},
|
|
|
+ CollectionType.HomeVideos => new[] {"Video", "Photo"},
|
|
|
+ CollectionType.Photos => new[] {"Video", "Photo"},
|
|
|
+ CollectionType.MusicVideos => new[] {"MusicVideo"},
|
|
|
+ _ => new[] {"Series", "Season", "Episode", "Movie"}
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
private bool IsSaverEnabledByDefault(string name, string[] itemTypes, bool isNewLibrary)
|
|
@@ -397,54 +388,22 @@ namespace MediaBrowser.Api.Library
|
|
|
{
|
|
|
if (string.Equals(name, "TheMovieDb", StringComparison.OrdinalIgnoreCase))
|
|
|
{
|
|
|
- if (string.Equals(type, "Series", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- if (string.Equals(type, "Season", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (string.Equals(type, "Episode", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (string.Equals(type, "MusicVideo", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "TheTVDB", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "The Open Movie Database", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "TheAudioDB", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "MusicBrainz", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
+ return !(string.Equals(type, "Season", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(type, "Episode", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(type, "MusicVideo", StringComparison.OrdinalIgnoreCase));
|
|
|
}
|
|
|
|
|
|
- return false;
|
|
|
+ return string.Equals(name, "TheTVDB", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(name, "TheAudioDB", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(name, "MusicBrainz", StringComparison.OrdinalIgnoreCase);
|
|
|
}
|
|
|
|
|
|
var metadataOptions = ServerConfigurationManager.Configuration.MetadataOptions
|
|
|
.Where(i => string.Equals(i.ItemType, type, StringComparison.OrdinalIgnoreCase))
|
|
|
.ToArray();
|
|
|
|
|
|
- if (metadataOptions.Length == 0)
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- return metadataOptions.Any(i => !i.DisabledMetadataFetchers.Contains(name, StringComparer.OrdinalIgnoreCase));
|
|
|
+ return metadataOptions.Length == 0
|
|
|
+ || metadataOptions.Any(i => !i.DisabledMetadataFetchers.Contains(name, StringComparer.OrdinalIgnoreCase));
|
|
|
}
|
|
|
|
|
|
private bool IsImageFetcherEnabledByDefault(string name, string type, bool isNewLibrary)
|
|
@@ -453,50 +412,17 @@ namespace MediaBrowser.Api.Library
|
|
|
{
|
|
|
if (string.Equals(name, "TheMovieDb", StringComparison.OrdinalIgnoreCase))
|
|
|
{
|
|
|
- if (string.Equals(type, "Series", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (string.Equals(type, "Season", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (string.Equals(type, "Episode", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (string.Equals(type, "MusicVideo", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "TheTVDB", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "The Open Movie Database", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "TheAudioDB", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "Emby Designs", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "Screen Grabber", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
- }
|
|
|
- else if (string.Equals(name, "Image Extractor", StringComparison.OrdinalIgnoreCase))
|
|
|
- {
|
|
|
- return true;
|
|
|
+ return !string.Equals(type, "Series", StringComparison.OrdinalIgnoreCase)
|
|
|
+ && !string.Equals(type, "Season", StringComparison.OrdinalIgnoreCase)
|
|
|
+ && !string.Equals(type, "Episode", StringComparison.OrdinalIgnoreCase)
|
|
|
+ && !string.Equals(type, "MusicVideo", StringComparison.OrdinalIgnoreCase);
|
|
|
}
|
|
|
|
|
|
- return false;
|
|
|
+ return string.Equals(name, "TheTVDB", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(name, "Screen Grabber", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(name, "TheAudioDB", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(name, "Emby Designs", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(name, "Image Extractor", StringComparison.OrdinalIgnoreCase);
|
|
|
}
|
|
|
|
|
|
var metadataOptions = ServerConfigurationManager.Configuration.MetadataOptions
|
|
@@ -561,8 +487,7 @@ namespace MediaBrowser.Api.Library
|
|
|
|
|
|
foreach (var type in types)
|
|
|
{
|
|
|
- ImageOption[] defaultImageOptions = null;
|
|
|
- TypeOptions.DefaultImageOptions.TryGetValue(type, out defaultImageOptions);
|
|
|
+ TypeOptions.DefaultImageOptions.TryGetValue(type, out var defaultImageOptions);
|
|
|
|
|
|
typeOptions.Add(new LibraryTypeOptions
|
|
|
{
|
|
@@ -609,8 +534,6 @@ namespace MediaBrowser.Api.Library
|
|
|
|
|
|
public object Get(GetSimilarItems request)
|
|
|
{
|
|
|
- var user = !request.UserId.Equals(Guid.Empty) ? _userManager.GetUserById(request.UserId) : null;
|
|
|
-
|
|
|
var item = string.IsNullOrEmpty(request.Id) ?
|
|
|
(!request.UserId.Equals(Guid.Empty) ? _libraryManager.GetUserRootFolder() :
|
|
|
_libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);
|
|
@@ -668,7 +591,7 @@ namespace MediaBrowser.Api.Library
|
|
|
// ExcludeArtistIds
|
|
|
if (!string.IsNullOrEmpty(request.ExcludeArtistIds))
|
|
|
{
|
|
|
- query.ExcludeArtistIds = BaseApiService.GetGuids(request.ExcludeArtistIds);
|
|
|
+ query.ExcludeArtistIds = GetGuids(request.ExcludeArtistIds);
|
|
|
}
|
|
|
|
|
|
List<BaseItem> itemsResult;
|
|
@@ -689,7 +612,6 @@ namespace MediaBrowser.Api.Library
|
|
|
var result = new QueryResult<BaseItemDto>
|
|
|
{
|
|
|
Items = returnList,
|
|
|
-
|
|
|
TotalRecordCount = itemsResult.Count
|
|
|
};
|
|
|
|
|
@@ -919,12 +841,10 @@ namespace MediaBrowser.Api.Library
|
|
|
|
|
|
private BaseItem TranslateParentItem(BaseItem item, User user)
|
|
|
{
|
|
|
- if (item.GetParent() is AggregateFolder)
|
|
|
- {
|
|
|
- return _libraryManager.GetUserRootFolder().GetChildren(user, true).FirstOrDefault(i => i.PhysicalLocations.Contains(item.Path));
|
|
|
- }
|
|
|
-
|
|
|
- return item;
|
|
|
+ return item.GetParent() is AggregateFolder
|
|
|
+ ? _libraryManager.GetUserRootFolder().GetChildren(user, true)
|
|
|
+ .FirstOrDefault(i => i.PhysicalLocations.Contains(item.Path))
|
|
|
+ : item;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1086,7 +1006,7 @@ namespace MediaBrowser.Api.Library
|
|
|
var item = string.IsNullOrEmpty(request.Id)
|
|
|
? (!request.UserId.Equals(Guid.Empty)
|
|
|
? _libraryManager.GetUserRootFolder()
|
|
|
- : (Folder)_libraryManager.RootFolder)
|
|
|
+ : _libraryManager.RootFolder)
|
|
|
: _libraryManager.GetItemById(request.Id);
|
|
|
|
|
|
if (item == null)
|
|
@@ -1094,18 +1014,13 @@ namespace MediaBrowser.Api.Library
|
|
|
throw new ResourceNotFoundException("Item not found.");
|
|
|
}
|
|
|
|
|
|
- BaseItem[] themeItems = Array.Empty<BaseItem>();
|
|
|
+ IEnumerable<BaseItem> themeItems;
|
|
|
|
|
|
while (true)
|
|
|
{
|
|
|
- themeItems = item.GetThemeSongs().ToArray();
|
|
|
-
|
|
|
- if (themeItems.Length > 0)
|
|
|
- {
|
|
|
- break;
|
|
|
- }
|
|
|
+ themeItems = item.GetThemeSongs();
|
|
|
|
|
|
- if (!request.InheritFromParent)
|
|
|
+ if (themeItems.Any() || !request.InheritFromParent)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
@@ -1119,11 +1034,9 @@ namespace MediaBrowser.Api.Library
|
|
|
}
|
|
|
|
|
|
var dtoOptions = GetDtoOptions(_authContext, request);
|
|
|
-
|
|
|
- var dtos = themeItems
|
|
|
- .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item));
|
|
|
-
|
|
|
- var items = dtos.ToArray();
|
|
|
+ var items = themeItems
|
|
|
+ .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item))
|
|
|
+ .ToArray();
|
|
|
|
|
|
return new ThemeMediaResult
|
|
|
{
|
|
@@ -1140,9 +1053,7 @@ namespace MediaBrowser.Api.Library
|
|
|
/// <returns>System.Object.</returns>
|
|
|
public object Get(GetThemeVideos request)
|
|
|
{
|
|
|
- var result = GetThemeVideos(request);
|
|
|
-
|
|
|
- return ToOptimizedResult(result);
|
|
|
+ return ToOptimizedResult(GetThemeVideos(request));
|
|
|
}
|
|
|
|
|
|
public ThemeMediaResult GetThemeVideos(GetThemeVideos request)
|
|
@@ -1152,7 +1063,7 @@ namespace MediaBrowser.Api.Library
|
|
|
var item = string.IsNullOrEmpty(request.Id)
|
|
|
? (!request.UserId.Equals(Guid.Empty)
|
|
|
? _libraryManager.GetUserRootFolder()
|
|
|
- : (Folder)_libraryManager.RootFolder)
|
|
|
+ : _libraryManager.RootFolder)
|
|
|
: _libraryManager.GetItemById(request.Id);
|
|
|
|
|
|
if (item == null)
|
|
@@ -1160,18 +1071,13 @@ namespace MediaBrowser.Api.Library
|
|
|
throw new ResourceNotFoundException("Item not found.");
|
|
|
}
|
|
|
|
|
|
- BaseItem[] themeItems = Array.Empty<BaseItem>();
|
|
|
+ IEnumerable<BaseItem> themeItems;
|
|
|
|
|
|
while (true)
|
|
|
{
|
|
|
- themeItems = item.GetThemeVideos().ToArray();
|
|
|
-
|
|
|
- if (themeItems.Length > 0)
|
|
|
- {
|
|
|
- break;
|
|
|
- }
|
|
|
+ themeItems = item.GetThemeVideos();
|
|
|
|
|
|
- if (!request.InheritFromParent)
|
|
|
+ if (themeItems.Any() || !request.InheritFromParent)
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
@@ -1186,10 +1092,9 @@ namespace MediaBrowser.Api.Library
|
|
|
|
|
|
var dtoOptions = GetDtoOptions(_authContext, request);
|
|
|
|
|
|
- var dtos = themeItems
|
|
|
- .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item));
|
|
|
-
|
|
|
- var items = dtos.ToArray();
|
|
|
+ var items = themeItems
|
|
|
+ .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, user, item))
|
|
|
+ .ToArray();
|
|
|
|
|
|
return new ThemeMediaResult
|
|
|
{
|