コード例 #1
0
        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 {}
            }
        }