56 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using ExifLibrary;
using JetBrains.Annotations;
namespace PhotoRenamer.Base
{
public static class FilesHelper
{
private static readonly string[] SupportedFileExtensions = {".jpg", ".cr2", ".mp4"};
public static IEnumerable<string> FindSupportedFilesRecursively(string path)
{
var files = Directory.EnumerateFiles(path, "*", SearchOption.AllDirectories);
foreach (var file in files)
{
var fileExt = Path.GetExtension(file);
if(fileExt == null) continue;
foreach (var supportedFileExtension in SupportedFileExtensions)
{
if (fileExt.Equals(supportedFileExtension, StringComparison.InvariantCultureIgnoreCase)) yield return file;
}
}
}
public static IEnumerable<MediaFile> GetMediaFiles([NotNull] IEnumerable<string> files)
{
if (files == null) throw new ArgumentNullException(nameof(files));
foreach (var file in files)
{
var imageFile = ImageFile.FromFile(file);
var dateTime = imageFile.Properties.Get<ExifDateTime>(ExifTag.DateTimeOriginal);
var mediaFile = new MediaFile(file, dateTime.Value);
yield return mediaFile;
}
}
}
public class MediaFile
{
public string Path { get; }
public DateTime CreationDate { get; }
public MediaFile(string path, DateTime creationDate)
{
Path = path;
CreationDate = creationDate;
}
}
}