From b4a800f96ece3b71d37c8f5e6e37b1d929350b26 Mon Sep 17 00:00:00 2001 From: Eguzki Astiz Lezaun Date: Mon, 23 Sep 2024 23:44:13 +0200 Subject: [PATCH] wip --- Cargo.lock | 48 ++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/datetime_tag_writer.rs | 15 ++++++++++-- src/parser.rs | 6 +++++ src/stats.rs | 1 - 5 files changed, 68 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 93d64b3..6ffd668 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aho-corasick" version = "1.1.2" @@ -173,6 +179,21 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "equivalent" version = "1.0.1" @@ -266,6 +287,17 @@ version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +[[package]] +name = "little_exif" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91291278cdc046db655fd951010d5dad42cef2daf138c694111479e81e716dfd" +dependencies = [ + "crc", + "miniz_oxide", + "paste", +] + [[package]] name = "log" version = "0.4.20" @@ -278,6 +310,15 @@ version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mutate_once" version = "0.1.1" @@ -299,6 +340,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "proc-macro2" version = "1.0.78" @@ -411,6 +458,7 @@ dependencies = [ "clap", "filetime", "kamadak-exif", + "little_exif", "regex", "serde", "serde_yaml", diff --git a/Cargo.toml b/Cargo.toml index d963f5c..a886b77 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,3 +14,4 @@ regex = "1.10" chrono = "0.4.34" filetime = "0.2" kamadak-exif = "0.5.5" +little_exif = "0.4.0" diff --git a/src/datetime_tag_writer.rs b/src/datetime_tag_writer.rs index 2dd8126..6e59739 100644 --- a/src/datetime_tag_writer.rs +++ b/src/datetime_tag_writer.rs @@ -1,6 +1,17 @@ use chrono::{DateTime, Utc}; +use little_exif::exif_tag::ExifTag; +use little_exif::metadata::Metadata; use std::path::Path; -pub fn write_tag(path: &Path, dateTag: DateTime) -> Result<(), String> { - return Ok(()); +pub fn write_tag(path: &Path, date_tag: DateTime) -> Result<(), String> { + let mut metadata = match Metadata::new_from_path(path) { + Ok(metadata) => metadata, + Err(e) => return Err(e.to_string()), + }; + + metadata.set_tag(ExifTag::CreateDate(date_tag.to_string())); + match metadata.write_to_file(path) { + Ok(_) => Ok(()), + Err(e) => return Err(e.to_string()), + } } diff --git a/src/parser.rs b/src/parser.rs index fe99611..6ff73cf 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1,6 +1,12 @@ use chrono::{DateTime, Utc}; use regex::Regex; +#[derive(Clone, Debug)] +pub struct DateTimeUtc(pub DateTime); + +// https://github.com/waltzofpearls/dateparser/blob/main/dateparser/src/lib.rs +// https://github.com/waltzofpearls/dateparser/blob/main/dateparser/src/datetime.rs#L26 + pub struct Parser { patterns: Vec, } diff --git a/src/stats.rs b/src/stats.rs index 3aa0194..254548f 100644 --- a/src/stats.rs +++ b/src/stats.rs @@ -83,7 +83,6 @@ impl FromIterator for Stats { } }; } - s } }