mirror of
https://github.com/nadimkobeissi/mkbsd.git
synced 2024-12-22 14:26:48 +00:00
Update: Author wise folders
This commit is contained in:
parent
82e50c64f0
commit
65f0de9e5e
38
mkbsd.js
38
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user