diff --git a/kernel/model/assets.go b/kernel/model/assets.go index 984b70d98..a7586768d 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -187,10 +187,6 @@ func NetAssets2LocalAssets(rootID string, onlyImg bool, originalURL string) (err return } - var files int - var size int64 - msgId := gulu.Rand.String(7) - docDirLocalPath := filepath.Join(util.DataDir, tree.Box, path.Dir(tree.Path)) assetsDirPath := getAssetsDir(filepath.Join(util.DataDir, tree.Box), docDirLocalPath) if !gulu.File.IsExist(assetsDirPath) { @@ -199,6 +195,15 @@ func NetAssets2LocalAssets(rootID string, onlyImg bool, originalURL string) (err } } + err = netAssets2LocalAssets0(tree, onlyImg, originalURL, assetsDirPath, true) + return +} + +func netAssets2LocalAssets0(tree *parse.Tree, onlyImg bool, originalURL string, assetsDirPath string, needWriteTree bool) (err error) { + var files int + var size int64 + msgId := gulu.Rand.String(7) + browserClient := util.NewCustomReqClient() // 自定义了 TLS 指纹,增加下载成功率 forbiddenCount := 0 @@ -284,6 +289,7 @@ func NetAssets2LocalAssets(rootID string, onlyImg bool, originalURL string) (err if 64 < len(displayU) { displayU = displayU[:64] + "..." } + util.PushUpdateMsg(msgId, fmt.Sprintf(Conf.Language(119), displayU), 15000) request := browserClient.R() request.SetRetryCount(1).SetRetryFixedInterval(3 * time.Second) @@ -365,21 +371,24 @@ func NetAssets2LocalAssets(rootID string, onlyImg bool, originalURL string) (err } util.PushClearMsg(msgId) - if 0 < files { - msgId = util.PushMsg(Conf.Language(113), 7000) - if err = writeTreeUpsertQueue(tree); err != nil { - return - } - util.PushUpdateMsg(msgId, fmt.Sprintf(Conf.Language(120), files, humanize.BytesCustomCeil(uint64(size), 2)), 5000) - if 0 < forbiddenCount { - util.PushErrMsg(fmt.Sprintf(Conf.Language(255), forbiddenCount), 5000) - } - } else { - if 0 < forbiddenCount { - util.PushErrMsg(fmt.Sprintf(Conf.Language(255), forbiddenCount), 5000) + if needWriteTree { + if 0 < files { + msgId = util.PushMsg(Conf.Language(113), 7000) + if err = writeTreeUpsertQueue(tree); err != nil { + return + } + util.PushUpdateMsg(msgId, fmt.Sprintf(Conf.Language(120), files, humanize.BytesCustomCeil(uint64(size), 2)), 5000) + + if 0 < forbiddenCount { + util.PushErrMsg(fmt.Sprintf(Conf.Language(255), forbiddenCount), 5000) + } } else { - util.PushMsg(Conf.Language(121), 3000) + if 0 < forbiddenCount { + util.PushErrMsg(fmt.Sprintf(Conf.Language(255), forbiddenCount), 5000) + } else { + util.PushMsg(Conf.Language(121), 3000) + } } } return diff --git a/kernel/model/export.go b/kernel/model/export.go index eebb188e9..de0eb3370 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -716,7 +716,7 @@ func ExportDocx(id, savePath string, removeAssets, merge bool) (fullPath string, content = strings.ReplaceAll(content, " \n", "
\n") tmpDocxPath := filepath.Join(tmpDir, name+".docx") - args := []string{ // pandoc -f html --resource-path=请从这里开始 请从这里开始\index.html -o test.docx + args := []string{ "-f", "html+tex_math_dollars", "--resource-path", tmpDir, "-o", tmpDocxPath, @@ -796,17 +796,7 @@ func ExportMarkdownHTML(id, savePath string, docx, merge bool) (name, dom string } if docx { - ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { - if ast.NodeLinkDest == n.Type { - if bytes.HasPrefix(n.Tokens, []byte("file://")) { - n.Tokens = bytes.ReplaceAll(n.Tokens, []byte("\\"), []byte("/")) - if !bytes.HasPrefix(n.Tokens, []byte("file:///")) { - n.Tokens = bytes.ReplaceAll(n.Tokens, []byte("file://"), []byte("file:///")) - } - } - } - return ast.WalkContinue - }) + netAssets2LocalAssets0(tree, true, "", filepath.Join(savePath, "assets"), false) } assets := getAssetsLinkDests(tree.Root, docx) @@ -814,7 +804,7 @@ func ExportMarkdownHTML(id, savePath string, docx, merge bool) (name, dom string if !util.IsAssetLinkDest([]byte(asset), docx) { continue } - + if strings.Contains(asset, "?") { asset = asset[:strings.LastIndex(asset, "?")] }