|
|
|
@ -465,6 +465,16 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
|
|
|
|
|
private async Task<QueryResult<ServerItem>> GetUserItems(BaseItem item, StubType? stubType, User user, SortCriteria sort, int? startIndex, int? limit)
|
|
|
|
|
{
|
|
|
|
|
if (item is MusicGenre)
|
|
|
|
|
{
|
|
|
|
|
return GetMusicGenreItems(item, null, user, sort, startIndex, limit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (item is MusicArtist)
|
|
|
|
|
{
|
|
|
|
|
return GetMusicArtistItems(item, null, user, sort, startIndex, limit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (stubType.HasValue)
|
|
|
|
|
{
|
|
|
|
|
if (stubType.Value == StubType.People)
|
|
|
|
@ -477,7 +487,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
|
|
|
|
|
var result = new QueryResult<ServerItem>
|
|
|
|
|
{
|
|
|
|
|
Items = items.Select(i => new ServerItem { Item = i, StubType = StubType.Folder }).ToArray(),
|
|
|
|
|
Items = items.Select(i => new ServerItem(i)).ToArray(),
|
|
|
|
|
TotalRecordCount = items.Length
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -493,11 +503,6 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
return ApplyPaging(new QueryResult<ServerItem>(), startIndex, limit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (item is MusicGenre)
|
|
|
|
|
{
|
|
|
|
|
return GetMusicGenreItems(item, null, user, sort, startIndex, limit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var folder = (Folder)item;
|
|
|
|
|
|
|
|
|
|
var query = new InternalItemsQuery
|
|
|
|
@ -518,6 +523,25 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
return ToResult(queryResult);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private QueryResult<ServerItem> GetMusicArtistItems(BaseItem item, Guid? parentId, User user, SortCriteria sort, int? startIndex, int? limit)
|
|
|
|
|
{
|
|
|
|
|
var query = new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
Recursive = true,
|
|
|
|
|
ParentId = parentId,
|
|
|
|
|
ArtistIds = new[] { item.Id.ToString("N") },
|
|
|
|
|
IncludeItemTypes = new[] { typeof(MusicAlbum).Name },
|
|
|
|
|
Limit = limit,
|
|
|
|
|
StartIndex = startIndex
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
SetSorting(query, sort, false);
|
|
|
|
|
|
|
|
|
|
var result = _libraryManager.GetItemsResult(query);
|
|
|
|
|
|
|
|
|
|
return ToResult(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private QueryResult<ServerItem> GetMusicGenreItems(BaseItem item, Guid? parentId, User user, SortCriteria sort, int? startIndex, int? limit)
|
|
|
|
|
{
|
|
|
|
|
var query = new InternalItemsQuery(user)
|
|
|
|
@ -541,10 +565,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
{
|
|
|
|
|
var serverItems = result
|
|
|
|
|
.Items
|
|
|
|
|
.Select(i => new ServerItem
|
|
|
|
|
{
|
|
|
|
|
Item = i
|
|
|
|
|
})
|
|
|
|
|
.Select(i => new ServerItem(i))
|
|
|
|
|
.ToArray();
|
|
|
|
|
|
|
|
|
|
return new QueryResult<ServerItem>
|
|
|
|
@ -578,11 +599,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var serverItems = itemsResult.Items.Select(i => new ServerItem
|
|
|
|
|
{
|
|
|
|
|
Item = i,
|
|
|
|
|
StubType = null
|
|
|
|
|
})
|
|
|
|
|
var serverItems = itemsResult.Items.Select(i => new ServerItem(i))
|
|
|
|
|
.ToArray();
|
|
|
|
|
|
|
|
|
|
return new QueryResult<ServerItem>
|
|
|
|
@ -603,7 +620,7 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
{
|
|
|
|
|
return DidlBuilder.IsIdRoot(id)
|
|
|
|
|
|
|
|
|
|
? new ServerItem { Item = user.RootFolder }
|
|
|
|
|
? new ServerItem(user.RootFolder)
|
|
|
|
|
: ParseItemId(id, user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -638,16 +655,15 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
{
|
|
|
|
|
var item = _libraryManager.GetItemById(itemId);
|
|
|
|
|
|
|
|
|
|
return new ServerItem
|
|
|
|
|
return new ServerItem(item)
|
|
|
|
|
{
|
|
|
|
|
Item = item,
|
|
|
|
|
StubType = stubType
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Logger.Error("Error parsing item Id: {0}. Returning user root folder.", id);
|
|
|
|
|
|
|
|
|
|
return new ServerItem { Item = user.RootFolder };
|
|
|
|
|
return new ServerItem(user.RootFolder);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -655,6 +671,16 @@ namespace Emby.Dlna.ContentDirectory
|
|
|
|
|
{
|
|
|
|
|
public BaseItem Item { get; set; }
|
|
|
|
|
public StubType? StubType { get; set; }
|
|
|
|
|
|
|
|
|
|
public ServerItem(BaseItem item)
|
|
|
|
|
{
|
|
|
|
|
Item = item;
|
|
|
|
|
|
|
|
|
|
if (item is IItemByName && !(item is Folder))
|
|
|
|
|
{
|
|
|
|
|
StubType = Dlna.ContentDirectory.StubType.Folder;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum StubType
|
|
|
|
|