From b3cb0fd835ab675397b18391f025004ac49da494 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Apr 2013 14:09:40 -0400 Subject: use IHasResultFactory --- .../HttpServer/SwaggerService.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/HttpServer/SwaggerService.cs b/MediaBrowser.Server.Implementations/HttpServer/SwaggerService.cs index 8772176a0..20728a30c 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/SwaggerService.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/SwaggerService.cs @@ -18,10 +18,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer public string ResourceName { get; set; } } - public class SwaggerService : IRequiresRequestContext, IRestfulService + public class SwaggerService : IHasResultFactory, IRestfulService { - public IHttpResultFactory HttpResultFactory { get; set; } - /// /// Gets the specified request. /// @@ -35,9 +33,15 @@ namespace MediaBrowser.Server.Implementations.HttpServer var requestedFile = Path.Combine(swaggerDirectory, request.ResourceName.Replace('/', '\\')); - return HttpResultFactory.GetStaticFileResult(RequestContext, requestedFile); + return ResultFactory.GetStaticFileResult(RequestContext, requestedFile); } + /// + /// Gets or sets the result factory. + /// + /// The result factory. + public IHttpResultFactory ResultFactory { get; set; } + /// /// Gets or sets the request context. /// -- cgit v1.2.3 From bc833492f0c27fbd106b170984f80ac133341396 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Apr 2013 15:39:25 -0400 Subject: use scheduled task when plugins ask for a library refresh --- .../Library/LibraryManager.cs | 14 +++++++++++++- .../ScheduledTasks/RefreshMediaLibraryTask.cs | 3 ++- 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index ca261a393..3ec881499 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -758,7 +758,19 @@ namespace MediaBrowser.Server.Implementations.Library /// The progress. /// The cancellation token. /// Task. - public async Task ValidateMediaLibrary(IProgress progress, CancellationToken cancellationToken) + public Task ValidateMediaLibrary(IProgress progress, CancellationToken cancellationToken) + { + // Just run the scheduled task so that the user can see it + return Task.Run(() => _taskManager.CancelIfRunningAndQueue()); + } + + /// + /// Validates the media library internal. + /// + /// The progress. + /// The cancellation token. + /// Task. + public async Task ValidateMediaLibraryInternal(IProgress progress, CancellationToken cancellationToken) { _logger.Info("Validating media library"); diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs index 8170e90a6..6082b629e 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Server.Implementations.Library; namespace MediaBrowser.Server.Implementations.ScheduledTasks { @@ -55,7 +56,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks progress.Report(0); - return _libraryManager.ValidateMediaLibrary(progress, cancellationToken); + return ((LibraryManager)_libraryManager).ValidateMediaLibraryInternal(progress, cancellationToken); } /// -- cgit v1.2.3 From 95b1bfb0de05ccd53da77fce499e4f208d3a9fa3 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Apr 2013 16:47:09 -0400 Subject: fixed people images being occasionally incorrect --- MediaBrowser.Api/Images/ImageService.cs | 2 +- MediaBrowser.Controller/Dto/DtoBuilder.cs | 24 +++++++++++++--------- .../Providers/ProviderManager.cs | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 07bbaff74..1f69183cc 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -293,7 +293,7 @@ namespace MediaBrowser.Api.Images if (string.IsNullOrEmpty(imagePath)) { - throw new ResourceNotFoundException(); + throw new ResourceNotFoundException(string.Format("{0} does not have an image of type {1}", item.Name, request.Type)); } // See if we can avoid a file system lookup by looking for the file in ResolveArgs diff --git a/MediaBrowser.Controller/Dto/DtoBuilder.cs b/MediaBrowser.Controller/Dto/DtoBuilder.cs index 0c47013bf..84f9f8827 100644 --- a/MediaBrowser.Controller/Dto/DtoBuilder.cs +++ b/MediaBrowser.Controller/Dto/DtoBuilder.cs @@ -566,29 +566,33 @@ namespace MediaBrowser.Controller.Dto return; } - // Attach People by transforming them into BaseItemPerson (DTO) - dto.People = new BaseItemPerson[item.People.Count]; - // Ordering by person type to ensure actors and artists are at the front. // This is taking advantage of the fact that they both begin with A // This should be improved in the future - var entities = await Task.WhenAll(item.People.OrderBy(i => i.Type).Select(c => + var people = item.People.OrderBy(i => i.Type).ToList(); + + // Attach People by transforming them into BaseItemPerson (DTO) + dto.People = new BaseItemPerson[people.Count]; + + var entities = await Task.WhenAll(people.Select(p => p.Name).Distinct(StringComparer.OrdinalIgnoreCase).Select(c => Task.Run(async () => { try { - return await _libraryManager.GetPerson(c.Name).ConfigureAwait(false); + return await _libraryManager.GetPerson(c).ConfigureAwait(false); } catch (IOException ex) { - _logger.ErrorException("Error getting person {0}", ex, c.Name); + _logger.ErrorException("Error getting person {0}", ex, c); return null; } }) )).ConfigureAwait(false); + var dictionary = entities.ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase); + for (var i = 0; i < item.People.Count; i++) { var person = item.People[i]; @@ -600,15 +604,15 @@ namespace MediaBrowser.Controller.Dto Type = person.Type }; - var ibnObject = entities[i]; + Person entity; - if (ibnObject != null) + if (dictionary.TryGetValue(person.Name, out entity)) { - var primaryImagePath = ibnObject.PrimaryImagePath; + var primaryImagePath = entity.PrimaryImagePath; if (!string.IsNullOrEmpty(primaryImagePath)) { - baseItemPerson.PrimaryImageTag = Kernel.Instance.ImageManager.GetImageCacheTag(ibnObject, ImageType.Primary, primaryImagePath); + baseItemPerson.PrimaryImageTag = Kernel.Instance.ImageManager.GetImageCacheTag(entity, ImageType.Primary, primaryImagePath); } } diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs index ff7222e7c..58bb232a2 100644 --- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs +++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs @@ -237,7 +237,7 @@ namespace MediaBrowser.Server.Implementations.Providers } catch (OperationCanceledException ex) { - _logger.Debug("{0} cancelled for {1}", provider.GetType().Name, item.Name); + _logger.Debug("{0} canceled for {1}", provider.GetType().Name, item.Name); // If the outer cancellation token is the one that caused the cancellation, throw it if (cancellationToken.IsCancellationRequested && ex.CancellationToken == cancellationToken) -- cgit v1.2.3 From 6138a7540bc25d6c1173bcd0f9fd2826ab84462a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 14 Apr 2013 19:14:01 -0400 Subject: updated ffmpeg --- .../MediaBrowser.Server.Implementations.csproj | 2 +- .../MediaEncoder/ffmpeg20130408.zip.REMOVED.git-id | 1 - .../MediaEncoder/ffmpeg20130412.zip.REMOVED.git-id | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 MediaBrowser.Server.Implementations/MediaEncoder/ffmpeg20130408.zip.REMOVED.git-id create mode 100644 MediaBrowser.Server.Implementations/MediaEncoder/ffmpeg20130412.zip.REMOVED.git-id (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index ba79ff5d5..66ec69f08 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -256,7 +256,7 @@ - + diff --git a/MediaBrowser.Server.Implementations/MediaEncoder/ffmpeg20130408.zip.REMOVED.git-id b/MediaBrowser.Server.Implementations/MediaEncoder/ffmpeg20130408.zip.REMOVED.git-id deleted file mode 100644 index c1a4c08b1..000000000 --- a/MediaBrowser.Server.Implementations/MediaEncoder/ffmpeg20130408.zip.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -13efb0e506699c6d90c23a7600b3556d91dd31a1 \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/MediaEncoder/ffmpeg20130412.zip.REMOVED.git-id b/MediaBrowser.Server.Implementations/MediaEncoder/ffmpeg20130412.zip.REMOVED.git-id new file mode 100644 index 000000000..71f2b701c --- /dev/null +++ b/MediaBrowser.Server.Implementations/MediaEncoder/ffmpeg20130412.zip.REMOVED.git-id @@ -0,0 +1 @@ +1b75cc4abcfd185b6db07bbe433d010f947d50ae \ No newline at end of file -- cgit v1.2.3