diff --git a/MediaBrowser.Api/Music/InstantMixService.cs b/MediaBrowser.Api/Music/InstantMixService.cs
index cfb826a134..78c6a8bf41 100644
--- a/MediaBrowser.Api/Music/InstantMixService.cs
+++ b/MediaBrowser.Api/Music/InstantMixService.cs
@@ -73,44 +73,44 @@ namespace MediaBrowser.Api.Music
public object Get(GetInstantMixFromArtistId request)
{
- var item = (MusicArtist)_libraryManager.GetItemById(request.Id);
+ var item = _libraryManager.GetItemById(request.Id);
var user = _userManager.GetUserById(request.UserId.Value);
- var items = _musicManager.GetInstantMixFromArtist(item.Name, user);
+ var items = _musicManager.GetInstantMixFromItem(item, user);
return GetResult(items, user, request);
}
public object Get(GetInstantMixFromMusicGenreId request)
{
- var item = (MusicGenre)_libraryManager.GetItemById(request.Id);
+ var item = _libraryManager.GetItemById(request.Id);
var user = _userManager.GetUserById(request.UserId.Value);
- var items = _musicManager.GetInstantMixFromGenres(new[] { item.Name }, user);
+ var items = _musicManager.GetInstantMixFromItem(item, user);
return GetResult(items, user, request);
}
public object Get(GetInstantMixFromSong request)
{
- var item = (Audio)_libraryManager.GetItemById(request.Id);
+ var item = _libraryManager.GetItemById(request.Id);
var user = _userManager.GetUserById(request.UserId.Value);
- var items = _musicManager.GetInstantMixFromSong(item, user);
+ var items = _musicManager.GetInstantMixFromItem(item, user);
return GetResult(items, user, request);
}
public object Get(GetInstantMixFromAlbum request)
{
- var album = (MusicAlbum)_libraryManager.GetItemById(request.Id);
+ var album = _libraryManager.GetItemById(request.Id);
var user = _userManager.GetUserById(request.UserId.Value);
- var items = _musicManager.GetInstantMixFromAlbum(album, user);
+ var items = _musicManager.GetInstantMixFromItem(album, user);
return GetResult(items, user, request);
}
@@ -121,7 +121,7 @@ namespace MediaBrowser.Api.Music
var user = _userManager.GetUserById(request.UserId.Value);
- var items = _musicManager.GetInstantMixFromPlaylist(playlist, user);
+ var items = _musicManager.GetInstantMixFromItem(playlist, user);
return GetResult(items, user, request);
}
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 77f6dc1035..b3610bc389 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -824,7 +824,7 @@ namespace MediaBrowser.Api.Playback
{
get
{
- return true;
+ return false;
}
}
diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs
index cb0c54674a..bf5c04540b 100644
--- a/MediaBrowser.Api/StartupWizardService.cs
+++ b/MediaBrowser.Api/StartupWizardService.cs
@@ -62,7 +62,7 @@ namespace MediaBrowser.Api
{
_config.Configuration.IsStartupWizardCompleted = true;
_config.Configuration.EnableLocalizedGuids = true;
- _config.Configuration.StoreArtistsInMetadata = true;
+ _config.Configuration.MergeMetadataAndImagesByName = true;
_config.Configuration.EnableStandaloneMetadata = true;
_config.Configuration.EnableLibraryMetadataSubFolder = true;
_config.SaveConfiguration();
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index c6ec530180..80ab72db7a 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -228,7 +228,7 @@ namespace MediaBrowser.Api.UserLibrary
///
/// The user id.
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
[ApiMember(Name = "Limit", Description = "Limit", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int Limit { get; set; }
@@ -304,81 +304,15 @@ namespace MediaBrowser.Api.UserLibrary
{
var user = _userManager.GetUserById(request.UserId);
- var includeTypes = string.IsNullOrWhiteSpace(request.IncludeItemTypes)
- ? new string[] { }
- : request.IncludeItemTypes.Split(',');
-
- var currentUser = user;
-
- Func filter = i =>
+ var list = _userViewManager.GetLatestItems(new LatestItemsQuery
{
- if (includeTypes.Length > 0)
- {
- if (!includeTypes.Contains(i.GetType().Name, StringComparer.OrdinalIgnoreCase))
- {
- return false;
- }
- }
-
- if (request.IsPlayed.HasValue)
- {
- var val = request.IsPlayed.Value;
- if (i.IsPlayed(currentUser) != val)
- {
- return false;
- }
- }
-
- return i.LocationType != LocationType.Virtual && !i.IsFolder;
- };
-
- // Avoid implicitly captured closure
- var libraryItems = string.IsNullOrEmpty(request.ParentId) && user != null ?
- GetItemsConfiguredForLatest(user, filter) :
- GetAllLibraryItems(request.UserId, _userManager, _libraryManager, request.ParentId, filter);
-
- libraryItems = libraryItems.OrderByDescending(i => i.DateCreated);
-
- if (request.IsPlayed.HasValue)
- {
- var takeLimit = request.Limit * 20;
- libraryItems = libraryItems.Take(takeLimit);
- }
-
- // Avoid implicitly captured closure
- var items = libraryItems
- .ToList();
-
- var list = new List>>();
-
- foreach (var item in items)
- {
- // Only grab the index container for media
- var container = item.IsFolder || !request.GroupItems ? null : item.LatestItemsIndexContainer;
-
- if (container == null)
- {
- list.Add(new Tuple>(null, new List { item }));
- }
- else
- {
- var current = list.FirstOrDefault(i => i.Item1 != null && i.Item1.Id == container.Id);
-
- if (current != null)
- {
- current.Item2.Add(item);
- }
- else
- {
- list.Add(new Tuple>(container, new List { item }));
- }
- }
-
- if (list.Count >= request.Limit)
- {
- break;
- }
- }
+ GroupItems = request.GroupItems,
+ IncludeItemTypes = (request.IncludeItemTypes ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).ToArray(),
+ IsPlayed = request.IsPlayed,
+ Limit = request.Limit,
+ ParentId = request.ParentId,
+ UserId = request.UserId
+ });
var options = GetDtoOptions(request);
@@ -403,18 +337,6 @@ namespace MediaBrowser.Api.UserLibrary
return ToOptimizedResult(dtos.ToList());
}
- private IEnumerable GetItemsConfiguredForLatest(User user, Func filter)
- {
- // Avoid implicitly captured closure
- var currentUser = user;
-
- return user.RootFolder.GetChildren(user, true)
- .OfType()
- .Where(i => !user.Configuration.LatestItemsExcludes.Contains(i.Id.ToString("N")))
- .SelectMany(i => i.GetRecursiveChildren(currentUser, filter))
- .DistinctBy(i => i.Id);
- }
-
public async Task