/// <summary> /// Imports the resource with the given <paramref name="mediaItemAccessor"/>. /// </summary> /// <remarks> /// This method will be called for file resources as well as for directory resources because some metadata extractors /// extract their metadata from directories. /// </remarks> /// <param name="mediaItemAccessor">File or directory resource to be imported.</param> /// <param name="parentDirectoryId">Media item id of the parent directory, if present, else <see cref="Guid.Empty"/>.</param> /// <param name="metadataExtractors">Collection of metadata extractors to apply to the given resoure.</param> /// <param name="resultHandler">Callback to notify the import results.</param> /// <param name="mediaAccessor">Convenience reference to the media accessor.</param> /// <returns><c>true</c>, if metadata could be extracted from the given <paramref name="mediaItemAccessor"/>, else /// <c>false</c>.</returns> protected bool ImportResource(ImportJob importJob, IResourceAccessor mediaItemAccessor, Guid parentDirectoryId, ICollection <IMetadataExtractor> metadataExtractors, IImportResultHandler resultHandler, IMediaAccessor mediaAccessor) { const bool importOnly = false; // Allow extractions with probably longer runtime. const bool forceQuickMode = false; // Allow extractions with probably longer runtime. ResourcePath path = mediaItemAccessor.CanonicalLocalResourcePath; ImporterWorkerMessaging.SendImportMessage(ImporterWorkerMessaging.MessageType.ImportStatus, path); IDictionary <Guid, IList <MediaItemAspect> > aspects = mediaAccessor.ExtractMetadata(mediaItemAccessor, metadataExtractors, importOnly, forceQuickMode); if (aspects == null) { // No metadata could be extracted return(false); } using (CancellationTokenSource cancelToken = new CancellationTokenSource()) { try { resultHandler.UpdateMediaItem(parentDirectoryId, path, MediaItemAspect.GetAspects(aspects), importJob.JobType == ImportJobType.Refresh, importJob.BasePath, cancelToken.Token); resultHandler.DeleteUnderPath(path); } catch { cancelToken.Cancel(); throw; } } return(true); }
/// <summary> /// Imports the resource with the given <paramref name="mediaItemAccessor"/>. /// </summary> /// <remarks> /// This method will be called for file resources as well as for directory resources because some metadata extractors /// extract their metadata from directories. /// </remarks> /// <param name="mediaItemAccessor">File or directory resource to be imported.</param> /// <param name="parentDirectoryId">Media item id of the parent directory, if present, else <see cref="Guid.Empty"/>.</param> /// <param name="metadataExtractors">Collection of metadata extractors to apply to the given resoure.</param> /// <param name="resultHandler">Callback to notify the import results.</param> /// <param name="mediaAccessor">Convenience reference to the media accessor.</param> /// <returns><c>true</c>, if metadata could be extracted from the given <paramref name="mediaItemAccessor"/>, else /// <c>false</c>.</returns> protected bool ImportResource(IResourceAccessor mediaItemAccessor, Guid parentDirectoryId, ICollection <IMetadataExtractor> metadataExtractors, IImportResultHandler resultHandler, IMediaAccessor mediaAccessor) { const bool forceQuickMode = false; // Allow extractions with probably longer runtime. ResourcePath path = mediaItemAccessor.CanonicalLocalResourcePath; ImporterWorkerMessaging.SendImportMessage(ImporterWorkerMessaging.MessageType.ImportStatus, path); IDictionary <Guid, MediaItemAspect> aspects = mediaAccessor.ExtractMetadata(mediaItemAccessor, metadataExtractors, forceQuickMode); if (aspects == null) { // No metadata could be extracted return(false); } resultHandler.UpdateMediaItem(parentDirectoryId, path, aspects.Values); resultHandler.DeleteUnderPath(path); return(true); }
/// <summary> /// Imports the resource with the given <paramref name="mediaItemAccessor"/>. /// </summary> /// <remarks> /// This method will be called for file resources as well as for directory resources because some metadata extractors /// extract their metadata from directories. /// </remarks> /// <param name="mediaItemAccessor">File or directory resource to be imported.</param> /// <param name="parentDirectoryId">Media item id of the parent directory, if present, else <see cref="Guid.Empty"/>.</param> /// <param name="metadataExtractors">Collection of metadata extractors to apply to the given resoure.</param> /// <param name="resultHandler">Callback to notify the import results.</param> /// <param name="mediaAccessor">Convenience reference to the media accessor.</param> /// <returns><c>true</c>, if metadata could be extracted from the given <paramref name="mediaItemAccessor"/>, else /// <c>false</c>.</returns> protected bool ImportResource(IResourceAccessor mediaItemAccessor, Guid parentDirectoryId, ICollection<IMetadataExtractor> metadataExtractors, IImportResultHandler resultHandler, IMediaAccessor mediaAccessor) { const bool forceQuickMode = false; // Allow extractions with probably longer runtime. ResourcePath path = mediaItemAccessor.CanonicalLocalResourcePath; ImporterWorkerMessaging.SendImportMessage(ImporterWorkerMessaging.MessageType.ImportStatus, path); IDictionary<Guid, MediaItemAspect> aspects = mediaAccessor.ExtractMetadata(mediaItemAccessor, metadataExtractors, forceQuickMode); if (aspects == null) // No metadata could be extracted return false; resultHandler.UpdateMediaItem(parentDirectoryId, path, aspects.Values); resultHandler.DeleteUnderPath(path); return true; }