aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs6
-rw-r--r--MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs2
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs3
-rw-r--r--MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs13
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs7
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserManager.cs26
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs26
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ImageSaver.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ProviderManager.cs17
-rw-r--r--MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs5
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Sorting/AlbumCountComparer.cs7
-rw-r--r--MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs3
-rw-r--r--MediaBrowser.Server.Implementations/Sorting/EpisodeCountComparer.cs7
-rw-r--r--MediaBrowser.Server.Implementations/Sorting/MusicVideoCountComparer.cs7
-rw-r--r--MediaBrowser.Server.Implementations/Sorting/SongCountComparer.cs7
-rw-r--r--MediaBrowser.Server.Implementations/Udp/UdpServer.cs1
24 files changed, 80 insertions, 95 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index feadc488f..24b6f0fce 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -759,7 +759,11 @@ namespace MediaBrowser.Server.Implementations.Dto
dto.AspectRatio = item.AspectRatio;
dto.BackdropImageTags = GetBackdropImageTags(item);
- dto.ScreenshotImageTags = GetScreenshotImageTags(item);
+
+ if (fields.Contains(ItemFields.ScreenshotImageTags))
+ {
+ dto.ScreenshotImageTags = GetScreenshotImageTags(item);
+ }
if (fields.Contains(ItemFields.Genres))
{
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs
index a97711684..fcb4406ab 100644
--- a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs
+++ b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs
@@ -8,10 +8,10 @@ using MediaBrowser.Controller.Notifications;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Notifications;
+using MediaBrowser.Model.Tasks;
using System;
using System.Linq;
using System.Threading;
-using MediaBrowser.Model.Tasks;
namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications
{
diff --git a/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs b/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs
index 24292f0a1..3956eb69d 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs
@@ -4,7 +4,6 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
-using System.Linq;
using System.Net;
using System.Threading.Tasks;
@@ -84,7 +83,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
/// </summary>
private void SetRangeValues()
{
- var requestedRange = RequestedRanges.First();
+ var requestedRange = RequestedRanges[0];
TotalContentLength = SourceStream.Length;
diff --git a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
index c2e87cbd7..ededca314 100644
--- a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
+++ b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
@@ -107,6 +107,7 @@ namespace MediaBrowser.Server.Implementations.Library
{
if (args.Parent != null)
{
+ // Don't resolve these into audio files
if (string.Equals(Path.GetFileNameWithoutExtension(filename), BaseItem.ThemeSongFilename) && EntityResolutionHelper.IsAudioFile(filename))
{
return true;
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 5230bb4c3..9b78f3980 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -1036,6 +1036,10 @@ namespace MediaBrowser.Server.Implementations.Library
{
await i.Run(innerProgress, cancellationToken);
}
+ catch (OperationCanceledException)
+ {
+ _logger.Info("Pre-scan task cancelled: {0}", i.GetType().Name);
+ }
catch (Exception ex)
{
_logger.ErrorException("Error running prescan task", ex);
@@ -1077,6 +1081,10 @@ namespace MediaBrowser.Server.Implementations.Library
{
await i.Run(innerProgress, cancellationToken);
}
+ catch (OperationCanceledException)
+ {
+ _logger.Info("Post-scan task cancelled: {0}", i.GetType().Name);
+ }
catch (Exception ex)
{
_logger.ErrorException("Error running postscan task", ex);
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
index 73c26dd64..bf6526538 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
@@ -1,11 +1,12 @@
using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
using System.IO;
-using System.Linq;
namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
{
@@ -37,6 +38,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
if (args.Parent.IsRoot) return null;
if (args.Parent is MusicAlbum) return null;
+ // Optimization
+ if (args.Parent is BoxSet || args.Parent is Series || args.Parent is Season)
+ {
+ return null;
+ }
+
var collectionType = args.GetCollectionType();
// If there's a collection type and it's not music, it can't be a series
@@ -102,8 +109,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
// If list contains at least 2 audio files or at least one and no video files consider it to contain music
var foundAudio = 0;
- foreach (var fullName in list.Select(file => file.FullName))
+ foreach (var file in list)
{
+ var fullName = file.FullName;
+
if (EntityResolutionHelper.IsAudioFile(fullName)) foundAudio++;
if (foundAudio >= 2)
{
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs
index 8aafbb0f7..54a32c367 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs
@@ -1,4 +1,6 @@
using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Entities;
@@ -41,6 +43,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
return null;
}
+ // Optimization
+ if (args.Parent is BoxSet || args.Parent is Series || args.Parent is Season)
+ {
+ return null;
+ }
+
var collectionType = args.GetCollectionType();
// If there's a collection type and it's not music, it can't be a series
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs
index c2c3335c3..9afeb8eb9 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs
@@ -2,9 +2,9 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Entities;
using System;
using System.IO;
-using MediaBrowser.Model.Entities;
namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
{
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
index 84d57b972..0a6a72fc1 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
@@ -20,7 +20,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
var season = args.Parent as Season;
// If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
- if (season != null || args.Parent is Series)
+ if (season != null)
{
Episode episode = null;
@@ -51,10 +51,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
if (episode != null)
{
- if (season != null)
- {
- episode.ParentIndexNumber = season.IndexNumber;
- }
+ episode.ParentIndexNumber = season.IndexNumber;
if (episode.ParentIndexNumber == null)
{
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
index 5b49ab630..38a3d44bb 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
@@ -1,4 +1,6 @@
using MediaBrowser.Common.Extensions;
+using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Resolvers;
@@ -41,7 +43,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
}
// Optimization to avoid running these tests against Seasons
- if (args.Parent is Series)
+ if (args.Parent is Series || args.Parent is MusicArtist || args.Parent is MusicAlbum || args.Parent is BoxSet)
{
return null;
}
diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs
index 661916212..04d0f6ab2 100644
--- a/MediaBrowser.Server.Implementations/Library/UserManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs
@@ -4,10 +4,8 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
-using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Logging;
using System;
-using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -24,12 +22,6 @@ namespace MediaBrowser.Server.Implementations.Library
public class UserManager : IUserManager
{
/// <summary>
- /// The _active connections
- /// </summary>
- private readonly ConcurrentDictionary<string, SessionInfo> _activeConnections =
- new ConcurrentDictionary<string, SessionInfo>(StringComparer.OrdinalIgnoreCase);
-
- /// <summary>
/// The _users
/// </summary>
private IEnumerable<User> _users;
@@ -65,24 +57,6 @@ namespace MediaBrowser.Server.Implementations.Library
}
/// <summary>
- /// Gets all connections.
- /// </summary>
- /// <value>All connections.</value>
- public IEnumerable<SessionInfo> AllConnections
- {
- get { return _activeConnections.Values.OrderByDescending(c => c.LastActivityDate); }
- }
-
- /// <summary>
- /// Gets the active connections.
- /// </summary>
- /// <value>The active connections.</value>
- public IEnumerable<SessionInfo> RecentConnections
- {
- get { return AllConnections.Where(c => (DateTime.UtcNow - c.LastActivityDate).TotalMinutes <= 5); }
- }
-
- /// <summary>
/// The _logger
/// </summary>
private readonly ILogger _logger;
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
index 607f32427..d359d211c 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs
@@ -57,10 +57,10 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <returns>Task.</returns>
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{
- var allItems = _libraryManager.RootFolder.RecursiveChildren.ToList();
+ var allItems = _libraryManager.RootFolder.RecursiveChildren.ToArray();
- var allMusicArtists = allItems.OfType<MusicArtist>().ToList();
- var allSongs = allItems.OfType<Audio>().ToList();
+ var allMusicArtists = allItems.OfType<MusicArtist>().ToArray();
+ var allSongs = allItems.OfType<Audio>().ToArray();
var innerProgress = new ActionableProgress<double>();
@@ -73,8 +73,8 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
var numComplete = 0;
var userLibraries = _userManager.Users
- .Select(i => new Tuple<Guid, List<IHasArtist>>(i.Id, i.RootFolder.GetRecursiveChildren(i).OfType<IHasArtist>().ToList()))
- .ToList();
+ .Select(i => new Tuple<Guid, IHasArtist[]>(i.Id, i.RootFolder.GetRecursiveChildren(i).OfType<IHasArtist>().ToArray()))
+ .ToArray();
foreach (var artist in allArtists)
{
@@ -117,7 +117,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
numComplete++;
double percent = numComplete;
- percent /= allArtists.Count;
+ percent /= allArtists.Length;
percent *= 20;
progress.Report(80 + percent);
@@ -138,11 +138,11 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
var items = allItems
.Where(i => i.HasArtist(name))
- .ToList();
+ .ToArray();
var counts = new ItemByNameCounts
{
- TotalCount = items.Count,
+ TotalCount = items.Length,
SongCount = items.OfType<Audio>().Count(),
@@ -165,7 +165,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
private void MergeImages(Dictionary<ImageType, string> source, Dictionary<ImageType, string> target)
{
foreach (var key in source.Keys
- .ToList()
+ .ToArray()
.Where(k => !target.ContainsKey(k)))
{
string path;
@@ -184,7 +184,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <param name="cancellationToken">The cancellation token.</param>
/// <param name="progress">The progress.</param>
/// <returns>Task{Artist[]}.</returns>
- private async Task<List<Artist>> GetAllArtists(IEnumerable<Audio> allSongs, CancellationToken cancellationToken, IProgress<double> progress)
+ private async Task<Artist[]> GetAllArtists(IEnumerable<Audio> allSongs, CancellationToken cancellationToken, IProgress<double> progress)
{
var allArtists = allSongs
.SelectMany(i =>
@@ -200,7 +200,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
return list;
})
.Distinct(StringComparer.OrdinalIgnoreCase)
- .ToList();
+ .ToArray();
const int maxTasks = 3;
@@ -246,7 +246,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
{
numComplete++;
double percent = numComplete;
- percent /= allArtists.Count;
+ percent /= allArtists.Length;
progress.Report(100 * percent);
}
@@ -255,7 +255,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
await Task.WhenAll(tasks).ConfigureAwait(false);
- return returnArtists.ToList();
+ return returnArtists.ToArray();
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs b/MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs
index 084d720ae..679eadb12 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/CountHelpers.cs
@@ -127,7 +127,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <param name="media">The media.</param>
/// <param name="names">The names.</param>
/// <param name="masterDictionary">The master dictionary.</param>
- internal static void SetItemCounts(Guid userId, BaseItem media, List<string> names, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary)
+ internal static void SetItemCounts(Guid userId, BaseItem media, IEnumerable<string> names, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary)
{
foreach (var name in names)
{
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs b/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs
index 3c1528d01..065507d3c 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/PeoplePostScanTask.cs
@@ -46,14 +46,10 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
private void RunInternal(IProgress<double> progress, CancellationToken cancellationToken)
{
- var allItems = _libraryManager.RootFolder.RecursiveChildren.ToList();
-
var userLibraries = _userManager.Users
- .Select(i => new Tuple<Guid, List<BaseItem>>(i.Id, i.RootFolder.GetRecursiveChildren(i).ToList()))
+ .Select(i => new Tuple<Guid, BaseItem[]>(i.Id, i.RootFolder.GetRecursiveChildren(i).ToArray()))
.ToList();
- var allLibraryItems = allItems;
-
var masterDictionary = new Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>>(StringComparer.OrdinalIgnoreCase);
// Populate counts of items
@@ -122,7 +118,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
var names = media
.People.Select(i => i.Name)
.Distinct(StringComparer.OrdinalIgnoreCase)
- .ToList();
+ .ToArray();
CountHelpers.SetItemCounts(userId, media, names, masterDictionary);
}
diff --git a/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs b/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
index cbdec63c8..608738f7f 100644
--- a/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
@@ -1,5 +1,4 @@
-using System.Globalization;
-using MediaBrowser.Common.IO;
+using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
@@ -7,6 +6,7 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Entities;
using System;
+using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading;
diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
index 41e6725cd..927631144 100644
--- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
@@ -92,13 +92,21 @@ namespace MediaBrowser.Server.Implementations.Providers
cancellationToken.ThrowIfCancellationRequested();
+ var enableInternetProviders = ConfigurationManager.Configuration.EnableInternetProviders;
+ var excludeTypes = ConfigurationManager.Configuration.InternetProviderExcludeTypes;
+
// Run the normal providers sequentially in order of priority
- foreach (var provider in MetadataProviders.Where(p => ProviderSupportsItem(p, item)))
+ foreach (var provider in MetadataProviders)
{
cancellationToken.ThrowIfCancellationRequested();
+ if (!ProviderSupportsItem(provider, item))
+ {
+ continue;
+ }
+
// Skip if internet providers are currently disabled
- if (provider.RequiresInternet && !ConfigurationManager.Configuration.EnableInternetProviders)
+ if (provider.RequiresInternet && !enableInternetProviders)
{
continue;
}
@@ -110,7 +118,10 @@ namespace MediaBrowser.Server.Implementations.Providers
}
// Skip if internet provider and this type is not allowed
- if (provider.RequiresInternet && ConfigurationManager.Configuration.EnableInternetProviders && ConfigurationManager.Configuration.InternetProviderExcludeTypes.Contains(item.GetType().Name, StringComparer.OrdinalIgnoreCase))
+ if (provider.RequiresInternet &&
+ enableInternetProviders &&
+ excludeTypes.Length > 0 &&
+ excludeTypes.Contains(item.GetType().Name, StringComparer.OrdinalIgnoreCase))
{
continue;
}
diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
index 1a56005dc..b63cf0031 100644
--- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
+++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
@@ -1,6 +1,4 @@
-using System.Net.Sockets;
-using MediaBrowser.Common;
-using MediaBrowser.Common.Net;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Model.Logging;
@@ -10,6 +8,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
+using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index bf5ae498b..ce757d142 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Common.Events;
-using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
diff --git a/MediaBrowser.Server.Implementations/Sorting/AlbumCountComparer.cs b/MediaBrowser.Server.Implementations/Sorting/AlbumCountComparer.cs
index 4680ba913..62f0e0ae0 100644
--- a/MediaBrowser.Server.Implementations/Sorting/AlbumCountComparer.cs
+++ b/MediaBrowser.Server.Implementations/Sorting/AlbumCountComparer.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Sorting;
diff --git a/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs b/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs
index e3de0df28..9ff8a5ace 100644
--- a/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs
+++ b/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
using System;
-using System.Linq;
namespace MediaBrowser.Server.Implementations.Sorting
{
@@ -37,7 +36,7 @@ namespace MediaBrowser.Server.Implementations.Sorting
return string.Empty;
}
- return audio.Artists.FirstOrDefault() ?? string.Empty;
+ return audio.Artists.Count == 0 ? null : audio.Artists[0];
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Sorting/EpisodeCountComparer.cs b/MediaBrowser.Server.Implementations/Sorting/EpisodeCountComparer.cs
index 4296f3f3a..e4eaad2aa 100644
--- a/MediaBrowser.Server.Implementations/Sorting/EpisodeCountComparer.cs
+++ b/MediaBrowser.Server.Implementations/Sorting/EpisodeCountComparer.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Sorting;
diff --git a/MediaBrowser.Server.Implementations/Sorting/MusicVideoCountComparer.cs b/MediaBrowser.Server.Implementations/Sorting/MusicVideoCountComparer.cs
index 9b83d865c..3f578d33a 100644
--- a/MediaBrowser.Server.Implementations/Sorting/MusicVideoCountComparer.cs
+++ b/MediaBrowser.Server.Implementations/Sorting/MusicVideoCountComparer.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Sorting;
diff --git a/MediaBrowser.Server.Implementations/Sorting/SongCountComparer.cs b/MediaBrowser.Server.Implementations/Sorting/SongCountComparer.cs
index fe9c95df4..ac0547102 100644
--- a/MediaBrowser.Server.Implementations/Sorting/SongCountComparer.cs
+++ b/MediaBrowser.Server.Implementations/Sorting/SongCountComparer.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Sorting;
diff --git a/MediaBrowser.Server.Implementations/Udp/UdpServer.cs b/MediaBrowser.Server.Implementations/Udp/UdpServer.cs
index b67c3e4e8..0aadac9b6 100644
--- a/MediaBrowser.Server.Implementations/Udp/UdpServer.cs
+++ b/MediaBrowser.Server.Implementations/Udp/UdpServer.cs
@@ -8,7 +8,6 @@ using System.Net;
using System.Net.Sockets;
using System.Reactive.Linq;
using System.Text;
-using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.Udp