diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-07-16 12:03:28 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-07-16 12:03:28 -0400 |
| commit | c1ad234b7993e294a8342242bc0ce4a649ca5479 (patch) | |
| tree | 902fcebb9b821107af06264e59029a66aeb0975f | |
| parent | 682dea1d70aa3cb635f726e853df12772033c531 (diff) | |
Added album soundtrack links
| -rw-r--r-- | MediaBrowser.Common/Configuration/ConfigurationHelper.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Dto/DtoBuilder.cs | 242 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dto/BaseItemDto.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Model/Entities/MetadataProviders.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Model/Querying/ItemFields.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.ServerApplication/App.xaml.cs | 4 |
6 files changed, 211 insertions, 49 deletions
diff --git a/MediaBrowser.Common/Configuration/ConfigurationHelper.cs b/MediaBrowser.Common/Configuration/ConfigurationHelper.cs index fc74a6a4d..1f86c5c02 100644 --- a/MediaBrowser.Common/Configuration/ConfigurationHelper.cs +++ b/MediaBrowser.Common/Configuration/ConfigurationHelper.cs @@ -31,7 +31,7 @@ namespace MediaBrowser.Common.Configuration configuration = xmlSerializer.DeserializeFromBytes(type, buffer); } - catch (FileNotFoundException) + catch (Exception) { configuration = Activator.CreateInstance(type); } diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs index 85484d161..7086b2c4f 100644 --- a/MediaBrowser.Controller/Dto/DtoBuilder.cs +++ b/MediaBrowser.Controller/Dto/DtoBuilder.cs @@ -95,6 +95,37 @@ namespace MediaBrowser.Controller.Dto AttachBasicFields(dto, item, fields); + 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); + } + } + // Make sure all the tasks we kicked off have completed. if (tasks.Count > 0) { @@ -104,6 +135,132 @@ 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> @@ -235,10 +392,7 @@ namespace MediaBrowser.Controller.Dto dto.OriginalRunTimeTicks = item.OriginalRunTimeTicks; } - if (fields.Contains(ItemFields.DisplayMediaType)) - { - dto.DisplayMediaType = item.DisplayMediaType; - } + dto.DisplayMediaType = item.DisplayMediaType; if (fields.Contains(ItemFields.MetadataSettings)) { @@ -436,30 +590,27 @@ namespace MediaBrowser.Controller.Dto } // Add audio info - if (fields.Contains(ItemFields.AudioInfo)) + var audio = item as Audio; + if (audio != null) { - var audio = item as Audio; - if (audio != null) - { - dto.Album = audio.Album; - dto.AlbumArtist = audio.AlbumArtist; - dto.Artists = new[] { audio.Artist }; - } + dto.Album = audio.Album; + dto.AlbumArtist = audio.AlbumArtist; + dto.Artists = new[] { audio.Artist }; + } - var album = item as MusicAlbum; + var album = item as MusicAlbum; - if (album != null) - { - var songs = album.RecursiveChildren.OfType<Audio>().ToList(); + if (album != null) + { + var songs = album.RecursiveChildren.OfType<Audio>().ToList(); - dto.AlbumArtist = songs.Select(i => i.AlbumArtist).FirstOrDefault(i => !string.IsNullOrEmpty(i)); + dto.AlbumArtist = songs.Select(i => i.AlbumArtist).FirstOrDefault(i => !string.IsNullOrEmpty(i)); - dto.Artists = - songs.Select(i => i.Artist ?? string.Empty) - .Where(i => !string.IsNullOrEmpty(i)) - .Distinct(StringComparer.OrdinalIgnoreCase) - .ToArray(); - } + dto.Artists = + songs.Select(i => i.Artist ?? string.Empty) + .Where(i => !string.IsNullOrEmpty(i)) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToArray(); } // Add video info @@ -510,36 +661,33 @@ namespace MediaBrowser.Controller.Dto dto.IndexNumberEnd = episode.IndexNumberEnd; } - if (fields.Contains(ItemFields.SeriesInfo)) - { - // Add SeriesInfo - var series = item as Series; + // Add SeriesInfo + var series = item as Series; - if (series != null) - { - dto.AirDays = series.AirDays; - dto.AirTime = series.AirTime; - dto.Status = series.Status; - } + if (series != null) + { + dto.AirDays = series.AirDays; + dto.AirTime = series.AirTime; + dto.Status = series.Status; + } - if (episode != null) - { - series = item.FindParent<Series>(); + if (episode != null) + { + series = item.FindParent<Series>(); - dto.SeriesId = GetClientItemId(series); - dto.SeriesName = series.Name; - } + dto.SeriesId = GetClientItemId(series); + dto.SeriesName = series.Name; + } - // Add SeasonInfo - var season = item as Season; + // Add SeasonInfo + var season = item as Season; - if (season != null) - { - series = item.FindParent<Series>(); + if (season != null) + { + series = item.FindParent<Series>(); - dto.SeriesId = GetClientItemId(series); - dto.SeriesName = series.Name; - } + dto.SeriesId = GetClientItemId(series); + dto.SeriesName = series.Name; } var game = item as Game; diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index 6519ad697..404b11bad 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -163,6 +163,12 @@ namespace MediaBrowser.Model.Dto public List<MediaUrl> RemoteTrailers { get; set; } /// <summary> + /// Gets or sets the soundtrack ids. + /// </summary> + /// <value>The soundtrack ids.</value> + public string[] SoundtrackIds { get; set; } + + /// <summary> /// Gets or sets the provider ids. /// </summary> /// <value>The provider ids.</value> diff --git a/MediaBrowser.Model/Entities/MetadataProviders.cs b/MediaBrowser.Model/Entities/MetadataProviders.cs index 3c7b2ff01..b089b668c 100644 --- a/MediaBrowser.Model/Entities/MetadataProviders.cs +++ b/MediaBrowser.Model/Entities/MetadataProviders.cs @@ -6,6 +6,7 @@ namespace MediaBrowser.Model.Entities /// </summary> public enum MetadataProviders { + Gamesdb, /// <summary> /// The imdb /// </summary> diff --git a/MediaBrowser.Model/Querying/ItemFields.cs b/MediaBrowser.Model/Querying/ItemFields.cs index b6f452d7c..d38ffb84d 100644 --- a/MediaBrowser.Model/Querying/ItemFields.cs +++ b/MediaBrowser.Model/Querying/ItemFields.cs @@ -132,6 +132,11 @@ namespace MediaBrowser.Model.Querying SeriesInfo, /// <summary> + /// The soundtrack ids + /// </summary> + SoundtrackIds, + + /// <summary> /// The sort name of the item /// </summary> SortName, diff --git a/MediaBrowser.ServerApplication/App.xaml.cs b/MediaBrowser.ServerApplication/App.xaml.cs index db923e5e2..db008c3d9 100644 --- a/MediaBrowser.ServerApplication/App.xaml.cs +++ b/MediaBrowser.ServerApplication/App.xaml.cs @@ -38,7 +38,9 @@ namespace MediaBrowser.ServerApplication { bool createdNew; - _singleInstanceMutex = new Mutex(true, @"Local\" + typeof(App).Assembly.GetName().Name, out createdNew); + var runningPath = Process.GetCurrentProcess().MainModule.FileName.Replace(Path.DirectorySeparatorChar.ToString(), string.Empty); + + _singleInstanceMutex = new Mutex(true, @"Local\" + runningPath, out createdNew); if (!createdNew) { |
