aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/Audio
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-08-24 15:52:19 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-08-24 15:52:19 -0400
commite441e2f53db0b587c9864fe91d7008a2344d147b (patch)
treec37b2148eb277671c7ee285c73b738542f279b22 /MediaBrowser.Controller/Entities/Audio
parent5e0f8fd8c486ac37e487786c10c2d3f9e1293ce8 (diff)
update active recordings
Diffstat (limited to 'MediaBrowser.Controller/Entities/Audio')
-rw-r--r--MediaBrowser.Controller/Entities/Audio/Audio.cs22
-rw-r--r--MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs16
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs62
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicArtist.cs20
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicGenre.cs1
5 files changed, 67 insertions, 54 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs
index 0781dc35b..e029a447e 100644
--- a/MediaBrowser.Controller/Entities/Audio/Audio.cs
+++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs
@@ -29,7 +29,7 @@ namespace MediaBrowser.Controller.Entities.Audio
/// </summary>
/// <value>The artist.</value>
[IgnoreDataMember]
- public List<string> Artists { get; set; }
+ public string[] Artists { get; set; }
[IgnoreDataMember]
public string[] AlbumArtists { get; set; }
@@ -42,7 +42,7 @@ namespace MediaBrowser.Controller.Entities.Audio
public Audio()
{
- Artists = new List<string>();
+ Artists = EmptyStringArray;
AlbumArtists = EmptyStringArray;
}
@@ -98,13 +98,23 @@ namespace MediaBrowser.Controller.Entities.Audio
}
[IgnoreDataMember]
- public List<string> AllArtists
+ public string[] AllArtists
{
get
{
- var list = AlbumArtists.ToList();
+ var list = new string[AlbumArtists.Length + Artists.Length];
- list.AddRange(Artists);
+ var index = 0;
+ foreach (var artist in AlbumArtists)
+ {
+ list[index] = artist;
+ index++;
+ }
+ foreach (var artist in AlbumArtists)
+ {
+ list[index] = artist;
+ index++;
+ }
return list;
@@ -160,7 +170,7 @@ namespace MediaBrowser.Controller.Entities.Audio
songKey = Album + "-" + songKey;
}
- var albumArtist = AlbumArtists.FirstOrDefault();
+ var albumArtist = AlbumArtists.Length == 0 ? null : AlbumArtists[0];
if (!string.IsNullOrWhiteSpace(albumArtist))
{
songKey = albumArtist + "-" + songKey;
diff --git a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs
index 6900699e5..b2dedada4 100644
--- a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs
+++ b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs
@@ -1,6 +1,4 @@
-using MediaBrowser.Controller.Library;
-using System.Collections.Generic;
-
+
namespace MediaBrowser.Controller.Entities.Audio
{
public interface IHasAlbumArtist
@@ -10,16 +8,8 @@ namespace MediaBrowser.Controller.Entities.Audio
public interface IHasArtist
{
- List<string> AllArtists { get; }
-
- List<string> Artists { get; set; }
- }
+ string[] AllArtists { get; }
- public static class HasArtistExtensions
- {
- public static bool HasAnyArtist(this IHasArtist hasArtist, string artist)
- {
- return NameExtensions.EqualsAny(hasArtist.AllArtists, artist);
- }
+ string[] Artists { get; set; }
}
}
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
index c35e81826..82f880b3f 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
@@ -10,7 +10,6 @@ using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Dto;
namespace MediaBrowser.Controller.Entities.Audio
{
@@ -20,11 +19,11 @@ namespace MediaBrowser.Controller.Entities.Audio
public class MusicAlbum : Folder, IHasAlbumArtist, IHasArtist, IHasMusicGenres, IHasLookupInfo<AlbumInfo>, IMetadataContainer
{
public string[] AlbumArtists { get; set; }
- public List<string> Artists { get; set; }
+ public string[] Artists { get; set; }
public MusicAlbum()
{
- Artists = new List<string>();
+ Artists = EmptyStringArray;
AlbumArtists = EmptyStringArray;
}
@@ -48,17 +47,22 @@ namespace MediaBrowser.Controller.Entities.Audio
public MusicArtist GetMusicArtist(DtoOptions options)
{
- var artist = GetParents().OfType<MusicArtist>().FirstOrDefault();
-
- if (artist == null)
+ var parents = GetParents();
+ foreach (var parent in parents)
{
- var name = AlbumArtist;
- if (!string.IsNullOrWhiteSpace(name))
+ var artist = parent as MusicArtist;
+ if (artist != null)
{
- artist = LibraryManager.GetArtist(name, options);
+ return artist;
}
}
- return artist;
+
+ var name = AlbumArtist;
+ if (!string.IsNullOrWhiteSpace(name))
+ {
+ return LibraryManager.GetArtist(name, options);
+ }
+ return null;
}
[IgnoreDataMember]
@@ -80,23 +84,32 @@ namespace MediaBrowser.Controller.Entities.Audio
}
[IgnoreDataMember]
- public List<string> AllArtists
+ public string[] AllArtists
{
get
{
- var list = AlbumArtists.ToList();
+ var list = new string[AlbumArtists.Length + Artists.Length];
- list.AddRange(Artists);
+ var index = 0;
+ foreach (var artist in AlbumArtists)
+ {
+ list[index] = artist;
+ index++;
+ }
+ foreach (var artist in AlbumArtists)
+ {
+ list[index] = artist;
+ index++;
+ }
return list;
-
}
}
[IgnoreDataMember]
public string AlbumArtist
{
- get { return AlbumArtists.FirstOrDefault(); }
+ get { return AlbumArtists.Length == 0 ? null : AlbumArtists[0]; }
}
[IgnoreDataMember]
@@ -110,11 +123,11 @@ namespace MediaBrowser.Controller.Entities.Audio
/// </summary>
/// <value>The tracks.</value>
[IgnoreDataMember]
- public IEnumerable<Audio> Tracks
+ public IEnumerable<BaseItem> Tracks
{
get
{
- return GetRecursiveChildren(i => i is Audio).Cast<Audio>();
+ return GetRecursiveChildren(i => i is Audio);
}
}
@@ -200,7 +213,7 @@ namespace MediaBrowser.Controller.Entities.Audio
public async Task RefreshAllMetadata(MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken)
{
- var items = GetRecursiveChildren().ToList();
+ var items = GetRecursiveChildren();
var totalItems = items.Count;
var numComplete = 0;
@@ -239,27 +252,22 @@ namespace MediaBrowser.Controller.Entities.Audio
private async Task RefreshArtists(MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
{
- var artists = AllArtists.Select(i =>
+ var all = AllArtists;
+ foreach (var i in all)
{
// This should not be necessary but we're seeing some cases of it
if (string.IsNullOrWhiteSpace(i))
{
- return null;
+ continue;
}
var artist = LibraryManager.GetArtist(i);
if (!artist.IsAccessedByName)
{
- return null;
+ continue;
}
- return artist;
-
- }).Where(i => i != null).ToList();
-
- foreach (var artist in artists)
- {
await artist.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
}
}
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
index 559806ac4..19fe68e25 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
@@ -214,18 +214,19 @@ namespace MediaBrowser.Controller.Entities.Audio
{
var items = GetRecursiveChildren();
- var songs = items.OfType<Audio>().ToList();
-
- var others = items.Except(songs).ToList();
-
- var totalItems = songs.Count + others.Count;
+ var totalItems = items.Count;
var numComplete = 0;
var childUpdateType = ItemUpdateType.None;
// Refresh songs
- foreach (var item in songs)
+ foreach (var item in items)
{
+ if (!(item is Audio))
+ {
+ continue;
+ }
+
cancellationToken.ThrowIfCancellationRequested();
var updateType = await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
@@ -248,8 +249,13 @@ namespace MediaBrowser.Controller.Entities.Audio
await RefreshMetadata(parentRefreshOptions, cancellationToken).ConfigureAwait(false);
// Refresh all non-songs
- foreach (var item in others)
+ foreach (var item in items)
{
+ if (item is Audio)
+ {
+ continue;
+ }
+
cancellationToken.ThrowIfCancellationRequested();
var updateType = await item.RefreshMetadata(parentRefreshOptions, cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
index d4a85b4d0..02e652048 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Extensions;