aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-07-16 12:03:28 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-07-16 12:03:28 -0400
commitc1ad234b7993e294a8342242bc0ce4a649ca5479 (patch)
tree902fcebb9b821107af06264e59029a66aeb0975f
parent682dea1d70aa3cb635f726e853df12772033c531 (diff)
Added album soundtrack links
-rw-r--r--MediaBrowser.Common/Configuration/ConfigurationHelper.cs2
-rw-r--r--MediaBrowser.Controller/Dto/DtoBuilder.cs242
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs6
-rw-r--r--MediaBrowser.Model/Entities/MetadataProviders.cs1
-rw-r--r--MediaBrowser.Model/Querying/ItemFields.cs5
-rw-r--r--MediaBrowser.ServerApplication/App.xaml.cs4
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)
{