fix: linux下标题包含斜杠导致被分成两级目录的bug(使用∕替代)

This commit is contained in:
fengxxc
2025-02-27 11:29:07 +08:00
parent c457776e1b
commit 6fa0a3a787
3 changed files with 23 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
BUILD_ENV := CGO_ENABLED=0
APP=wechatmp2markdown
VERSION=v1.1.9
VERSION=v1.1.10
# linux or mac 环境编译
# make [cmd]

View File

@@ -83,7 +83,11 @@ markdown和图片文件将保存在 `D:\wechatmp_bak\gitcode操你妈\` 下
> "*" -> ""
> ```
> 在linux环境下使用CLI模式需要为程序赋予可执行与写权限例如` chmod +xw wechatmp2markdown-v1.1.9_linux_amd64`
> 在linux环境下使用CLI模式需要为程序赋予可执行与写权限例如` chmod +xw wechatmp2markdown-v1.1.10_linux_amd64`
> 以及,文件或路径名不能包含以下任何字符:/正斜杠当标题包含以上字符时本程序将用相似的Unicode字符进行替换具体替换规则为
> ```
> "/" -> ""
> ```
### web server 模式
通过web服务使用
@@ -105,7 +109,7 @@ markdown和图片文件将保存在 `D:\wechatmp_bak\gitcode操你妈\` 下
浏览器访问:`localhost:8964?url=https://mp.weixin.qq.com/s/a=1&b=2&image=save`
将返回一个zip文件
> 在linux环境下使用web server模式需要为程序赋予可执行权限例如` chmod +x wechatmp2markdown-v1.1.9_linux_amd64`
> 在linux环境下使用web server模式需要为程序赋予可执行权限例如` chmod +x wechatmp2markdown-v1.1.10_linux_amd64`
## 开发
go 1.20

View File

@@ -57,12 +57,26 @@ func legalizationFilenameForWindows(name string) string {
return name
}
// linux下, 文件名包含非法字符时, 用相似的Unicode字符进行替换
func legalizationFilenameForLinux(name string) string {
// Linux文件名不能包含这些字符
invalidChars := regexp.MustCompile(`[\/]`)
// 如果包含非法字符,则替换
if invalidChars.MatchString(name) {
name = strings.ReplaceAll(name, "/", "")
}
return name
}
// FormatAndSave fomat article and save to local file
func FormatAndSave(article parse.Article, filePath string) error {
// basrPath := filepath.Join(filePath, )
var basePath string
var fileName string
var isWin bool = runtime.GOOS == "windows"
var isLinux bool = runtime.GOOS == "linux"
var separator string
if isWin {
separator = "\\"
@@ -84,6 +98,8 @@ func FormatAndSave(article parse.Article, filePath string) error {
title := strings.TrimSpace(article.Title.Val.(string))
if isWin {
title = legalizationFilenameForWindows(title)
} else if isLinux {
title = legalizationFilenameForLinux(title)
}
// title := "thisistitle"
basePath = filepath.Join(filePath, title)