Front-load soundtrack links

This commit is contained in:
Luke Pulverenti
2013-08-30 19:55:17 -04:00
parent d0f3262ba3
commit e031694a99
9 changed files with 193 additions and 163 deletions

View File

@@ -104,33 +104,9 @@ namespace MediaBrowser.Controller.Dto
if (fields.Contains(ItemFields.SoundtrackIds))
{
var series = item as Series;
if (series != null)
{
AttachSoundtrackIds(dto, series, user);
}
var movie = item as Movie;
if (movie != null)
{
AttachSoundtrackIds(dto, movie, user);
}
var album = item as MusicAlbum;
if (album != null)
{
AttachSoundtrackIds(dto, album, user);
}
var game = item as Game;
if (game != null)
{
AttachSoundtrackIds(dto, game, user);
}
dto.SoundtrackIds = item.SoundtrackIds
.Select(i => i.ToString("N"))
.ToArray();
}
// Make sure all the tasks we kicked off have completed.
@@ -142,132 +118,6 @@ namespace MediaBrowser.Controller.Dto
return dto;
}
private void AttachSoundtrackIds(BaseItemDto dto, Movie item, User user)
{
var tmdb = item.GetProviderId(MetadataProviders.Tmdb);
if (string.IsNullOrEmpty(tmdb))
{
return;
}
var recursiveChildren = user == null
? _libraryManager.RootFolder.RecursiveChildren
: user.RootFolder.GetRecursiveChildren(user);
dto.SoundtrackIds = recursiveChildren
.Where(i =>
{
if (!string.IsNullOrEmpty(tmdb) &&
string.Equals(tmdb, i.GetProviderId(MetadataProviders.Tmdb), StringComparison.OrdinalIgnoreCase) &&
i is MusicAlbum)
{
return true;
}
return false;
})
.Select(GetClientItemId)
.ToArray();
}
private void AttachSoundtrackIds(BaseItemDto dto, Series item, User user)
{
var tvdb = item.GetProviderId(MetadataProviders.Tvdb);
if (string.IsNullOrEmpty(tvdb))
{
return;
}
var recursiveChildren = user == null
? _libraryManager.RootFolder.RecursiveChildren
: user.RootFolder.GetRecursiveChildren(user);
dto.SoundtrackIds = recursiveChildren
.Where(i =>
{
if (!string.IsNullOrEmpty(tvdb) &&
string.Equals(tvdb, i.GetProviderId(MetadataProviders.Tvdb), StringComparison.OrdinalIgnoreCase) &&
i is MusicAlbum)
{
return true;
}
return false;
})
.Select(GetClientItemId)
.ToArray();
}
private void AttachSoundtrackIds(BaseItemDto dto, Game item, User user)
{
var gamesdb = item.GetProviderId(MetadataProviders.Gamesdb);
if (string.IsNullOrEmpty(gamesdb))
{
return;
}
var recursiveChildren = user == null
? _libraryManager.RootFolder.RecursiveChildren
: user.RootFolder.GetRecursiveChildren(user);
dto.SoundtrackIds = recursiveChildren
.Where(i =>
{
if (!string.IsNullOrEmpty(gamesdb) &&
string.Equals(gamesdb, i.GetProviderId(MetadataProviders.Gamesdb), StringComparison.OrdinalIgnoreCase) &&
i is MusicAlbum)
{
return true;
}
return false;
})
.Select(GetClientItemId)
.ToArray();
}
private void AttachSoundtrackIds(BaseItemDto dto, MusicAlbum item, User user)
{
var tmdb = item.GetProviderId(MetadataProviders.Tmdb);
var tvdb = item.GetProviderId(MetadataProviders.Tvdb);
var gamesdb = item.GetProviderId(MetadataProviders.Gamesdb);
if (string.IsNullOrEmpty(tmdb) && string.IsNullOrEmpty(tvdb) && string.IsNullOrEmpty(gamesdb))
{
return;
}
var recursiveChildren = user == null
? _libraryManager.RootFolder.RecursiveChildren
: user.RootFolder.GetRecursiveChildren(user);
dto.SoundtrackIds = recursiveChildren
.Where(i =>
{
if (!string.IsNullOrEmpty(tmdb) &&
string.Equals(tmdb, i.GetProviderId(MetadataProviders.Tmdb), StringComparison.OrdinalIgnoreCase) &&
i is Movie)
{
return true;
}
if (!string.IsNullOrEmpty(tvdb) &&
string.Equals(tvdb, i.GetProviderId(MetadataProviders.Tvdb), StringComparison.OrdinalIgnoreCase) &&
i is Series)
{
return true;
}
if (!string.IsNullOrEmpty(gamesdb) &&
string.Equals(gamesdb, i.GetProviderId(MetadataProviders.Gamesdb), StringComparison.OrdinalIgnoreCase) &&
i is Game)
{
return true;
}
return false;
})
.Select(GetClientItemId)
.ToArray();
}
/// <summary>
/// Attaches the user specific info.
/// </summary>
@@ -716,8 +566,20 @@ namespace MediaBrowser.Controller.Dto
{
SetMusicVideoProperties(dto, musicVideo);
}
var book = item as Book;
if (book != null)
{
SetBookProperties(dto, book);
}
}
private void SetBookProperties(BaseItemDto dto, Book item)
{
dto.SeriesName = item.SeriesName;
}
private void SetMusicVideoProperties(BaseItemDto dto, MusicVideo item)
{
if (!string.IsNullOrEmpty(item.Album))

View File

@@ -23,6 +23,11 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
public abstract class BaseItem : IHasProviderIds
{
/// <summary>
/// MusicAlbums in the library that are the soundtrack for this item
/// </summary>
public List<Guid> SoundtrackIds { get; set; }
protected BaseItem()
{
Genres = new List<string>();
@@ -38,6 +43,7 @@ namespace MediaBrowser.Controller.Entities
Tags = new List<string>();
ThemeSongIds = new List<Guid>();
ThemeVideoIds = new List<Guid>();
SoundtrackIds = new List<Guid>();
LocalTrailerIds = new List<Guid>();
LockedFields = new List<MetadataFields>();
}