From ac9224624a06dd8ab16363b73f2646f8845af383 Mon Sep 17 00:00:00 2001 From: Awin Huang Date: Tue, 2 Jan 2024 14:46:20 +0800 Subject: [PATCH] vault backup: 2024-01-02 14:46:20 --- .obsidian/appearance.json | 6 +- .obsidian/community-plugins.json | 3 +- .../obsidian-paste-image-rename/main.js | 942 ++++++++++++++++++ .../obsidian-paste-image-rename/manifest.json | 10 + .../obsidian-paste-image-rename/styles.css | 79 ++ .obsidian/workspace.json | 41 +- 02. 個人:Daily/2024-01-02(週二).md | 25 + 98. templates/日記.md | 17 +- ...c8488a7547573ac02d8ab1afec473553bffdce.png | Bin 0 -> 72689 bytes attachments/wakatime_2023_days.png | Bin 0 -> 3768 bytes attachments/wakatime_2023_weekdays.png | Bin 0 -> 4571 bytes 11 files changed, 1085 insertions(+), 38 deletions(-) create mode 100644 .obsidian/plugins/obsidian-paste-image-rename/main.js create mode 100644 .obsidian/plugins/obsidian-paste-image-rename/manifest.json create mode 100644 .obsidian/plugins/obsidian-paste-image-rename/styles.css create mode 100644 02. 個人:Daily/2024-01-02(週二).md create mode 100644 attachments/edc8488a7547573ac02d8ab1afec473553bffdce.png create mode 100644 attachments/wakatime_2023_days.png create mode 100644 attachments/wakatime_2023_weekdays.png diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json index 72e6a15..8e8fab7 100644 --- a/.obsidian/appearance.json +++ b/.obsidian/appearance.json @@ -1,9 +1,11 @@ { "theme": "moonstone", - "cssTheme": "Blue Topaz", + "cssTheme": "", "baseFontSize": 13, "translucency": false, - "enabledCssSnippets": [], + "enabledCssSnippets": [ + "obsidian" + ], "baseFontSizeAction": true, "interfaceFontFamily": "", "textFontFamily": "Verdana,Microsoft YaHei UI", diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index a247921..89f3c01 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -9,5 +9,6 @@ "periodic-notes", "obsidian-git", "obsidian-quiet-outline", - "obsidian-tracker" + "obsidian-tracker", + "obsidian-paste-image-rename" ] \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-paste-image-rename/main.js b/.obsidian/plugins/obsidian-paste-image-rename/main.js new file mode 100644 index 0000000..9a0fa6d --- /dev/null +++ b/.obsidian/plugins/obsidian-paste-image-rename/main.js @@ -0,0 +1,942 @@ +/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD */ +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// package.json +var require_package = __commonJS({ + "package.json"(exports, module2) { + module2.exports = { + name: "obsidian-paste-image-rename", + version: "1.6.1", + main: "main.js", + scripts: { + start: "node esbuild.config.mjs", + build: "tsc -noEmit -skipLibCheck && BUILD_ENV=production node esbuild.config.mjs && cp manifest.json build", + version: "node version-bump.mjs && git add manifest.json versions.json", + release: "npm run build && gh release create ${npm_package_version} build/*" + }, + keywords: [], + author: "Reorx", + license: "MIT", + devDependencies: { + "@types/node": "^18.11.18", + "@typescript-eslint/eslint-plugin": "^5.49.0", + "@typescript-eslint/parser": "^5.49.0", + "builtin-modules": "^3.3.0", + esbuild: "0.16.17", + obsidian: "^1.1.1", + tslib: "2.5.0", + typescript: "4.9.4" + }, + dependencies: { + "cash-dom": "^8.1.2" + } + }; + } +}); + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => PasteImageRenamePlugin +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian2 = require("obsidian"); + +// src/batch.ts +var import_obsidian = require("obsidian"); + +// src/utils.ts +var DEBUG = false; +if (DEBUG) + console.log("DEBUG is enabled"); +function debugLog(...args) { + if (DEBUG) { + console.log(new Date().toISOString().slice(11, 23), ...args); + } +} +function createElementTree(rootEl, opts) { + const result = { + el: rootEl.createEl(opts.tag, opts), + children: [] + }; + const children = opts.children || []; + for (const child of children) { + result.children.push(createElementTree(result.el, child)); + } + return result; +} +var path = { + // Credit: @creationix/path.js + join(...partSegments) { + let parts = []; + for (let i = 0, l = partSegments.length; i < l; i++) { + parts = parts.concat(partSegments[i].split("/")); + } + const newParts = []; + for (let i = 0, l = parts.length; i < l; i++) { + const part = parts[i]; + if (!part || part === ".") + continue; + else + newParts.push(part); + } + if (parts[0] === "") + newParts.unshift(""); + return newParts.join("/"); + }, + // returns the last part of a path, e.g. 'foo.jpg' + basename(fullpath) { + const sp = fullpath.split("/"); + return sp[sp.length - 1]; + }, + // return extension without dot, e.g. 'jpg' + extension(fullpath) { + const positions = [...fullpath.matchAll(new RegExp("\\.", "gi"))].map((a) => a.index); + return fullpath.slice(positions[positions.length - 1] + 1); + } +}; +var filenameNotAllowedChars = /[^\p{L}0-9~`!@$&*()\-_=+{};'",<.>? ]/ug; +var sanitizer = { + filename(s) { + return s.replace(filenameNotAllowedChars, "").trim(); + }, + delimiter(s) { + s = this.filename(s); + if (!s) + s = "-"; + return s; + } +}; +function escapeRegExp(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} +function lockInputMethodComposition(el) { + const state = { + lock: false + }; + el.addEventListener("compositionstart", () => { + state.lock = true; + }); + el.addEventListener("compositionend", () => { + state.lock = false; + }); + return state; +} + +// src/batch.ts +var ImageBatchRenameModal = class extends import_obsidian.Modal { + constructor(app, activeFile, renameFunc, onClose) { + super(app); + this.activeFile = activeFile; + this.renameFunc = renameFunc; + this.onCloseExtra = onClose; + this.state = { + namePattern: "", + extPattern: "", + nameReplace: "", + renameTasks: [] + }; + } + onOpen() { + this.containerEl.addClass("image-rename-modal"); + const { contentEl, titleEl } = this; + titleEl.setText("Batch rename embeded files"); + const namePatternSetting = new import_obsidian.Setting(contentEl).setName("Name pattern").setDesc("Please input the name pattern to match files (regex)").addText((text) => text.setValue(this.state.namePattern).onChange( + (value) => __async(this, null, function* () { + this.state.namePattern = value; + }) + )); + const npInputEl = namePatternSetting.controlEl.children[0]; + npInputEl.focus(); + const npInputState = lockInputMethodComposition(npInputEl); + npInputEl.addEventListener("keydown", (e) => __async(this, null, function* () { + if (e.key === "Enter" && !npInputState.lock) { + e.preventDefault(); + if (!this.state.namePattern) { + errorEl.innerText = 'Error: "Name pattern" could not be empty'; + errorEl.style.display = "block"; + return; + } + this.matchImageNames(tbodyEl); + } + })); + const extPatternSetting = new import_obsidian.Setting(contentEl).setName("Extension pattern").setDesc("Please input the extension pattern to match files (regex)").addText((text) => text.setValue(this.state.extPattern).onChange( + (value) => __async(this, null, function* () { + this.state.extPattern = value; + }) + )); + const extInputEl = extPatternSetting.controlEl.children[0]; + extInputEl.addEventListener("keydown", (e) => __async(this, null, function* () { + if (e.key === "Enter") { + e.preventDefault(); + this.matchImageNames(tbodyEl); + } + })); + const nameReplaceSetting = new import_obsidian.Setting(contentEl).setName("Name replace").setDesc("Please input the string to replace the matched name (use $1, $2 for regex groups)").addText((text) => text.setValue(this.state.nameReplace).onChange( + (value) => __async(this, null, function* () { + this.state.nameReplace = value; + }) + )); + const nrInputEl = nameReplaceSetting.controlEl.children[0]; + const nrInputState = lockInputMethodComposition(nrInputEl); + nrInputEl.addEventListener("keydown", (e) => __async(this, null, function* () { + if (e.key === "Enter" && !nrInputState.lock) { + e.preventDefault(); + this.matchImageNames(tbodyEl); + } + })); + const matchedContainer = contentEl.createDiv({ + cls: "matched-container" + }); + const tableET = createElementTree(matchedContainer, { + tag: "table", + children: [ + { + tag: "thead", + children: [ + { + tag: "tr", + children: [ + { + tag: "td", + text: "Original path" + }, + { + tag: "td", + text: "Renamed Name" + } + ] + } + ] + }, + { + tag: "tbody" + } + ] + }); + const tbodyEl = tableET.children[1].el; + const errorEl = contentEl.createDiv({ + cls: "error", + attr: { + style: "display: none;" + } + }); + new import_obsidian.Setting(contentEl).addButton((button) => { + button.setButtonText("Rename all").setClass("mod-cta").onClick(() => { + new ConfirmModal( + this.app, + "Confirm rename all", + `Are you sure? This will rename all the ${this.state.renameTasks.length} images matched the pattern.`, + () => { + this.renameAll(); + this.close(); + } + ).open(); + }); + }).addButton((button) => { + button.setButtonText("Cancel").onClick(() => { + this.close(); + }); + }); + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + this.onCloseExtra(); + } + renameAll() { + return __async(this, null, function* () { + debugLog("renameAll", this.state); + for (const task of this.state.renameTasks) { + yield this.renameFunc(task.file, task.name); + } + }); + } + matchImageNames(tbodyEl) { + const { state } = this; + const renameTasks = []; + tbodyEl.empty(); + const fileCache = this.app.metadataCache.getFileCache(this.activeFile); + if (!fileCache || !fileCache.embeds) + return; + const namePatternRegex = new RegExp(state.namePattern, "g"); + const extPatternRegex = new RegExp(state.extPattern); + fileCache.embeds.forEach((embed) => { + const file = this.app.metadataCache.getFirstLinkpathDest(embed.link, this.activeFile.path); + if (!file) { + console.warn("file not found", embed.link); + return; + } + if (state.extPattern) { + const m0 = extPatternRegex.exec(file.extension); + if (!m0) + return; + } + const stem = file.basename; + namePatternRegex.lastIndex = 0; + const m1 = namePatternRegex.exec(stem); + if (!m1) + return; + let renamedName = file.name; + if (state.nameReplace) { + namePatternRegex.lastIndex = 0; + renamedName = stem.replace(namePatternRegex, state.nameReplace); + renamedName = `${renamedName}.${file.extension}`; + } + renameTasks.push({ + file, + name: renamedName + }); + createElementTree(tbodyEl, { + tag: "tr", + children: [ + { + tag: "td", + children: [ + { + tag: "span", + text: file.name + }, + { + tag: "div", + text: file.path, + attr: { + class: "file-path" + } + } + ] + }, + { + tag: "td", + children: [ + { + tag: "span", + text: renamedName + }, + { + tag: "div", + text: path.join(file.parent.path, renamedName), + attr: { + class: "file-path" + } + } + ] + } + ] + }); + }); + debugLog("new renameTasks", renameTasks); + state.renameTasks = renameTasks; + } +}; +var ConfirmModal = class extends import_obsidian.Modal { + constructor(app, title, message, onConfirm) { + super(app); + this.title = title; + this.message = message; + this.onConfirm = onConfirm; + } + onOpen() { + const { contentEl, titleEl } = this; + titleEl.setText(this.title); + contentEl.createEl("p", { + text: this.message + }); + new import_obsidian.Setting(contentEl).addButton((button) => { + button.setButtonText("Yes").setClass("mod-warning").onClick(() => { + this.onConfirm(); + this.close(); + }); + }).addButton((button) => { + button.setButtonText("No").onClick(() => { + this.close(); + }); + }); + } +}; + +// src/template.ts +var dateTmplRegex = /{{DATE:([^}]+)}}/gm; +var frontmatterTmplRegex = /{{frontmatter:([^}]+)}}/gm; +var replaceDateVar = (s, date) => { + const m = dateTmplRegex.exec(s); + if (!m) + return s; + return s.replace(m[0], date.format(m[1])); +}; +var replaceFrontmatterVar = (s, frontmatter) => { + if (!frontmatter) + return s; + const m = frontmatterTmplRegex.exec(s); + if (!m) + return s; + return s.replace(m[0], frontmatter[m[1]] || ""); +}; +var renderTemplate = (tmpl, data, frontmatter) => { + const now = window.moment(); + let text = tmpl; + let newtext; + while ((newtext = replaceDateVar(text, now)) != text) { + text = newtext; + } + while ((newtext = replaceFrontmatterVar(text, frontmatter)) != text) { + text = newtext; + } + text = text.replace(/{{imageNameKey}}/gm, data.imageNameKey).replace(/{{fileName}}/gm, data.fileName).replace(/{{dirName}}/gm, data.dirName).replace(/{{firstHeading}}/gm, data.firstHeading); + return text; +}; + +// src/main.ts +var DEFAULT_SETTINGS = { + imageNamePattern: "{{fileName}}", + dupNumberAtStart: false, + dupNumberDelimiter: "-", + dupNumberAlways: false, + autoRename: false, + handleAllAttachments: false, + excludeExtensionPattern: "", + disableRenameNotice: false +}; +var PASTED_IMAGE_PREFIX = "Pasted image "; +var PasteImageRenamePlugin = class extends import_obsidian2.Plugin { + constructor() { + super(...arguments); + this.modals = []; + } + onload() { + return __async(this, null, function* () { + const pkg = require_package(); + console.log(`Plugin loading: ${pkg.name} ${pkg.version} BUILD_ENV=${"production"}`); + yield this.loadSettings(); + this.registerEvent( + this.app.vault.on("create", (file) => { + if (!(file instanceof import_obsidian2.TFile)) + return; + const timeGapMs = new Date().getTime() - file.stat.ctime; + if (timeGapMs > 1e3) + return; + if (isMarkdownFile(file)) + return; + if (isPastedImage(file)) { + debugLog("pasted image created", file); + this.startRenameProcess(file, this.settings.autoRename); + } else { + if (this.settings.handleAllAttachments) { + debugLog("handleAllAttachments for file", file); + if (this.testExcludeExtension(file)) { + debugLog("excluded file by ext", file); + return; + } + this.startRenameProcess(file, this.settings.autoRename); + } + } + }) + ); + const startBatchRenameProcess = () => { + this.openBatchRenameModal(); + }; + this.addCommand({ + id: "batch-rename-embeded-files", + name: "Batch rename embeded files (in the current file)", + callback: startBatchRenameProcess + }); + if (DEBUG) { + this.addRibbonIcon("wand-glyph", "Batch rename embeded files", startBatchRenameProcess); + } + const batchRenameAllImages = () => { + this.batchRenameAllImages(); + }; + this.addCommand({ + id: "batch-rename-all-images", + name: "Batch rename all images instantly (in the current file)", + callback: batchRenameAllImages + }); + if (DEBUG) { + this.addRibbonIcon("wand-glyph", "Batch rename all images instantly (in the current file)", batchRenameAllImages); + } + this.addSettingTab(new SettingTab(this.app, this)); + }); + } + startRenameProcess(file, autoRename = false) { + return __async(this, null, function* () { + const activeFile = this.getActiveFile(); + if (!activeFile) { + new import_obsidian2.Notice("Error: No active file found."); + return; + } + const { stem, newName, isMeaningful } = this.generateNewName(file, activeFile); + debugLog("generated newName:", newName, isMeaningful); + if (!isMeaningful || !autoRename) { + this.openRenameModal(file, isMeaningful ? stem : "", activeFile.path); + return; + } + this.renameFile(file, newName, activeFile.path, true); + }); + } + renameFile(file, inputNewName, sourcePath, replaceCurrentLine) { + return __async(this, null, function* () { + const { name: newName } = yield this.deduplicateNewName(inputNewName, file); + debugLog("deduplicated newName:", newName); + const originName = file.name; + const linkText = this.app.fileManager.generateMarkdownLink(file, sourcePath); + const newPath = path.join(file.parent.path, newName); + try { + yield this.app.fileManager.renameFile(file, newPath); + } catch (err) { + new import_obsidian2.Notice(`Failed to rename ${newName}: ${err}`); + throw err; + } + if (!replaceCurrentLine) { + return; + } + const newLinkText = this.app.fileManager.generateMarkdownLink(file, sourcePath); + debugLog("replace text", linkText, newLinkText); + const editor = this.getActiveEditor(); + if (!editor) { + new import_obsidian2.Notice(`Failed to rename ${newName}: no active editor`); + return; + } + const cursor = editor.getCursor(); + const line = editor.getLine(cursor.line); + const replacedLine = line.replace(linkText, newLinkText); + debugLog("current line -> replaced line", line, replacedLine); + editor.transaction({ + changes: [ + { + from: __spreadProps(__spreadValues({}, cursor), { ch: 0 }), + to: __spreadProps(__spreadValues({}, cursor), { ch: line.length }), + text: replacedLine + } + ] + }); + if (!this.settings.disableRenameNotice) { + new import_obsidian2.Notice(`Renamed ${originName} to ${newName}`); + } + }); + } + openRenameModal(file, newName, sourcePath) { + const modal = new ImageRenameModal( + this.app, + file, + newName, + (confirmedName) => { + debugLog("confirmedName:", confirmedName); + this.renameFile(file, confirmedName, sourcePath, true); + }, + () => { + this.modals.splice(this.modals.indexOf(modal), 1); + } + ); + this.modals.push(modal); + modal.open(); + debugLog("modals count", this.modals.length); + } + openBatchRenameModal() { + const activeFile = this.getActiveFile(); + const modal = new ImageBatchRenameModal( + this.app, + activeFile, + (file, name) => __async(this, null, function* () { + yield this.renameFile(file, name, activeFile.path); + }), + () => { + this.modals.splice(this.modals.indexOf(modal), 1); + } + ); + this.modals.push(modal); + modal.open(); + } + batchRenameAllImages() { + return __async(this, null, function* () { + const activeFile = this.getActiveFile(); + const fileCache = this.app.metadataCache.getFileCache(activeFile); + if (!fileCache || !fileCache.embeds) + return; + const extPatternRegex = /jpe?g|png|gif|tiff|webp/i; + for (const embed of fileCache.embeds) { + const file = this.app.metadataCache.getFirstLinkpathDest(embed.link, activeFile.path); + if (!file) { + console.warn("file not found", embed.link); + return; + } + const m0 = extPatternRegex.exec(file.extension); + if (!m0) + return; + const { newName, isMeaningful } = this.generateNewName(file, activeFile); + debugLog("generated newName:", newName, isMeaningful); + if (!isMeaningful) { + new import_obsidian2.Notice("Failed to batch rename images: the generated name is not meaningful"); + break; + } + yield this.renameFile(file, newName, activeFile.path, false); + } + }); + } + // returns a new name for the input file, with extension + generateNewName(file, activeFile) { + let imageNameKey = ""; + let firstHeading = ""; + let frontmatter; + const fileCache = this.app.metadataCache.getFileCache(activeFile); + if (fileCache) { + debugLog("frontmatter", fileCache.frontmatter); + frontmatter = fileCache.frontmatter; + imageNameKey = (frontmatter == null ? void 0 : frontmatter.imageNameKey) || ""; + firstHeading = getFirstHeading(fileCache.headings); + } else { + console.warn("could not get file cache from active file", activeFile.name); + } + const stem = renderTemplate( + this.settings.imageNamePattern, + { + imageNameKey, + fileName: activeFile.basename, + dirName: activeFile.parent.name, + firstHeading + }, + frontmatter + ); + const meaninglessRegex = new RegExp(`[${this.settings.dupNumberDelimiter}\\s]`, "gm"); + return { + stem, + newName: stem + "." + file.extension, + isMeaningful: stem.replace(meaninglessRegex, "") !== "" + }; + } + // newName: foo.ext + deduplicateNewName(newName, file) { + return __async(this, null, function* () { + const dir = file.parent.path; + const listed = yield this.app.vault.adapter.list(dir); + debugLog("sibling files", listed); + const newNameExt = path.extension(newName), newNameStem = newName.slice(0, newName.length - newNameExt.length - 1), newNameStemEscaped = escapeRegExp(newNameStem), delimiter = this.settings.dupNumberDelimiter, delimiterEscaped = escapeRegExp(delimiter); + let dupNameRegex; + if (this.settings.dupNumberAtStart) { + dupNameRegex = new RegExp( + `^(?\\d+)${delimiterEscaped}(?${newNameStemEscaped})\\.${newNameExt}$` + ); + } else { + dupNameRegex = new RegExp( + `^(?${newNameStemEscaped})${delimiterEscaped}(?\\d+)\\.${newNameExt}$` + ); + } + debugLog("dupNameRegex", dupNameRegex); + const dupNameNumbers = []; + let isNewNameExist = false; + for (let sibling of listed.files) { + sibling = path.basename(sibling); + if (sibling == newName) { + isNewNameExist = true; + continue; + } + const m = dupNameRegex.exec(sibling); + if (!m) + continue; + dupNameNumbers.push(parseInt(m.groups.number)); + } + if (isNewNameExist || this.settings.dupNumberAlways) { + const newNumber = dupNameNumbers.length > 0 ? Math.max(...dupNameNumbers) + 1 : 1; + if (this.settings.dupNumberAtStart) { + newName = `${newNumber}${delimiter}${newNameStem}.${newNameExt}`; + } else { + newName = `${newNameStem}${delimiter}${newNumber}.${newNameExt}`; + } + } + return { + name: newName, + stem: newName.slice(0, newName.length - newNameExt.length - 1), + extension: newNameExt + }; + }); + } + getActiveFile() { + const view = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView); + const file = view == null ? void 0 : view.file; + debugLog("active file", file == null ? void 0 : file.path); + return file; + } + getActiveEditor() { + const view = this.app.workspace.getActiveViewOfType(import_obsidian2.MarkdownView); + return view == null ? void 0 : view.editor; + } + onunload() { + this.modals.map((modal) => modal.close()); + } + testExcludeExtension(file) { + const pattern = this.settings.excludeExtensionPattern; + if (!pattern) + return false; + return new RegExp(pattern).test(file.extension); + } + loadSettings() { + return __async(this, null, function* () { + this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); + }); + } + saveSettings() { + return __async(this, null, function* () { + yield this.saveData(this.settings); + }); + } +}; +function getFirstHeading(headings) { + if (headings && headings.length > 0) { + for (const heading of headings) { + if (heading.level === 1) { + return heading.heading; + } + } + } + return ""; +} +function isPastedImage(file) { + if (file instanceof import_obsidian2.TFile) { + if (file.name.startsWith(PASTED_IMAGE_PREFIX)) { + return true; + } + } + return false; +} +function isMarkdownFile(file) { + if (file instanceof import_obsidian2.TFile) { + if (file.extension === "md") { + return true; + } + } + return false; +} +var ImageRenameModal = class extends import_obsidian2.Modal { + constructor(app, src, stem, renameFunc, onClose) { + super(app); + this.src = src; + this.stem = stem; + this.renameFunc = renameFunc; + this.onCloseExtra = onClose; + } + onOpen() { + this.containerEl.addClass("image-rename-modal"); + const { contentEl, titleEl } = this; + titleEl.setText("Rename image"); + const imageContainer = contentEl.createDiv({ + cls: "image-container" + }); + imageContainer.createEl("img", { + attr: { + src: this.app.vault.getResourcePath(this.src) + } + }); + let stem = this.stem; + const ext = this.src.extension; + const getNewName = (stem2) => stem2 + "." + ext; + const getNewPath = (stem2) => path.join(this.src.parent.path, getNewName(stem2)); + const infoET = createElementTree(contentEl, { + tag: "ul", + cls: "info", + children: [ + { + tag: "li", + children: [ + { + tag: "span", + text: "Origin path" + }, + { + tag: "span", + text: this.src.path + } + ] + }, + { + tag: "li", + children: [ + { + tag: "span", + text: "New path" + }, + { + tag: "span", + text: getNewPath(stem) + } + ] + } + ] + }); + const doRename = () => __async(this, null, function* () { + debugLog("doRename", `stem=${stem}`); + this.renameFunc(getNewName(stem)); + }); + const nameSetting = new import_obsidian2.Setting(contentEl).setName("New name").setDesc("Please input the new name for the image (without extension)").addText((text) => text.setValue(stem).onChange( + (value) => __async(this, null, function* () { + stem = sanitizer.filename(value); + infoET.children[1].children[1].el.innerText = getNewPath(stem); + }) + )); + const nameInputEl = nameSetting.controlEl.children[0]; + nameInputEl.focus(); + const nameInputState = lockInputMethodComposition(nameInputEl); + nameInputEl.addEventListener("keydown", (e) => __async(this, null, function* () { + if (e.key === "Enter" && !nameInputState.lock) { + e.preventDefault(); + if (!stem) { + errorEl.innerText = 'Error: "New name" could not be empty'; + errorEl.style.display = "block"; + return; + } + doRename(); + this.close(); + } + })); + const errorEl = contentEl.createDiv({ + cls: "error", + attr: { + style: "display: none;" + } + }); + new import_obsidian2.Setting(contentEl).addButton((button) => { + button.setButtonText("Rename").onClick(() => { + doRename(); + this.close(); + }); + }).addButton((button) => { + button.setButtonText("Cancel").onClick(() => { + this.close(); + }); + }); + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + this.onCloseExtra(); + } +}; +var imageNamePatternDesc = ` +The pattern indicates how the new name should be generated. + +Available variables: +- {{fileName}}: name of the active file, without ".md" extension. +- {{imageNameKey}}: this variable is read from the markdown file's frontmatter, from the same key "imageNameKey". +- {{DATE:$FORMAT}}: use "$FORMAT" to format the current date, "$FORMAT" must be a Moment.js format string, e.g. {{DATE:YYYY-MM-DD}}. + +Here are some examples from pattern to image names (repeat in sequence), variables: fileName = "My note", imageNameKey = "foo": +- {{fileName}}: My note, My note-1, My note-2 +- {{imageNameKey}}: foo, foo-1, foo-2 +- {{imageNameKey}}-{{DATE:YYYYMMDD}}: foo-20220408, foo-20220408-1, foo-20220408-2 +`; +var SettingTab = class extends import_obsidian2.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + new import_obsidian2.Setting(containerEl).setName("Image name pattern").setDesc(imageNamePatternDesc).setClass("long-description-setting-item").addText((text) => text.setPlaceholder("{{imageNameKey}}").setValue(this.plugin.settings.imageNamePattern).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.imageNamePattern = value; + yield this.plugin.saveSettings(); + }) + )); + new import_obsidian2.Setting(containerEl).setName("Duplicate number at start (or end)").setDesc(`If enabled, duplicate number will be added at the start as prefix for the image name, otherwise it will be added at the end as suffix for the image name.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.dupNumberAtStart).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.dupNumberAtStart = value; + yield this.plugin.saveSettings(); + }) + )); + new import_obsidian2.Setting(containerEl).setName("Duplicate number delimiter").setDesc(`The delimiter to generate the number prefix/suffix for duplicated names. For example, if the value is "-", the suffix will be like "-1", "-2", "-3", and the prefix will be like "1-", "2-", "3-". Only characters that are valid in file names are allowed.`).addText((text) => text.setValue(this.plugin.settings.dupNumberDelimiter).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.dupNumberDelimiter = sanitizer.delimiter(value); + yield this.plugin.saveSettings(); + }) + )); + new import_obsidian2.Setting(containerEl).setName("Always add duplicate number").setDesc(`If enabled, duplicate number will always be added to the image name. Otherwise, it will only be added when the name is duplicated.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.dupNumberAlways).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.dupNumberAlways = value; + yield this.plugin.saveSettings(); + }) + )); + new import_obsidian2.Setting(containerEl).setName("Auto rename").setDesc(`By default, the rename modal will always be shown to confirm before renaming, if this option is set, the image will be auto renamed after pasting.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.autoRename).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.autoRename = value; + yield this.plugin.saveSettings(); + }) + )); + new import_obsidian2.Setting(containerEl).setName("Handle all attachments").setDesc(`By default, the plugin only handles images that starts with "Pasted image " in name, + which is the prefix Obsidian uses to create images from pasted content. + If this option is set, the plugin will handle all attachments that are created in the vault.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.handleAllAttachments).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.handleAllAttachments = value; + yield this.plugin.saveSettings(); + }) + )); + new import_obsidian2.Setting(containerEl).setName("Exclude extension pattern").setDesc(`This option is only useful when "Handle all attachments" is enabled. + Write a Regex pattern to exclude certain extensions from being handled. Only the first line will be used.`).setClass("single-line-textarea").addTextArea((text) => text.setPlaceholder("docx?|xlsx?|pptx?|zip|rar").setValue(this.plugin.settings.excludeExtensionPattern).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.excludeExtensionPattern = value; + yield this.plugin.saveSettings(); + }) + )); + new import_obsidian2.Setting(containerEl).setName("Disable rename notice").setDesc(`Turn off this option if you don't want to see the notice when renaming images. + Note that Obsidian may display a notice when a link has changed, this option cannot disable that.`).addToggle((toggle) => toggle.setValue(this.plugin.settings.disableRenameNotice).onChange( + (value) => __async(this, null, function* () { + this.plugin.settings.disableRenameNotice = value; + yield this.plugin.saveSettings(); + }) + )); + } +}; diff --git a/.obsidian/plugins/obsidian-paste-image-rename/manifest.json b/.obsidian/plugins/obsidian-paste-image-rename/manifest.json new file mode 100644 index 0000000..152d913 --- /dev/null +++ b/.obsidian/plugins/obsidian-paste-image-rename/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-paste-image-rename", + "name": "Paste image rename", + "version": "1.6.1", + "minAppVersion": "0.12.0", + "description": "Rename pasted images and all the other attchments added to the vault", + "author": "Reorx", + "authorUrl": "https://github.com/reorx", + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-paste-image-rename/styles.css b/.obsidian/plugins/obsidian-paste-image-rename/styles.css new file mode 100644 index 0000000..d542d56 --- /dev/null +++ b/.obsidian/plugins/obsidian-paste-image-rename/styles.css @@ -0,0 +1,79 @@ +/* src/styles.css */ +:root { + --shadow-color: 0deg 0% 0%; + --shadow-elevation-medium: + 0.5px 0.5px 0.7px hsl(var(--shadow-color) / 0.14), + 1.1px 1.1px 1.5px -0.9px hsl(var(--shadow-color) / 0.12), + 2.4px 2.5px 3.3px -1.8px hsl(var(--shadow-color) / 0.1), + 5.3px 5.6px 7.3px -2.7px hsl(var(--shadow-color) / 0.09), + 11px 11.4px 15.1px -3.6px hsl(var(--shadow-color) / 0.07); +} +.image-rename-modal .modal { + width: 65%; + min-width: 600px; +} +.image-rename-modal .modal-content { + padding: 10px 5px; +} +.image-rename-modal .image-container { + display: flex; + justify-content: center; +} +.image-rename-modal .info { + padding: 10px 0; + color: var(--text-muted); + user-select: text; +} +.image-rename-modal .info li > span:nth-of-type(1) { + display: inline-block; + width: 6em; + margin-right: .5em; +} +.image-rename-modal .info li > span:nth-of-type(1):after { + content: ":"; + float: right; +} +.image-rename-modal .image-container img { + display: block; + max-height: 300px; + box-shadow: var(--shadow-elevation-medium); +} +.image-rename-modal .setting-item-control input { + min-width: 300px; +} +.image-rename-modal .error { + border: 1px solid rgb(201, 90, 90); + color: rgb(134, 22, 22); + padding: 10px; +} +.image-rename-modal table { + font-size: .9em; + line-height: 1.8; + margin-bottom: 1.5em; + user-select: text; +} +.image-rename-modal table td { + padding-right: 1em; +} +.image-rename-modal table thead td { + font-weight: 700; +} +.image-rename-modal table tbody td .file-path { + font-size: .8em; + color: var(--text-faint); + line-height: 1; +} +.long-description-setting-item { + flex-wrap: wrap; +} +.long-description-setting-item .setting-item-description { + white-space: pre-wrap; + line-height: 1.3em; +} +.long-description-setting-item .setting-item-control { + padding-top: 10px; +} +.long-description-setting-item .setting-item-control input { + min-width: 300px; + width: 50%; +} diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 909ac7c..d0e454e 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -39,14 +39,11 @@ "id": "069e76e47c814366", "type": "leaf", "state": { - "type": "canvas", + "type": "markdown", "state": { - "file": "05. 資料收集/讀書筆記/20240101 - 筆記的魔力.canvas", - "viewState": { - "x": -76.5, - "y": 29, - "zoom": -0.5 - } + "file": "02. 個人:Daily/2024-01-02(週二).md", + "mode": "source", + "source": true } } } @@ -80,7 +77,7 @@ "state": { "type": "search", "state": { - "query": "ffmpeg", + "query": "[\"tags\"]", "matchingCase": false, "explainSearch": false, "collapseAll": false, @@ -97,7 +94,8 @@ "state": {} } } - ] + ], + "currentTab": 1 } ], "direction": "horizontal", @@ -117,7 +115,7 @@ "state": { "type": "backlink", "state": { - "file": "05. 資料收集/讀書筆記/20240101 - 筆記的魔力.canvas", + "file": "02. 個人:Daily/2024-01-02(週二).md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -142,7 +140,7 @@ "state": { "type": "outline", "state": { - "file": "05. 資料收集/讀書筆記/20240101 - 筆記的魔力.canvas" + "file": "02. 個人:Daily/2024-01-02(週二).md" } } }, @@ -172,12 +170,12 @@ "state": { "type": "file-properties", "state": { - "file": "05. 資料收集/讀書筆記/20240101 - 筆記的魔力.canvas" + "file": "02. 個人:Daily/2024-01-02(週二).md" } } } ], - "currentTab": 1 + "currentTab": 4 }, { "id": "ae4bf98badbfc7ee", @@ -215,10 +213,16 @@ "periodic-notes:Open today": false } }, - "active": "069e76e47c814366", + "active": "bad194a4534ef74b", "lastOpenFiles": [ - "05. 資料收集/布萊茲‧帕斯卡(Blaise Pascal).md", + "02. 個人:Daily/2024-01-02(週二)——.md", + "02. 個人:Daily/2024-01-02(週二).md", + "98. templates/日記.md", + "attachments/wakatime_2023_weekdays.png", + "attachments/wakatime_2023_days.png", + "attachments/edc8488a7547573ac02d8ab1afec473553bffdce.png", "05. 資料收集/讀書筆記/20240101 - 筆記的魔力.canvas", + "05. 資料收集/布萊茲‧帕斯卡(Blaise Pascal).md", "00. Inbox/Habit Tracker.md", "05. 資料收集/核心肌群訓練.md", "05. 資料收集/時間不一致性.md", @@ -243,8 +247,6 @@ "05. 資料收集/04. Programming/FFMPEG/00. Introduction.md", "05. 資料收集/04. Programming/FFMPEG/01. Setup.md", "05. 資料收集/04. Programming/FFMPEG/AV_CODEC_FLAG_GLOBAL_HEADER.md", - "05. 資料收集/04. Programming/FFMPEG/Profiles & levels.md", - "05. 資料收集/04. Programming/FFMPEG/av_opt_set.md", "attachments/Pasted image 20231225164717.png", "attachments/Pasted image 20231225164413.png", "attachments/Pasted image 20231225164349.png", @@ -263,9 +265,6 @@ "00. Inbox/My Mindmap.canvas", "05. 資料收集/Tool Setup/Software/diskstation/share/Tools/字型", "05. 資料收集/Tool Setup/Software/diskstation/share/Tools", - "05. 資料收集/Tool Setup/Software/diskstation/share", - "attachments/Pasted image 20230504183452.png", - "attachments/Pasted image 20230504183439.png", - "attachments/Pasted image 20230426214323.png" + "05. 資料收集/Tool Setup/Software/diskstation/share" ] } \ No newline at end of file diff --git a/02. 個人:Daily/2024-01-02(週二).md b/02. 個人:Daily/2024-01-02(週二).md new file mode 100644 index 0000000..84afb2d --- /dev/null +++ b/02. 個人:Daily/2024-01-02(週二).md @@ -0,0 +1,25 @@ +--- +tags: wakatime, 年度回顧, 2023 +aliases: +date: 2024-01-02 +time: 14:42:28 +description: +--- + +時間:14:42:28 + +--- + +# 今日發生什麼事? +## Wakatime +今天看到Wakatime的年度回顧,覺得很有趣,所以紀錄一下。 +![[edc8488a7547573ac02d8ab1afec473553bffdce.png]] +![[wakatime_2023_days.png]] +![[wakatime_2023_weekdays.png]] + + +# 有什麼想法? + + +# 相對應的行動是什麼? + diff --git a/98. templates/日記.md b/98. templates/日記.md index 9527044..3365a25 100644 --- a/98. templates/日記.md +++ b/98. templates/日記.md @@ -4,28 +4,17 @@ aliases: date: {{date}} time: {{time:HH:mm:ss}} description: -anki: 0 -readingSkill: 0 -readingCasual: 0 -啞鈴: 0 -伏地挺身: 0 -跑步: 0 --- 時間:{{time:HH:mm:ss}} -### TAG - - --- -### 新增TODO -#### 私事 +# 今日發生什麼事? -#### 公事 +# 有什麼想法? ---- +# 相對應的行動是什麼? -### 今日回顧 diff --git a/attachments/edc8488a7547573ac02d8ab1afec473553bffdce.png b/attachments/edc8488a7547573ac02d8ab1afec473553bffdce.png new file mode 100644 index 0000000000000000000000000000000000000000..33fa4d6e2b62438d4c611c3548f6dfc06395bd57 GIT binary patch literal 72689 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 z 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

P&qsS1p$Eh9ML>SO-AP4c=58! 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 literal 0 HcmV?d00001 diff --git a/attachments/wakatime_2023_days.png b/attachments/wakatime_2023_days.png new file mode 100644 index 0000000000000000000000000000000000000000..3e494371591e665a8e2ba5c984b00dafbee5a9e0 GIT binary patch literal 3768 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 A-v9sr literal 0 HcmV?d00001