Spaces:
Paused
Paused
Update index.js
Browse files
index.js
CHANGED
|
@@ -524,14 +524,28 @@ async function nhentai(url) {
|
|
| 524 |
const jsonString = scriptContent.match(/JSON\.parse\("(.*)"\)/)[1];
|
| 525 |
const decodedString = jsonString.replace(/\\u0022/g, '"').replace(/\\u005C/g, '\\');
|
| 526 |
const jsonData = JSON.parse(decodedString);
|
|
|
|
| 527 |
console.log(jsonData);
|
| 528 |
|
| 529 |
const imgList = jsonData.images.pages.map((_, index) => ({
|
| 530 |
-
|
| 531 |
-
|
| 532 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 533 |
|
| 534 |
-
const imagePaths = await downloadImageNhs(imgList, tempDir, instanceID);
|
| 535 |
const pdfPath = await createPDF(imagePaths, instanceID, tempDir);
|
| 536 |
|
| 537 |
console.log(`PDF berhasil dibuat: ${pdfPath}`);
|
|
@@ -548,6 +562,18 @@ async function nhentai(url) {
|
|
| 548 |
}
|
| 549 |
}
|
| 550 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 551 |
async function downloadImageNh(image, tempDir, instanceID) {
|
| 552 |
const servers = [
|
| 553 |
"https://i1.nhentai.net",
|
|
|
|
| 524 |
const jsonString = scriptContent.match(/JSON\.parse\("(.*)"\)/)[1];
|
| 525 |
const decodedString = jsonString.replace(/\\u0022/g, '"').replace(/\\u005C/g, '\\');
|
| 526 |
const jsonData = JSON.parse(decodedString);
|
| 527 |
+
|
| 528 |
console.log(jsonData);
|
| 529 |
|
| 530 |
const imgList = jsonData.images.pages.map((_, index) => ({
|
| 531 |
+
path: `https://i5.nhentai.net/galleries/${jsonData.media_id}/${index + 1}.${jsonData.images.pages[index].t === "w" ? "webp" : jsonData.images.pages[index].t === "p" ? "png" : "jpg"}`
|
| 532 |
+
}));
|
| 533 |
+
|
| 534 |
+
const imagePaths = [];
|
| 535 |
+
for (const img of imgList) {
|
| 536 |
+
const downloadedImagePath = await downloadImageNh(img, tempDir, instanceID);
|
| 537 |
+
const isWebp = path.extname(downloadedImagePath).toLowerCase() === '.webp';
|
| 538 |
+
|
| 539 |
+
if (isWebp) {
|
| 540 |
+
const convertedImagePath = downloadedImagePath.replace('.webp', '.jpg');
|
| 541 |
+
await convertImage(downloadedImagePath, convertedImagePath);
|
| 542 |
+
fs.unlinkSync(downloadedImagePath); // Hapus file asli (.webp)
|
| 543 |
+
imagePaths.push(convertedImagePath);
|
| 544 |
+
} else {
|
| 545 |
+
imagePaths.push(downloadedImagePath);
|
| 546 |
+
}
|
| 547 |
+
}
|
| 548 |
|
|
|
|
| 549 |
const pdfPath = await createPDF(imagePaths, instanceID, tempDir);
|
| 550 |
|
| 551 |
console.log(`PDF berhasil dibuat: ${pdfPath}`);
|
|
|
|
| 562 |
}
|
| 563 |
}
|
| 564 |
|
| 565 |
+
|
| 566 |
+
async function convertImage(inputPath, outputPath) {
|
| 567 |
+
try {
|
| 568 |
+
await execAsync(`ffmpeg -i "${inputPath}" -q:v 1 "${outputPath}"`);
|
| 569 |
+
console.log(`Converted ${inputPath} to ${outputPath}`);
|
| 570 |
+
} catch (error) {
|
| 571 |
+
console.error(`Error converting image: ${error.message}`);
|
| 572 |
+
throw new Error(`Failed to convert image ${inputPath} to JPG.`);
|
| 573 |
+
}
|
| 574 |
+
}
|
| 575 |
+
|
| 576 |
+
|
| 577 |
async function downloadImageNh(image, tempDir, instanceID) {
|
| 578 |
const servers = [
|
| 579 |
"https://i1.nhentai.net",
|