private static void GetFiles(MediaFolder parent, GallerySource source, ZipFile sourceDatabase, bool reScan) { List <string> files = Directory.GetFiles(Path.Combine(source.Path, parent.RelativePathName)).ToList(); files.Sort(); foreach (string file in files) { try { string extension = Path.GetExtension(file).ToLower(); string fileName = Path.GetFileName(file); string relativePath = RemoveAbsolutePath(Path.GetDirectoryName(file), source.Path); FileInfo fileInfo = new FileInfo(file); if (MediaFile.IMAGE_FILE_EXTENSIONS.Contains(extension)) { if (!files.Any(filePath => (Path.GetFileName(filePath) == Path.GetFileNameWithoutExtension(file)))) { ImageFile imageFile = new ImageFile(fileName, relativePath, parent, source) { FileSize = fileInfo.Length }; try { imageFile.Size = ImageFileHelper.GetDimensions(file); } catch {} parent.Files.Add(imageFile); parent.IncreaseImageCount(); AddDatabaseImageEntry(imageFile, sourceDatabase, reScan); } } else if (MediaFile.VIDEO_FILE_EXTENSIONS.Contains(extension)) { VideoFile videoFile = new VideoFile(fileName, relativePath, parent, source) { FileSize = fileInfo.Length, ThumbnailName = fileName + ".tn.jpg", PreviewName = fileName + ".jpg" }; try { TagLib.File tagFile = TagLib.File.Create(file); videoFile.Duration = tagFile.Properties.Duration; videoFile.Size = new Size(tagFile.Properties.VideoWidth, tagFile.Properties.VideoHeight); foreach (TagLib.ICodec codec in tagFile.Properties.Codecs) { MediaCodec mediaCodec = new MediaCodec(MediaCodec.TranslateCodecType(codec.MediaTypes), codec.Description); if (source.Codecs.Contains(mediaCodec)) { mediaCodec = source.Codecs.First(x => x.Equals(mediaCodec)); } else { source.Codecs.Add(mediaCodec); } videoFile.Codecs.Add(mediaCodec); } } catch {} parent.Files.Add(videoFile); parent.IncreaseVideoCount(); AddDatabaseImageEntry(videoFile, sourceDatabase, reScan); } } catch {} } }