mirror of
https://github.com/nadimkobeissi/mkbsd.git
synced 2024-12-22 20:15:06 +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
|
// Copyright 2024 Nadim Kobeissi
|
||||||
|
// edit by Jay 2024
|
||||||
// Licensed under the WTFPL License
|
// Licensed under the WTFPL License
|
||||||
|
|
||||||
const fs = require(`fs`);
|
const fs = require(`fs`);
|
||||||
@ -19,24 +20,32 @@ async function main() {
|
|||||||
if (!data) {
|
if (!data) {
|
||||||
throw new Error('⛔ JSON does not have a "data" property at its root.');
|
throw new Error('⛔ JSON does not have a "data" property at its root.');
|
||||||
}
|
}
|
||||||
const downloadDir = path.join(__dirname, 'downloads');
|
// const downloadDir = path.join(__dirname, 'downloads');
|
||||||
if (!fs.existsSync(downloadDir)) {
|
// if (!fs.existsSync(downloadDir)) {
|
||||||
fs.mkdirSync(downloadDir);
|
// fs.mkdirSync(downloadDir);
|
||||||
console.info(`📁 Created directory: ${downloadDir}`);
|
// console.info(`📁 Created directory: ${downloadDir}`);
|
||||||
}
|
// }
|
||||||
let fileIndex = 1;
|
//let fileIndex = 1;
|
||||||
for (const key in data) {
|
for (const key in data) {
|
||||||
const subproperty = data[key];
|
const subproperty = data[key];
|
||||||
if (subproperty && subproperty.dhd) {
|
if (subproperty && subproperty.dhd) {
|
||||||
const imageUrl = subproperty.dhd;
|
const imageUrl = subproperty.dhd;
|
||||||
console.info(`🔍 Found image URL!`);
|
console.info(`🔍 Found image URL!`);
|
||||||
await delay(100);
|
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 ext = path.extname(new URL(imageUrl).pathname) || '.jpg';
|
||||||
const filename = `${fileIndex}${ext}`;
|
const filename = `${key}${ext}`;
|
||||||
const filePath = path.join(downloadDir, filename);
|
const filePath = path.join(authorDir, filename);
|
||||||
await downloadImage(imageUrl, filePath);
|
await downloadImage(imageUrl, filePath);
|
||||||
console.info(`🖼️ Saved image to ${filePath}`);
|
console.info(`🖼️ Saved image to ${filePath}`);
|
||||||
fileIndex++;
|
//fileIndex++;
|
||||||
await delay(250);
|
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) {
|
async function downloadImage(url, filePath) {
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
|
Loading…
Reference in New Issue
Block a user