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