From 603e97b02faaa54a53d4e581cd528678fb1ecdd2 Mon Sep 17 00:00:00 2001 From: qbisi Date: Wed, 15 Jul 2026 09:14:41 +0800 Subject: [PATCH] fix(189pc): normalize escaped apostrophes in names Co-authored-by: Codex <267193182+codex@users.noreply.github.com> --- drivers/189pc/types.go | 8 ++++++++ internal/model/obj.go | 14 +++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/189pc/types.go b/drivers/189pc/types.go index 454b36b10e..ab99db2b7b 100644 --- a/drivers/189pc/types.go +++ b/drivers/189pc/types.go @@ -191,6 +191,10 @@ type Cloud189File struct { // StarLabel int64 `json:"starLabel"` } +func normalizeCloud189Name(name string) string { + return strings.ReplaceAll(name, "\\'", "'") +} + func (c *Cloud189File) CreateTime() time.Time { return time.Time(c.CreateDate) } @@ -207,6 +211,8 @@ func (c *Cloud189File) GetID() string { return string(c.ID) } func (c *Cloud189File) GetPath() string { return "" } func (c *Cloud189File) Thumb() string { return c.Icon.SmallUrl } +func (c *Cloud189File) GetDisplayName() string { return normalizeCloud189Name(c.Name) } + // 文件夹 type Cloud189Folder struct { ID String `json:"id"` @@ -238,6 +244,8 @@ func (c *Cloud189Folder) IsDir() bool { return true } func (c *Cloud189Folder) GetID() string { return string(c.ID) } func (c *Cloud189Folder) GetPath() string { return "" } +func (c *Cloud189Folder) GetDisplayName() string { return normalizeCloud189Name(c.Name) } + type Cloud189FilesResp struct { //ResCode int `json:"res_code"` //ResMessage string `json:"res_message"` diff --git a/internal/model/obj.go b/internal/model/obj.go index ba7467f740..1269b5b797 100644 --- a/internal/model/obj.go +++ b/internal/model/obj.go @@ -19,6 +19,10 @@ type ObjUnwrap interface { Unwrap() Obj } +type ObjDisplayName interface { + GetDisplayName() string +} + type Obj interface { GetSize() int64 GetName() string @@ -132,13 +136,17 @@ func ExtractFolder(objs []Obj, extractFolder string) { }) } -func WrapObjName(objs Obj) Obj { - return &ObjWrapName{Name: utils.MappingName(objs.GetName()), Obj: objs} +func WrapObjName(obj Obj) Obj { + name := obj.GetName() + if displayName, ok := obj.(ObjDisplayName); ok { + name = displayName.GetDisplayName() + } + return &ObjWrapName{Name: utils.MappingName(name), Obj: obj} } func WrapObjsName(objs []Obj) { for i := range objs { - objs[i] = &ObjWrapName{Name: utils.MappingName(objs[i].GetName()), Obj: objs[i]} + objs[i] = WrapObjName(objs[i]) } }