DateTakenExtractor 1.1.2
See the version list below for details.
dotnet add package DateTakenExtractor --version 1.1.2
NuGet\Install-Package DateTakenExtractor -Version 1.1.2
<PackageReference Include="DateTakenExtractor" Version="1.1.2" />
paket add DateTakenExtractor --version 1.1.2
#r "nuget: DateTakenExtractor, 1.1.2"
// Install DateTakenExtractor as a Cake Addin #addin nuget:?package=DateTakenExtractor&version=1.1.2 // Install DateTakenExtractor as a Cake Tool #tool nuget:?package=DateTakenExtractor&version=1.1.2
DateTakenExtractor
DateTakenExtractor (DTE) is a small, fast, simple library for reading and writing Date Taken metadata for photos and videos, with the library consisting of only a single static
C# class.
This library came into existence because two separate projects of mine used the same classes/packages for finding this data, and trying to keep those two files the same was annoying and difficult. I also wanted to redo the class used in those two projects to be smaller, simpler, and better.
This library uses MetadataExtractor for reading metadata from files, and is essentially a greatly simplified wrapper around it meant for reading exclusively Date Taken metadata.
<br>ExifTool is a command line program used only for writing metadata, and needs to be added to the PATH
or in a folder in the PATH
in order for it to work with DTE.
Installing DateTakenExtractor
The easiest way to use this library is via its NuGet package.
Either add this to your project file
<ItemGroup>
<PackageReference Include="DateTakenExtractor" Version="1.1.0"/>
</ItemGroup>
Or type this in Visual Studio's Package Manager Console:
PM> Install-Package DateTakenExtractor
Or search for DateTakenExtractor
in the NuGet Package Manager in Visual Studio or JetBrains Rider.
DTE also REQUIRES ExifTool for updating (but not reading) Date Taken metadata in files.
<br>To install ExifTool, download the .exe, rename it from exiftool(-k).exe
to exiftool.exe
, and add it to your PATH
or move the exe to a directory already in the PATH
, like C:/Windows
.
Using DateTakenExtractor
DateTakenExtractor is very simple to use. The class contains several public methods for your use.
using D = DateTakenExtractor.DateTakenExtractor;
//These methods can take either file paths as strings, or FileStreams.
//First checks the metadata, then the filename, for the Date Taken (DT) data. dateTakenSrc would either be 'Metadata', 'Filename', or 'None'.
DateTime? autoResult = D.GetDateTakenAuto("C:/yourfilehere.jpg", out DateTakenSrc dateTakenSrc);
//Checks only the metadata of the file for DT data. null if none found.
DateTime? metadataResult = D.GetDateTakenFromMetadata("C:/yourfilehere.jpg");
//Checks only the filename of the file for DT data. Notice the timestamp pattern ↓ in the filename. null if none found.
DateTime? filenameResult = D.GetDateTakenFromFilename("C:/IMG_20210320_175909.jpg");
//Attempt to get DT data from both the metadata AND the filename.
D.GetDateTakenFromBoth("C:/IMG_20210320_175909.jpg", out DateTime? metadataDT, out DateTime? filenameDT);
//New in V1.1: updating Date Taken metadata! This works for .jpg, .png, .mp4, and .mov files.
//.gif and .mkv files are iffy since they're not really meant to contain this kind of data.
D.UpdateDateTaken("C:/IMG_20210320_175909.jpg", new DateTime(2020, 6, 9, 12, 30, 0));
Date Taken metadata can come from two locations: the file's actual internal metadata, or its filename. If a DTE method can't find the Date Taken in the metadata or the filename, the return value/out parameter is set to null
.
Contributing to DateTakenExtractor
To contribute to DateTakenExtractor, follow these steps:
- Fork this repository.
- Create a branch:
git checkout -b <branch_name>
. - Make your changes and commit them:
git commit -m '<commit_message>'
- Push to the original branch:
git push origin DateTakenExtractor/<location>
- Create the pull request.
Alternatively see the GitHub documentation on creating a pull request.
Feel free to either email me or contribute if you spot a bug 🐛 or have a feature idea 💡.
Contact
If you want to contact me you can reach me at ellduc4@gmail.com
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- MetadataExtractor (>= 2.7.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
DTE V1.1.2 details on GitHub. Updating to 1.1.2 is necessary if wanting to update Date Taken metadata as fixes issues.