| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | 
							- using MediaBrowser.Controller.Library;
 
- using MediaBrowser.Model.Logging;
 
- using System;
 
- using System.Linq;
 
- using System.Threading;
 
- using System.Threading.Tasks;
 
- using CommonIO;
 
- namespace MediaBrowser.Server.Implementations.ScheduledTasks
 
- {
 
-     /// <summary>
 
-     /// Class RefreshIntrosTask
 
-     /// </summary>
 
-     public class RefreshIntrosTask : ILibraryPostScanTask
 
-     {
 
-         /// <summary>
 
-         /// The _library manager
 
-         /// </summary>
 
-         private readonly ILibraryManager _libraryManager;
 
-         /// <summary>
 
-         /// The _logger
 
-         /// </summary>
 
-         private readonly ILogger _logger;
 
-         private readonly IFileSystem _fileSystem;
 
-         /// <summary>
 
-         /// Initializes a new instance of the <see cref="RefreshIntrosTask" /> class.
 
-         /// </summary>
 
-         /// <param name="libraryManager">The library manager.</param>
 
-         /// <param name="logger">The logger.</param>
 
-         /// <param name="fileSystem">The file system.</param>
 
-         public RefreshIntrosTask(ILibraryManager libraryManager, ILogger logger, IFileSystem fileSystem)
 
-         {
 
-             _libraryManager = libraryManager;
 
-             _logger = logger;
 
-             _fileSystem = fileSystem;
 
-         }
 
-         /// <summary>
 
-         /// Runs the specified progress.
 
-         /// </summary>
 
-         /// <param name="progress">The progress.</param>
 
-         /// <param name="cancellationToken">The cancellation token.</param>
 
-         /// <returns>Task.</returns>
 
-         public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
 
-         {
 
-             var files = _libraryManager.GetAllIntroFiles().ToList();
 
-             var numComplete = 0;
 
-             foreach (var file in files)
 
-             {
 
-                 cancellationToken.ThrowIfCancellationRequested();
 
-                 try
 
-                 {
 
-                     await RefreshIntro(file, cancellationToken).ConfigureAwait(false);
 
-                 }
 
-                 catch (OperationCanceledException)
 
-                 {
 
-                     throw;
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     _logger.ErrorException("Error refreshing intro {0}", ex, file);
 
-                 }
 
-                 numComplete++;
 
-                 double percent = numComplete;
 
-                 percent /= files.Count;
 
-                 progress.Report(percent * 100);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// Refreshes the intro.
 
-         /// </summary>
 
-         /// <param name="path">The path.</param>
 
-         /// <param name="cancellationToken">The cancellation token.</param>
 
-         /// <returns>Task.</returns>
 
-         private async Task RefreshIntro(string path, CancellationToken cancellationToken)
 
-         {
 
-             var item = _libraryManager.ResolvePath(_fileSystem.GetFileSystemInfo(path));
 
-             if (item == null)
 
-             {
 
-                 _logger.Error("Intro resolver returned null for {0}", path);
 
-                 return;
 
-             }
 
-             var dbItem = _libraryManager.GetItemById(item.Id);
 
-             if (dbItem != null)
 
-             {
 
-                 item = dbItem;
 
-             }
 
-             // Force the save if it's a new item
 
-             await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);
 
-         }
 
-     }
 
- }
 
 
  |