<%* // โ”€โ”€ ้…็ฝฎๅŒบ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ const FOLDER = โ€œ7.video/Metadataโ€; // โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

// 1. ๆ‰ซๆๅทฒๆœ‰ๆ–‡ไปถ๏ผŒๆ‰พๆœ€ๅคง็ผ–ๅท const files = app.vault.getFiles() .filter(f โ‡’ f.path.startsWith(FOLDER + โ€/โ€));

let maxNum = 0; for (const f of files) { const match = f.name.match(/^(\d+)-/); if (match) maxNum = Math.max(maxNum, parseInt(match[1])); }

// 2. ็”Ÿๆˆไธ‹ไธ€ไธช็ผ–ๅท๏ผˆไธ‰ไฝ่กฅ้›ถ๏ผ‰ const nextNum = String(maxNum + 1).padStart(3, โ€œ0โ€);

// 3. ๅผน็ช—่พ“ๅ…ฅๆ ‡้ข˜ const title = await tp.system.prompt(ๆ–ฐๅปบ็ฌฌ ${nextNum} ไธช่ง†้ข‘็ฌ”่ฎฐ๏ผŒ่ฏท่พ“ๅ…ฅๆ ‡้ข˜); if (!title) { new Notice(โ€œๅทฒๅ–ๆถˆโ€); return; }

const fileName = ${nextNum}-${title};

// 4. ็งปๅŠจๅˆฐ็›ฎๆ ‡ๆ–‡ไปถๅคนๅนถ้‡ๅ‘ฝๅ await tp.file.move(${FOLDER}/${fileName}); _%>

title:

  • <% nextNum %>-<% title %> tags:
  • video videoid: VIDEO_ID bilibiliid: BILIBILI_ID defaultSource: youtube date: <% tp.date.now(โ€œYYYY-MM-DDโ€) %> category: obsidian

## <% title %>

็›ธๅ…ณไปฃ็ : ็›ธๅ…ณ่ง†้ข‘: