From 9034e4c400a664a0d590d7fd4c369342ae3b2959 Mon Sep 17 00:00:00 2001 From: yiyun Date: Thu, 4 Jan 2024 00:00:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(plugins/itodaysplus):=200.1.2:=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4=20settings.json=20=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/ITodaysPlus/ITodaysPlus.cs | 144 +++++++++++++++------------ plugins/ITodaysPlus/README.md | 2 +- plugins/ITodaysPlus/SettingsModel.cs | 13 +-- plugins/ITodaysPlus/info.json | 2 +- plugins/ITodaysPlus/settings.json | 8 +- 5 files changed, 89 insertions(+), 80 deletions(-) diff --git a/plugins/ITodaysPlus/ITodaysPlus.cs b/plugins/ITodaysPlus/ITodaysPlus.cs index b1b7d8d30..4737f27a9 100644 --- a/plugins/ITodaysPlus/ITodaysPlus.cs +++ b/plugins/ITodaysPlus/ITodaysPlus.cs @@ -23,11 +23,11 @@ public long SecondsPeriod { get { - var settings = PluginSettingsModelFactory.Create(nameof(ITodaysPlus)); - - return settings.SecondsPeriod; + return 1; } } + + public DateTime ITodaysBackupLastExecute { get; set; } #endregion public override (bool IsSuccess, string Message) AfterEnable() @@ -49,84 +49,100 @@ public async Task ExecuteAsync() { var settings = PluginSettingsModelFactory.Create(nameof(ITodaysPlus)); - #region 备份到 本地 - // 备份到 本地 - if (settings.Backup.EnabledBackupToLocal) + #region 爱今天-备份记录 + try { - ITodaysUtil iTodaysUtil = new ITodaysUtil(); - var jsonOptions = new JsonSerializerOptions + if (DateTime.Now - ITodaysBackupLastExecute > TimeSpan.FromSeconds(settings.Backup.SecondsPeriod)) { - Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping, - WriteIndented = true - }; - try - { - var loginResModel = iTodaysUtil.Login(settings.ITodays.UserName, settings.ITodays.Password); - if (loginResModel.status == "1") + ITodaysBackupLastExecute = DateTime.Now; + + #region 备份到 本地 + // 备份到 本地 + if (settings.Backup.EnabledBackupToLocal) { - // 登录成功 - string folderPath = Path.Combine(PluginPathProvider.PluginsRootPath(), nameof(ITodaysPlus), "Backups"); - if (!Directory.Exists(folderPath)) + ITodaysUtil iTodaysUtil = new ITodaysUtil(); + var jsonOptions = new JsonSerializerOptions { - Directory.CreateDirectory(folderPath); - } - string loginResFilePath = Path.Combine(folderPath, "login.json"); - await File.WriteAllTextAsync(path: loginResFilePath, System.Text.Json.JsonSerializer.Serialize(loginResModel, jsonOptions), Encoding.UTF8); - - #region 备份日期记录 - if (!string.IsNullOrEmpty(settings.Backup?.DateRecordStartTime) - && - DateTime.TryParse(settings.Backup.DateRecordStartTime, out DateTime startTime) - && - !string.IsNullOrEmpty(settings.Backup?.DateRecordEndTime) - && - DateTime.TryParse(settings.Backup.DateRecordEndTime, out DateTime endTime)) + Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping, + WriteIndented = true + }; + try { - var folderDir = new DirectoryInfo(folderPath); - while (startTime <= endTime) + var loginResModel = iTodaysUtil.Login(settings.UserName, settings.Password); + if (loginResModel.status == "1") { - string dateRecordFileName = $"DateRecord-{startTime.ToString("yyyy-MM-dd")}.json"; - string dateRecordFilePath = Path.Combine(folderPath, dateRecordFileName); - Console.WriteLine($"{dateRecordFileName} - 尝试"); + // 登录成功 + string folderPath = Path.Combine(PluginPathProvider.PluginsRootPath(), nameof(ITodaysPlus), "Backups"); + if (!Directory.Exists(folderPath)) + { + Directory.CreateDirectory(folderPath); + } + string loginResFilePath = Path.Combine(folderPath, "login.json"); + await File.WriteAllTextAsync(path: loginResFilePath, System.Text.Json.JsonSerializer.Serialize(loginResModel, jsonOptions), Encoding.UTF8); - var dateRecordFileNames = folderDir.GetFiles("DateRecord-*.json")?.Select(m => m.Name)?.ToArray(); - if (dateRecordFileNames != null && !dateRecordFileNames.Contains(dateRecordFileName)) + #region 备份日期记录 + if (!string.IsNullOrEmpty(settings.Backup?.DateRecordStartTime) + && + DateTime.TryParse(settings.Backup.DateRecordStartTime, out DateTime startTime) + && + !string.IsNullOrEmpty(settings.Backup?.DateRecordEndTime) + && + DateTime.TryParse(settings.Backup.DateRecordEndTime, out DateTime endTime)) { - // 不存在此记录才 新增保存 - try + var folderDir = new DirectoryInfo(folderPath); + while (startTime <= endTime) { - var dateRecordResModel = iTodaysUtil.GetDateRecord(loginResModel.token, startTime); - if (dateRecordResModel.ResponseModel != null - && dateRecordResModel.ResponseModel.status == 1 - && dateRecordResModel.DataModel != null - && dateRecordResModel.DataModel.items.Length >= 1) + string dateRecordFileName = $"DateRecord-{startTime.ToString("yyyy-MM-dd")}.json"; + string dateRecordFilePath = Path.Combine(folderPath, dateRecordFileName); + Console.WriteLine($"{dateRecordFileName} - 尝试"); + + var dateRecordFileNames = folderDir.GetFiles("DateRecord-*.json")?.Select(m => m.Name)?.ToArray(); + if (dateRecordFileNames != null && !dateRecordFileNames.Contains(dateRecordFileName)) { - // 按日期/每一天 保存, 而不按每一条记录保存 - await File.WriteAllTextAsync(path: dateRecordFilePath, - System.Text.Json.JsonSerializer.Serialize(dateRecordResModel.DataModel, jsonOptions), - Encoding.UTF8); - Console.WriteLine($"{dateRecordFileName} - 新增保存"); + // 不存在此记录才 新增保存 + try + { + var dateRecordResModel = iTodaysUtil.GetDateRecord(loginResModel.token, startTime); + if (dateRecordResModel.ResponseModel != null + && dateRecordResModel.ResponseModel.status == 1 + && dateRecordResModel.DataModel != null + && dateRecordResModel.DataModel.items.Length >= 1) + { + // 按日期/每一天 保存, 而不按每一条记录保存 + await File.WriteAllTextAsync(path: dateRecordFilePath, + System.Text.Json.JsonSerializer.Serialize(dateRecordResModel.DataModel, jsonOptions), + Encoding.UTF8); + Console.WriteLine($"{dateRecordFileName} - 新增保存"); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + + // 避免频繁 + Thread.Sleep(2000); } - } - catch (Exception ex) - { - Console.WriteLine(ex.ToString()); - } - // 避免频繁 - Thread.Sleep(2000); + startTime = startTime.AddDays(1); + } } - - startTime = startTime.AddDays(1); + #endregion } } - #endregion + catch (Exception ex) + { + Console.WriteLine($"爱今天-备份记录: {ex.ToString()}"); + } } + #endregion + + Console.WriteLine($"执行定时任务成功: 爱今天-备份记录"); } - catch (Exception ex) - { - Console.WriteLine(ex.ToString()); - } + } + catch (Exception ex) + { + Console.WriteLine($"执行定时任务失败: 爱今天-备份记录: {ex.ToString()}"); } #endregion diff --git a/plugins/ITodaysPlus/README.md b/plugins/ITodaysPlus/README.md index da9abe7c0..2455f7be6 100644 --- a/plugins/ITodaysPlus/README.md +++ b/plugins/ITodaysPlus/README.md @@ -12,7 +12,7 @@ - + diff --git a/plugins/ITodaysPlus/SettingsModel.cs b/plugins/ITodaysPlus/SettingsModel.cs index 4fb0fbb52..900be364f 100644 --- a/plugins/ITodaysPlus/SettingsModel.cs +++ b/plugins/ITodaysPlus/SettingsModel.cs @@ -8,21 +8,16 @@ namespace ITodaysPlus { public class SettingsModel : PluginSettingsModel { - public long SecondsPeriod { get; set; } + public string UserName { get; set; } - public ITodaysModel ITodays { get; set; } - - public class ITodaysModel - { - public string UserName { get; set; } - - public string Password { get; set; } - } + public string Password { get; set; } public BackupModel Backup { get; set; } public class BackupModel { + public long SecondsPeriod { get; set; } + public bool EnabledBackupToLocal { get; set; } /// diff --git a/plugins/ITodaysPlus/info.json b/plugins/ITodaysPlus/info.json index 00ed33c16..9b7b67b2c 100644 --- a/plugins/ITodaysPlus/info.json +++ b/plugins/ITodaysPlus/info.json @@ -3,6 +3,6 @@ "DisplayName": "iTodayss+", "Description": "提升 爱今天/时间朋友 体验", "Author": "yiyun", - "Version": "0.1.1", + "Version": "0.1.2", "SupportedVersions": [ "0.0.1" ] } \ No newline at end of file diff --git a/plugins/ITodaysPlus/settings.json b/plugins/ITodaysPlus/settings.json index 6f4a33132..20334c365 100644 --- a/plugins/ITodaysPlus/settings.json +++ b/plugins/ITodaysPlus/settings.json @@ -1,10 +1,8 @@ { - "SecondsPeriod": 3600, - "ITodays": { - "UserName": "", - "Password": "" - }, + "UserName": "", + "Password": "", "Backup": { + "SecondsPeriod": 3600, "EnabledBackupToLocal": false, "DateRecordStartTime": "2018-01-01", "DateRecordEndTime": "2023-01-01"