aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs13
-rw-r--r--MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs16
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ProviderManager.cs52
-rw-r--r--MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs4
7 files changed, 56 insertions, 39 deletions
diff --git a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
index a2240f52d..1efc3bc70 100644
--- a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
+++ b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
@@ -529,27 +529,26 @@ namespace MediaBrowser.Server.Implementations.IO
return;
}
- await Task.WhenAll(itemsToRefresh.Select(i => Task.Run(async () =>
+ foreach (var item in itemsToRefresh)
{
- Logger.Info(i.Name + " (" + i.Path + ") will be refreshed.");
+ Logger.Info(item.Name + " (" + item.Path + ") will be refreshed.");
try
{
- await i.ChangedExternally().ConfigureAwait(false);
+ await item.ChangedExternally().ConfigureAwait(false);
}
catch (IOException ex)
{
// For now swallow and log.
// Research item: If an IOException occurs, the item may be in a disconnected state (media unavailable)
// Should we remove it from it's parent?
- Logger.ErrorException("Error refreshing {0}", ex, i.Name);
+ Logger.ErrorException("Error refreshing {0}", ex, item.Name);
}
catch (Exception ex)
{
- Logger.ErrorException("Error refreshing {0}", ex, i.Name);
+ Logger.ErrorException("Error refreshing {0}", ex, item.Name);
}
-
- }))).ConfigureAwait(false);
+ }
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
index 95ec416b6..5268faa4f 100644
--- a/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
+++ b/MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
@@ -114,6 +114,12 @@ namespace MediaBrowser.Server.Implementations.Library
{
return true;
}
+
+ // Don't misidentify xbmc trailers as a movie
+ if (filename.IndexOf(BaseItem.XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) != -1)
+ {
+ return true;
+ }
}
}
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index 9b095a156..3d6f7e66a 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -91,31 +91,31 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
if (args.Path.IndexOf("[trailers]", StringComparison.OrdinalIgnoreCase) != -1 ||
string.Equals(collectionType, CollectionType.Trailers, StringComparison.OrdinalIgnoreCase))
{
- return FindMovie<Trailer>(args.Path, args.FileSystemChildren);
+ return FindMovie<Trailer>(args.Path, args.Parent, args.FileSystemChildren);
}
if (args.Path.IndexOf("[musicvideos]", StringComparison.OrdinalIgnoreCase) != -1 ||
string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase))
{
- return FindMovie<MusicVideo>(args.Path, args.FileSystemChildren);
+ return FindMovie<MusicVideo>(args.Path, args.Parent, args.FileSystemChildren);
}
if (args.Path.IndexOf("[adultvideos]", StringComparison.OrdinalIgnoreCase) != -1 ||
string.Equals(collectionType, CollectionType.AdultVideos, StringComparison.OrdinalIgnoreCase))
{
- return FindMovie<AdultVideo>(args.Path, args.FileSystemChildren);
+ return FindMovie<AdultVideo>(args.Path, args.Parent, args.FileSystemChildren);
}
if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase))
{
- return FindMovie<Video>(args.Path, args.FileSystemChildren);
+ return FindMovie<Video>(args.Path, args.Parent, args.FileSystemChildren);
}
if (string.IsNullOrEmpty(collectionType) ||
string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase) ||
string.Equals(collectionType, CollectionType.BoxSets, StringComparison.OrdinalIgnoreCase))
{
- return FindMovie<Movie>(args.Path, args.FileSystemChildren);
+ return FindMovie<Movie>(args.Path, args.Parent, args.FileSystemChildren);
}
return null;
@@ -199,9 +199,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="path">The path.</param>
+ /// <param name="parent">The parent.</param>
/// <param name="fileSystemEntries">The file system entries.</param>
/// <returns>Movie.</returns>
- private T FindMovie<T>(string path, IEnumerable<FileSystemInfo> fileSystemEntries)
+ private T FindMovie<T>(string path, Folder parent, IEnumerable<FileSystemInfo> fileSystemEntries)
where T : Video, new()
{
var movies = new List<T>();
@@ -249,7 +250,8 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
var childArgs = new ItemResolveArgs(_applicationPaths, _libraryManager)
{
FileInfo = child,
- Path = child.FullName
+ Path = child.FullName,
+ Parent = parent
};
var item = ResolveVideo<T>(childArgs);
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index a3790b097..218c930df 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -172,7 +172,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var channel = GetInternalChannel(id);
- return await service.GetRecordingStream(channel.ChannelInfo.Id, cancellationToken).ConfigureAwait(false);
+ return await service.GetChannelStream(channel.ChannelInfo.Id, cancellationToken).ConfigureAwait(false);
}
private async Task<LiveTvChannel> GetChannel(ChannelInfo channelInfo, string serviceName, CancellationToken cancellationToken)
diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
index e9c672151..cbfd7d74d 100644
--- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
@@ -380,33 +380,43 @@ namespace MediaBrowser.Server.Implementations.Providers
var preferredLanguage = item.GetPreferredMetadataLanguage();
- var tasks = providers.Select(i => Task.Run(async () =>
+ var tasks = providers.Select(i => GetImages(item, cancellationToken, i, preferredLanguage, type));
+
+ var results = await Task.WhenAll(tasks).ConfigureAwait(false);
+
+ return results.SelectMany(i => i);
+ }
+
+ /// <summary>
+ /// Gets the images.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <param name="i">The i.</param>
+ /// <param name="preferredLanguage">The preferred language.</param>
+ /// <param name="type">The type.</param>
+ /// <returns>Task{IEnumerable{RemoteImageInfo}}.</returns>
+ private async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken, IImageProvider i, string preferredLanguage, ImageType? type = null)
+ {
+ try
{
- try
+ if (type.HasValue)
{
- if (type.HasValue)
- {
- var result = await i.GetImages(item, type.Value, cancellationToken).ConfigureAwait(false);
+ var result = await i.GetImages(item, type.Value, cancellationToken).ConfigureAwait(false);
- return FilterImages(result, preferredLanguage);
- }
- else
- {
- var result = await i.GetAllImages(item, cancellationToken).ConfigureAwait(false);
- return FilterImages(result, preferredLanguage);
- }
+ return FilterImages(result, preferredLanguage);
}
- catch (Exception ex)
+ else
{
- _logger.ErrorException("{0} failed in GetImages for type {1}", ex, i.GetType().Name, item.GetType().Name);
- return new List<RemoteImageInfo>();
+ var result = await i.GetAllImages(item, cancellationToken).ConfigureAwait(false);
+ return FilterImages(result, preferredLanguage);
}
-
- }, cancellationToken));
-
- var results = await Task.WhenAll(tasks).ConfigureAwait(false);
-
- return results.SelectMany(i => i);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("{0} failed in GetImages for type {1}", ex, i.GetType().Name, item.GetType().Name);
+ return new List<RemoteImageInfo>();
+ }
}
private IEnumerable<RemoteImageInfo> FilterImages(IEnumerable<RemoteImageInfo> images, string preferredLanguage)
diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
index 553aae285..a2dfb51d2 100644
--- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
+++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs
@@ -243,7 +243,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager
/// <param name="dataFunction">The function that generates the data to send, if there are any connected clients</param>
public void SendWebSocketMessage<T>(string messageType, Func<T> dataFunction)
{
- Task.Run(async () => await SendWebSocketMessageAsync(messageType, dataFunction, CancellationToken.None).ConfigureAwait(false));
+ SendWebSocketMessageAsync(messageType, dataFunction, CancellationToken.None);
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 1a94b9c79..c42f33ec3 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -608,7 +608,7 @@ namespace MediaBrowser.Server.Implementations.Session
_logger.ErrorException("Error in SendServerShutdownNotification.", ex);
}
- }));
+ }, cancellationToken));
return Task.WhenAll(tasks);
}
@@ -633,7 +633,7 @@ namespace MediaBrowser.Server.Implementations.Session
_logger.ErrorException("Error in SendServerRestartNotification.", ex);
}
- }));
+ }, cancellationToken));
return Task.WhenAll(tasks);
}