diff --git a/src/adaptors/base/baseExtendApi.ts b/src/adaptors/base/baseExtendApi.ts index 022b528d..034e3813 100644 --- a/src/adaptors/base/baseExtendApi.ts +++ b/src/adaptors/base/baseExtendApi.ts @@ -185,6 +185,24 @@ class BaseExtendApi extends WebApi implements IBlogApi, IWebApi { .replace(/\[MM]/g, m) .replace(/\[mm]/g, m) .replace(/\[dd]/g, d) + // 分类 + if (cfg?.mdFilenameRule?.includes("category")) { + const cat = post?.categories?.[0] ?? "" + filename = filename.replace("[category]", cat) + } + if (cfg?.mdFilenameRule?.includes("cats")) { + const cat = post?.categories?.join("/") ?? "" + filename = filename.replace(/\[cats]/, cat) + } + // 标签 + if (cfg?.mdFilenameRule?.includes("tag")) { + const tag = post?.mt_keywords?.split(",")?.[0] ?? "" + filename = filename.replace(/\[tag]/, tag) + } + if (cfg?.mdFilenameRule?.includes("tags")) { + const tag = post?.mt_keywords?.split(",")?.join("/") ?? "" + filename = filename.replace(/\[tags]/, tag) + } if (cfg.useMdFilename) { // 使用真实文件名作为MD文件名 filename = filename.replace(/\[filename]/g, post.originalTitle) diff --git a/src/locales/en_US.ts b/src/locales/en_US.ts index 2613183c..be69be52 100644 --- a/src/locales/en_US.ts +++ b/src/locales/en_US.ts @@ -169,7 +169,7 @@ export default { "MD file preview rules (place occupied: [user] [repo] [Branch] [docpath]), for example:/[user]/[repo]/blob/[branch]/[docpath]", "setting.blog.mdFilenameRule": "File rule", "setting.blog.mdFilenameRule.tip": - "Markdown File Name Rules (Plasma: [yyyy] [MM] [dd] [slug] [filename]), for example: [filename].md or [slug].md or [yyyy]-[MM]-[dd]-[slug].md", + "Markdown File Name Rules (Plasma: [yyyy] [MM] [mm] [dd] [category] [cats] [tag] [tags] [slug] [filename]), for example: [filename].md or [slug].md or [yyyy]-[MM]-[dd]-[slug].md", "setting.blog.username": "Username", "setting.blog.password": "Password", "setting.blog.apiurl": "API Url", diff --git a/src/locales/zh_CN.ts b/src/locales/zh_CN.ts index bf5db888..f518cac4 100644 --- a/src/locales/zh_CN.ts +++ b/src/locales/zh_CN.ts @@ -173,7 +173,7 @@ export default { "如果不明白原理,请勿修改此选项。MD文件预览规则(占位符:[user] [repo] [branch] [docpath]),通常是:/[user]/[repo]/blob/[branch]/[docpath]", "setting.blog.mdFilenameRule": "文件规则", "setting.blog.mdFilenameRule.tip": - "Markdown文件名规则(占位符:[yyyy] [MM] [dd] [slug] [filename]),例如:[filename].md、[slug].md、[yyyy]-[mm]-[dd]-[slug].md", + "Markdown文件名规则(占位符:[yyyy] [MM] [mm] [dd] [category] [cats] [tag] [tags] [slug] [filename]),例如:[filename].md、[slug].md、[yyyy]-[mm]-[dd]-[slug].md", "setting.blog.pageType": "发布格式", "setting.blog.validate": "验证", "setting.blog.save": "保存", diff --git a/src/utils/mdUtils.ts b/src/utils/mdUtils.ts index 515db143..af36fbb9 100644 --- a/src/utils/mdUtils.ts +++ b/src/utils/mdUtils.ts @@ -145,7 +145,7 @@ class MdUtils { } /** - * 获取一个字符串的“人类可读”版本 + * 获取一个字符串的人类可读版本 * * @param input */ @@ -155,12 +155,18 @@ class MdUtils { // 在中文与英文/数字之间添加 - .replace(/([\u4e00-\u9fa5])([a-zA-Z0-9])/g, "$1-$2") .replace(/([a-zA-Z0-9])([\u4e00-\u9fa5])/g, "$1-$2") - // 移除非法字符,保留 / - _ . ~ - .replace(/[^\w\-_.~\u4e00-\u9fa5\/-_]/g, "") + // 移除非法字符,保留 / - _ . ~ + .replace(/[^\w\u4e00-\u9fa5\/\-_.~]/g, "") // 将空格替换为 - .replace(/\s+/g, "-") + // 合并连续的 / + .replace(/\/+/g, "/") // 合并连续的 - .replace(/-+/g, "-") + // 合并连续的 _ + .replace(/_+/g, "_") + // 合并连续的 . + .replace(/\.{2,}/g, ".") // 去掉开头和结尾的 - .replace(/^-+|-+$/g, "") )