Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
 /// <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;
 }