diff --git a/mkbsd.js b/mkbsd.js index d02593a..2d0c10c 100644 --- a/mkbsd.js +++ b/mkbsd.js @@ -1,4 +1,5 @@ // Copyright 2024 Nadim Kobeissi +// edit by Jay 2024 // Licensed under the WTFPL License const fs = require(`fs`); @@ -19,24 +20,32 @@ async function main() { if (!data) { throw new Error('⛔ JSON does not have a "data" property at its root.'); } - const downloadDir = path.join(__dirname, 'downloads'); - if (!fs.existsSync(downloadDir)) { - fs.mkdirSync(downloadDir); - console.info(`📁 Created directory: ${downloadDir}`); - } - let fileIndex = 1; + // const downloadDir = path.join(__dirname, 'downloads'); + // if (!fs.existsSync(downloadDir)) { + // fs.mkdirSync(downloadDir); + // console.info(`📁 Created directory: ${downloadDir}`); + // } + //let fileIndex = 1; for (const key in data) { const subproperty = data[key]; if (subproperty && subproperty.dhd) { const imageUrl = subproperty.dhd; console.info(`🔍 Found image URL!`); await delay(100); + + const author = getAuthor(imageUrl); + const authorDir = path.join(__dirname, 'downloads', author); + if (!fs.existsSync(authorDir)) { + fs.mkdirSync(authorDir, { recursive: true }); + console.info(`📁 Created directory: ${authorDir}`); + } + const ext = path.extname(new URL(imageUrl).pathname) || '.jpg'; - const filename = `${fileIndex}${ext}`; - const filePath = path.join(downloadDir, filename); + const filename = `${key}${ext}`; + const filePath = path.join(authorDir, filename); await downloadImage(imageUrl, filePath); console.info(`🖼️ Saved image to ${filePath}`); - fileIndex++; + //fileIndex++; await delay(250); } } @@ -45,6 +54,17 @@ async function main() { } } +function getAuthor(url) { + const parUrl = new URL(url); + const urlParts = parUrl.pathname.split('/'); + const authorPart = urlParts.find(part => part.includes('~')); + if (authorPart) { + const nameParts = authorPart.split('~')[1].split('_'); + return nameParts[0]; +} +return 'unknown'; +} + async function downloadImage(url, filePath) { const response = await fetch(url); if (!response.ok) {