From e59d33997d158c736ee823e05b2a0bbd95dfb95d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=A2=85=E6=B5=A9=E4=B8=9C?= <1083092844@qq.com>
Date: Wed, 9 Apr 2025 13:38:36 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC=E5=8F=B7?=
=?UTF-8?q?=EF=BC=8C=E5=BC=B9=E5=B9=95=E6=97=A5=E5=BF=97=E8=B7=AF=E5=BE=84?=
=?UTF-8?q?=E5=8E=BB=E9=99=A4=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
BarrageGrab/Logger.cs | 28 +++++++++++++++++++++++++-
BarrageGrab/Properties/AssemblyInfo.cs | 4 ++--
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/BarrageGrab/Logger.cs b/BarrageGrab/Logger.cs
index 967da2c..756883f 100644
--- a/BarrageGrab/Logger.cs
+++ b/BarrageGrab/Logger.cs
@@ -85,12 +85,13 @@ namespace BarrageGrab
var room = AppRuntime.RoomCaches.GetCachedWebRoomInfo(msg.RoomId.ToString());
if(room == null) return;
var date = DateTime.Now.ToString("yyyy年MM月dd日直播");
- dir = Path.Combine(dir, $"({room.WebRoomId}){room?.Owner?.Nickname ?? "-1"}", date);
+ dir = Path.Combine(dir, $"({room.WebRoomId}){room?.Owner?.Nickname ?? "-1"}", date, "场次" + msg.RoomId.ToString());
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
var path = Path.Combine(dir, type + ".txt");
+ path = SafePathString(path);
if (!File.Exists(path))
{
File.Create(path).Close();
@@ -107,6 +108,31 @@ namespace BarrageGrab
}
}
+ ///
+ /// 将字符串中的特殊字符转换为'?',使其安全用于文件路径
+ ///
+ /// 输入字符串
+ /// 处理后的安全字符串
+ public static string SafePathString(string input)
+ {
+ //在文件系统中,以下字符通常不允许用于文件名:\ / : * ? " < > |
+ if (string.IsNullOrEmpty(input))
+ return input;
+
+ // 文件系统中不允许的字符
+ char[] invalidChars = Path.GetInvalidFileNameChars().Concat(Path.GetInvalidPathChars()).Distinct().ToArray();
+
+ StringBuilder result = new StringBuilder(input.Length);
+ foreach (char c in input)
+ {
+ result.Append(invalidChars.Contains(c) ? '?' : c);
+ }
+
+ return result.ToString();
+ }
+
+
+
private static string LogText(Msg msg, PackMsgType barType)
{
var rinfo = AppRuntime.RoomCaches.GetCachedWebRoomInfo(msg.RoomId.ToString());
diff --git a/BarrageGrab/Properties/AssemblyInfo.cs b/BarrageGrab/Properties/AssemblyInfo.cs
index 6d1e8b2..966c8a5 100644
--- a/BarrageGrab/Properties/AssemblyInfo.cs
+++ b/BarrageGrab/Properties/AssemblyInfo.cs
@@ -33,6 +33,6 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.7.7")]
-[assembly: AssemblyFileVersion("2.7.7")]
+[assembly: AssemblyVersion("2.7.8")]
+[assembly: AssemblyFileVersion("2.7.8")]
[assembly: NeutralResourcesLanguage("zh-CN")]