예제 #1
0
        /// <summary>
        /// For enumerating all the entities of the group of containers ContainerEnumerator class is used
        /// </summary>
        public static void EnumeratingAllEntities()
        {
            //ExStart:EnumeratingAllEntities
            IContainerFactory containerFactory           = null;
            MediaTypeDetector containerMediaTypeDetector = null;
            Container         container     = null;
            ExtractorFactory  readerFactory = new ExtractorFactory();
            var enumerator = new ContainerEnumerator(containerFactory, containerMediaTypeDetector, container);

            while (enumerator.MoveNext())
            {
                using (var stream = enumerator.Current.OpenStream())
                {
                    using (var extractor = readerFactory.CreateTextExtractor(stream))
                    {
                        Console.WriteLine(extractor == null ? "document isn't supported" : extractor.ExtractAll());
                    }
                }
            }
            //ExEnd:EnumeratingAllEntities
        }
        internal static bool AnalyzeFileAndAddToMediaSection
            (FileInfo file,
            IMLSection section,
            IList extensionsToIgnore,
            IEnumerable <string> videoExtensions,
            IEnumerable <string> combinedSceneTags,
            string fileExtension,
            bool isAudio,
            bool isVideo,
            DirectoryInfo parent,
            string parentName,
            string fileName)
        {
            Application.DoEvents();


            MediaTypeDetector.AddFileToIgnoredExtensions
                (file, extensionsToIgnore, fileName,
                isAudio, isVideo, fileExtension);

            Application.DoEvents();



            if (!PopulateMediaSection
                    (file, section,
                    videoExtensions, parent,
                    isVideo, isAudio, fileName, parentName,
                    combinedSceneTags))
            {
                return(false);
            }


            Application.DoEvents();

            return(true);
        }
        internal static bool ImportMediaFile
            (FileInfo file,
            IMLSection section,
            ref ArrayList extensionsToIgnore,
            ref string[] filmLocations,
            string[] videoExtensions,
            string[] audioExtensions,
            int totalFiles,
            ref int currentFile,
            IEnumerable <string> combinedSceneTags,
            string pluginPath,
            IEnumerable <string> videoExtensionsCommon)
        {
            try
            {
                Application.DoEvents();

                #region Init

                currentFile++;

                if (file == null)
                {
                    return(true);
                }

                #region Set Progress status
                MainImportingEngine.CurrentProgress = ImportingEngineHelpers.ComputeProgress(currentFile, totalFiles);
                MainImportingEngine.GeneralStatus   = "Performing media importing...";
                MainImportingEngine.SpecialStatus   = String.Format("Checking file {0}...", file.Name);
                #endregion


                if (!File.Exists(file.FullName))
                {
                    return(true);
                }



                #region file variables

                string parentName = string.Empty;
                string fileName;
                string fileExtension;
                bool   isVideo;
                bool   isAudio;


                if (SingleMediaFileImporterHelpers
                    .RemoveExtensionFromFilename
                        (file, out fileName, out fileExtension))
                {
                    return(true);
                }



                #region Retrieve Parent Directory
                DirectoryInfo parent = file.Directory;

                if (parent != null && !String.IsNullOrEmpty(parent.Name))
                {
                    parentName = parent.Name;
                }
                #endregion

                #endregion

                #endregion

                Application.DoEvents();



                if (SingleMediaFileImporterHelpers.ImportAdditionalMediaTypes
                        (file, section,
                        parent, parentName))
                {
                    return(true);
                }

                Application.DoEvents();

                if (MediaTypeDetector.FileTypeBelongsToIgnoredExtensions(file, extensionsToIgnore))
                {
                    return(true);
                }

                Application.DoEvents();


                if (ExistingMediaItemSeachEngine.SkipAlreadyImportedFiles
                        (file, filmLocations, section))
                {
                    return(true);
                }


                Application.DoEvents();


                MediaTypeDetector.FileTypeIsMediaExtension(videoExtensions,
                                                           audioExtensions, fileExtension, out isVideo, out isAudio,
                                                           fileName, videoExtensionsCommon);


                Application.DoEvents();


                if (!MediaSectionPopulator
                    .AnalyzeFileAndAddToMediaSection
                        (file, section, extensionsToIgnore,
                        videoExtensions, combinedSceneTags,
                        fileExtension, isAudio, isVideo,
                        parent, parentName, fileName))
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                if (file != null)
                {
                    Debugger.LogMessageToFile("An error occured while attempting to import a media file " +
                                              // + file.Name +
                                              "." + Environment.NewLine + "The error was: " + e);
                }
            }


            return(true);
        }