From 696e8344a8278fcc9d836264b5e4f2ea64a7a3f6 Mon Sep 17 00:00:00 2001 From: Rui Sun Date: Wed, 25 Oct 2023 23:56:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=92=8C=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WechatMediaRenamer/Logger.cs | 31 +++++++++++++ WechatMediaRenamer/MediaFileRenamer.cs | 47 +++++++++++--------- WechatMediaRenamer/WechatMediaRenamer.csproj | 1 + 3 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 WechatMediaRenamer/Logger.cs diff --git a/WechatMediaRenamer/Logger.cs b/WechatMediaRenamer/Logger.cs new file mode 100644 index 0000000..0a45e1d --- /dev/null +++ b/WechatMediaRenamer/Logger.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WechatMediaRenamer +{ + public class Logger + { + internal static void LogString(string input) + { + string logPath = AppDomain.CurrentDomain.BaseDirectory + "logfile.txt"; // 日志文件路径,以应用程序所在目录为基础 + + try + { + using (StreamWriter writer = new StreamWriter(logPath, true)) + { + writer.WriteLine(DateTime.Now.ToString() + ": " + input); // 写入当前时间和输入参数到日志文件 + } + + Console.WriteLine("日志已写入文件: " + logPath); + } + catch (Exception ex) + { + Console.WriteLine("写入日志时出现错误: " + ex.Message); + } + } + } +} diff --git a/WechatMediaRenamer/MediaFileRenamer.cs b/WechatMediaRenamer/MediaFileRenamer.cs index 5a64bf1..6af6a20 100644 --- a/WechatMediaRenamer/MediaFileRenamer.cs +++ b/WechatMediaRenamer/MediaFileRenamer.cs @@ -76,34 +76,41 @@ namespace WechatMediaRenamer private DateTime? GetShotDate() { DateTime? shotDate = null; - IEnumerable directories = ImageMetadataReader.ReadMetadata(FullFilePath); - Print(directories); - foreach (var directory in directories) + try { - if (directory is ExifSubIfdDirectory) + IEnumerable directories = ImageMetadataReader.ReadMetadata(FullFilePath); + Print(directories); + foreach (var directory in directories) { - var subIfdDirectory = directory as ExifSubIfdDirectory; - if (subIfdDirectory.ContainsTag(ExifDirectoryBase.TagDateTimeOriginal)) + if (directory is ExifSubIfdDirectory) { - shotDate = subIfdDirectory.GetDateTime(ExifDirectoryBase.TagDateTimeOriginal); - break; // Exit the loop since we found the shot date + var subIfdDirectory = directory as ExifSubIfdDirectory; + if (subIfdDirectory.ContainsTag(ExifDirectoryBase.TagDateTimeOriginal)) + { + shotDate = subIfdDirectory.GetDateTime(ExifDirectoryBase.TagDateTimeOriginal); + break; // Exit the loop since we found the shot date + } + if (subIfdDirectory.ContainsTag(ExifDirectoryBase.TagDateTimeDigitized)) + { + shotDate = subIfdDirectory.GetDateTime(ExifDirectoryBase.TagDateTime); + break; // Exit the loop since we found the shot date + } } - if (subIfdDirectory.ContainsTag(ExifDirectoryBase.TagDateTimeDigitized)) + if (directory is QuickTimeMovieHeaderDirectory) { - shotDate = subIfdDirectory.GetDateTime(ExifDirectoryBase.TagDateTime); - break; // Exit the loop since we found the shot date - } - } - if (directory is QuickTimeMovieHeaderDirectory) - { - var subDirectory = directory as QuickTimeMovieHeaderDirectory; - if (subDirectory.ContainsTag(QuickTimeMovieHeaderDirectory.TagCreated)) - { - shotDate = subDirectory.GetDateTime(QuickTimeMovieHeaderDirectory.TagCreated); - break; + var subDirectory = directory as QuickTimeMovieHeaderDirectory; + if (subDirectory.ContainsTag(QuickTimeMovieHeaderDirectory.TagCreated)) + { + shotDate = subDirectory.GetDateTime(QuickTimeMovieHeaderDirectory.TagCreated); + break; + } } } } + catch (Exception ex) + { + Logger.LogString(ex.Message); + } return shotDate; } diff --git a/WechatMediaRenamer/WechatMediaRenamer.csproj b/WechatMediaRenamer/WechatMediaRenamer.csproj index 8a48926..83b716f 100644 --- a/WechatMediaRenamer/WechatMediaRenamer.csproj +++ b/WechatMediaRenamer/WechatMediaRenamer.csproj @@ -77,6 +77,7 @@ App.xaml Code + MainWindow.xaml