public override void ReImportShare() { ILocalSharesManagement sharesManagement = ServiceRegistration.Get <ILocalSharesManagement>(); sharesManagement.ReImportShare(_origShare.ShareId); }
public override async Task <AsyncResult <ContentDirectoryMessaging.MediaItemChangeType> > ProcessAsync(MediaItem mediaItem) { // If the MediaItem was loaded from ML if (IsManagedByMediaLibrary(mediaItem)) { IContentDirectory cd = ServiceRegistration.Get <IServerConnectionManager>().ContentDirectory; if (cd == null) { return(new AsyncResult <ContentDirectoryMessaging.MediaItemChangeType>(false, ContentDirectoryMessaging.MediaItemChangeType.None)); } SubtitleMatchModel misub = ServiceRegistration.Get <IWorkflowManager>().GetModel(SubtitleMatchModel.MODEL_ID_SUBMATCH) as SubtitleMatchModel; await misub.OpenSelectEditionDialogAsync(mediaItem).ConfigureAwait(false); IEnumerable <MediaItemAspect> aspects = await misub.OpenSelectMatchDialogAsync(mediaItem).ConfigureAwait(false); if (aspects != null) { SubtitleInfo subtitle = new SubtitleInfo(); subtitle.FromMetadata(MediaItemAspect.GetAspects(aspects)); //Check if it is from a local share bool isLocalMediaItem = false; ILocalSharesManagement sharesManagement = ServiceRegistration.Get <ILocalSharesManagement>(); var localShares = sharesManagement.Shares.Values; foreach (var media in subtitle.MediaFiles) { if (localShares.Any(s => s.BaseResourcePath.IsSameOrParentOf(media.NativeResourcePath))) { isLocalMediaItem = true; break; } } //Import directly if it is a local media item if (isLocalMediaItem) { ServiceRegistration.Get <ILogger>().Debug("Downloading subtitle with local extractors"); IMediaAccessor mediaAccessor = ServiceRegistration.Get <IMediaAccessor>(); foreach (IMetadataExtractor extractor in mediaAccessor.LocalMetadataExtractors.Values) { if (!extractor.Metadata.ExtractedAspectTypes.ContainsKey(SubtitleAspect.ASPECT_ID)) { continue; } await extractor.DownloadMetadataAsync(mediaItem.MediaItemId, MediaItemAspect.GetAspects(aspects)).ConfigureAwait(false); } foreach (var media in subtitle.MediaFiles) { var share = localShares.FirstOrDefault(s => s.BaseResourcePath.IsSameOrParentOf(media.NativeResourcePath)); if (share != null) { sharesManagement.ReImportShare(share.ShareId); break; } } return(new AsyncResult <ContentDirectoryMessaging.MediaItemChangeType>(true, ContentDirectoryMessaging.MediaItemChangeType.Updated)); } else //If not get the server to import { ServiceRegistration.Get <ILogger>().Debug("Downloading subtitle with server extractors"); await cd.DownloadMetadataAsync(mediaItem.MediaItemId, aspects); //After refresh is completed on server a change message will be fired return(new AsyncResult <ContentDirectoryMessaging.MediaItemChangeType>(true, ContentDirectoryMessaging.MediaItemChangeType.None)); } } } return(new AsyncResult <ContentDirectoryMessaging.MediaItemChangeType>(false, ContentDirectoryMessaging.MediaItemChangeType.None)); }