Пример #1
0
        public IEnumerable <FileInfo> CollectFiles(string path, bool recurseSubfolders, IEnumerable <string> extensionsToCollect, bool ignoreFilter)
        {
            List <FileInfo> _matchingFiles = new List <FileInfo>();

            try
            {
                //var files = from f in Directory.GetFiles(path, "*", recurseSubfolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)
                //select new FileInfo(f);
                List <FileInfo> files = new List <FileInfo>();
                FindFile(path, "*.*", files, recurseSubfolders, ignoreFilter, extensionsToCollect);

                foreach (FileInfo _fi in files)
                {
                    // check if it is a dummy file
                    if (FileManager.IsDummyFile(_fi.FullName))
                    {
                        continue;
                    }

                    // filter out if it exists already
                    if (!_matchingFiles.Contains(_fi, new FileInfoComparer()) &&
                        (extensionsToCollect != null && extensionsToCollect.Count() != 0 && extensionsToCollect.Contains("*" + _fi.Extension.ToLowerInvariant())))
                    {
                        // check also filtering!
                        bool        _skip    = false;
                        UserOptions _options = FileManager.Configuration.Options;
                        if (!ignoreFilter && _options.FileBrowserOptions.IsFilterActive())
                        {
                            _skip = (_options.FileBrowserOptions.FilterWithoutMoviesheet && FileManager.Configuration.HasMoviesheet(_fi.FullName)) ||
                                    (_options.FileBrowserOptions.FilterWithoutExtraMoviesheet && FileManager.Configuration.HasExtraMoviesheet(_fi.FullName)) ||
                                    (_options.FileBrowserOptions.FilterWithoutMovieInfo && nfoHelper.HasMovieInfoFile(_fi.FullName)) ||
                                    (_options.FileBrowserOptions.FilterWithoutExtSubtitles && MediaInfoManager.HasExternalSubtitles(_fi.FullName)) ||
                                    (_options.FileBrowserOptions.FilterWithoutThumbnail && FileManager.Configuration.HasThumbnail(_fi.FullName)) ||
                                    (_options.FileBrowserOptions.FilterWithoutMetadata && FileManager.Configuration.HasMoviesheetMetadata(_fi.FullName)) ||
                                    (_options.FileBrowserOptions.FilterWithoutFolderJpg && FileManager.Configuration.HasFolderJpg(_fi.FullName));
                        }
                        if (!_skip)
                        {
                            _matchingFiles.Add(_fi);
                        }
                    }
                }

                //_matchingFiles = Sort<FileInfo>(_matchingFiles).ToList<FileInfo>();
            }
            catch (Exception ex)
            {
                Loggy.Logger.DebugException(string.Format("Exception collecting files from {0}:", path), ex);
            }

            return(_matchingFiles);
        }