Update: Author wise folders

This commit is contained in:
Jayanth Anala 2024-09-26 01:41:58 -04:00
parent 82e50c64f0
commit 65f0de9e5e

View File

@ -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) {