aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/ItemRefreshService.cs2
-rw-r--r--MediaBrowser.Api/ItemUpdateService.cs26
-rw-r--r--MediaBrowser.Api/Music/AlbumsService.cs10
-rw-r--r--MediaBrowser.Api/SearchService.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs45
5 files changed, 56 insertions, 29 deletions
diff --git a/MediaBrowser.Api/ItemRefreshService.cs b/MediaBrowser.Api/ItemRefreshService.cs
index 78bc14ab0..6a7b4826c 100644
--- a/MediaBrowser.Api/ItemRefreshService.cs
+++ b/MediaBrowser.Api/ItemRefreshService.cs
@@ -53,7 +53,7 @@ namespace MediaBrowser.Api
var albums = _libraryManager.RootFolder
.GetRecursiveChildren()
.OfType<MusicAlbum>()
- .Where(i => i.HasArtist(item.Name))
+ .Where(i => i.HasAnyArtist(item.Name))
.ToList();
var musicArtists = albums
diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs
index bdcad73b0..86689f5cf 100644
--- a/MediaBrowser.Api/ItemUpdateService.cs
+++ b/MediaBrowser.Api/ItemUpdateService.cs
@@ -389,23 +389,33 @@ namespace MediaBrowser.Api
game.PlayersSupported = request.Players;
}
- var song = item as Audio;
-
- if (song != null)
+ var hasAlbumArtists = item as IHasAlbumArtist;
+ if (hasAlbumArtists != null)
{
- song.Album = request.Album;
- song.AlbumArtists = request
+ hasAlbumArtists.AlbumArtists = request
.AlbumArtists
.Select(i => i.Name)
.ToList();
- song.Artists = request.Artists.ToList();
}
- var musicVideo = item as MusicVideo;
+ var hasArtists = item as IHasArtist;
+ if (hasArtists != null)
+ {
+ hasArtists.Artists = request
+ .ArtistItems
+ .Select(i => i.Name)
+ .ToList();
+ }
+
+ var song = item as Audio;
+ if (song != null)
+ {
+ song.Album = request.Album;
+ }
+ var musicVideo = item as MusicVideo;
if (musicVideo != null)
{
- musicVideo.Artists = request.Artists.ToList();
musicVideo.Album = request.Album;
}
diff --git a/MediaBrowser.Api/Music/AlbumsService.cs b/MediaBrowser.Api/Music/AlbumsService.cs
index 76c6c5776..a1c98addb 100644
--- a/MediaBrowser.Api/Music/AlbumsService.cs
+++ b/MediaBrowser.Api/Music/AlbumsService.cs
@@ -77,15 +77,13 @@ namespace MediaBrowser.Api.Music
var album1 = (MusicAlbum)item1;
var album2 = (MusicAlbum)item2;
- var artists1 = album1.GetRecursiveChildren(i => i is IHasArtist)
- .Cast<IHasArtist>()
- .SelectMany(i => i.AllArtists)
+ var artists1 = album1
+ .AllArtists
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
- var artists2 = album2.GetRecursiveChildren(i => i is IHasArtist)
- .Cast<IHasArtist>()
- .SelectMany(i => i.AllArtists)
+ var artists2 = album2
+ .AllArtists
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
diff --git a/MediaBrowser.Api/SearchService.cs b/MediaBrowser.Api/SearchService.cs
index ee48946d5..2cca72593 100644
--- a/MediaBrowser.Api/SearchService.cs
+++ b/MediaBrowser.Api/SearchService.cs
@@ -211,7 +211,7 @@ namespace MediaBrowser.Api
result.SongCount = album.Tracks.Count();
result.Artists = album.Artists.ToArray();
- result.AlbumArtist = album.AlbumArtists.FirstOrDefault();
+ result.AlbumArtist = album.AlbumArtist;
}
var song = item as Audio;
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 0b636e93b..256ae3625 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -60,6 +60,9 @@ namespace MediaBrowser.Api.UserLibrary
[ApiMember(Name = "Artists", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Artists { get; set; }
+ [ApiMember(Name = "ArtistIds", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
+ public string ArtistIds { get; set; }
+
[ApiMember(Name = "Albums", Description = "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Albums { get; set; }
@@ -600,6 +603,8 @@ namespace MediaBrowser.Api.UserLibrary
private bool ApplyAdditionalFilters(GetItems request, BaseItem i, User user, bool isPreFiltered, ILibraryManager libraryManager)
{
+ var video = i as Video;
+
if (!isPreFiltered)
{
var mediaTypes = request.GetMediaTypes();
@@ -647,7 +652,6 @@ namespace MediaBrowser.Api.UserLibrary
if (request.Is3D.HasValue)
{
var val = request.Is3D.Value;
- var video = i as Video;
if (video == null || val != video.Video3DFormat.HasValue)
{
@@ -658,7 +662,6 @@ namespace MediaBrowser.Api.UserLibrary
if (request.IsHD.HasValue)
{
var val = request.IsHD.Value;
- var video = i as Video;
if (video == null || val != video.IsHD)
{
@@ -800,8 +803,6 @@ namespace MediaBrowser.Api.UserLibrary
{
var val = request.HasSubtitles.Value;
- var video = i as Video;
-
if (video == null || val != video.HasSubtitles)
{
return false;
@@ -922,15 +923,10 @@ namespace MediaBrowser.Api.UserLibrary
}
// Filter by VideoType
- if (!string.IsNullOrEmpty(request.VideoTypes))
+ var videoTypes = request.GetVideoTypes();
+ if (video == null || !videoTypes.Contains(video.VideoType))
{
- var types = request.VideoTypes.Split(',');
-
- var video = i as Video;
- if (video == null || !types.Contains(video.VideoType.ToString(), StringComparer.OrdinalIgnoreCase))
- {
- return false;
- }
+ return false;
}
var imageTypes = request.GetImageTypes().ToList();
@@ -1015,13 +1011,36 @@ namespace MediaBrowser.Api.UserLibrary
}
// Artists
+ if (!string.IsNullOrEmpty(request.ArtistIds))
+ {
+ var artistIds = request.ArtistIds.Split('|');
+
+ var audio = i as IHasArtist;
+
+ if (!(audio != null && artistIds.Any(id =>
+ {
+ try
+ {
+ return audio.HasAnyArtist(libraryManager.GetItemById(id).Name);
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
+ })))
+ {
+ return false;
+ }
+ }
+
+ // Artists
if (!string.IsNullOrEmpty(request.Artists))
{
var artists = request.Artists.Split('|');
var audio = i as IHasArtist;
- if (!(audio != null && artists.Any(audio.HasArtist)))
+ if (!(audio != null && artists.Any(audio.HasAnyArtist)))
{
return false;
}