Spaces:
Paused
Paused
Update index.js
Browse files
index.js
CHANGED
|
@@ -7,13 +7,9 @@ const PDFDocument = require('pdfkit')
|
|
| 7 |
const axios = require("axios")
|
| 8 |
const FormData = require("form-data")
|
| 9 |
const ytdl = require('ytdl-core')
|
| 10 |
-
const tfjs = require('@tensorflow/tfjs-node')
|
| 11 |
-
const Upscaler = require('upscaler/node')
|
| 12 |
-
const nsfwjs = require('nsfwjs')
|
| 13 |
-
const jpegjs = require('jpeg-js')
|
| 14 |
const Jimp = require('jimp')
|
| 15 |
const fileType = require("file-type")
|
| 16 |
-
|
| 17 |
//const Stress = require('./lib/ddos.js');
|
| 18 |
//const { BingChat } = (await import("bing-chat")).default
|
| 19 |
const { acytoo, chatgpt_4 } = require("./lib/chatgpt.js")
|
|
@@ -191,74 +187,7 @@ app.post('/api/upscaler', async (req, res) => {
|
|
| 191 |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
| 192 |
}
|
| 193 |
})
|
| 194 |
-
app.post('/api/upscaler2', async (req, res) => {
|
| 195 |
-
try {
|
| 196 |
-
console.log(req.body)
|
| 197 |
-
const { images, status } = req.body
|
| 198 |
-
if (!images) return res.json({ success: false, message: 'Required an images!' })
|
| 199 |
-
if (!status) return res.json({ success: false, message: 'Required an status text!' })
|
| 200 |
-
|
| 201 |
-
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' })
|
| 202 |
-
if (/^(https?|http):\/\//i.test(images)) {
|
| 203 |
-
const data_img = await axios.request({
|
| 204 |
-
method: "GET",
|
| 205 |
-
url: images,
|
| 206 |
-
responseType: "arraybuffer"
|
| 207 |
-
})
|
| 208 |
-
const response = await upscaleImage(data_img.data)
|
| 209 |
-
const type_img = await fileType.fromBuffer(response)
|
| 210 |
-
res.setHeader('Content-Type', type_img.mime)
|
| 211 |
-
res.send(response)
|
| 212 |
-
} else if (images && typeof images == 'string' && isBase64(images)) {
|
| 213 |
-
const response = await upscaleImage(Buffer.from(images, "base64"))
|
| 214 |
-
const type_img = await fileType.fromBuffer(response)
|
| 215 |
-
res.setHeader('Content-Type', type_img.mime)
|
| 216 |
-
res.send(response)
|
| 217 |
-
} else {
|
| 218 |
-
res.json({
|
| 219 |
-
success: false, message: 'No url or base64 detected!!'
|
| 220 |
-
})
|
| 221 |
-
}
|
| 222 |
-
} catch (e) {
|
| 223 |
-
console.log(e)
|
| 224 |
-
e = String(e)
|
| 225 |
-
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
| 226 |
-
}
|
| 227 |
-
})
|
| 228 |
-
app.post('/api/upscaler3', async (req, res) => {
|
| 229 |
-
try {
|
| 230 |
-
console.log(req.body)
|
| 231 |
-
const { images, status } = req.body
|
| 232 |
-
if (!images) return res.json({ success: false, message: 'Required an images!' })
|
| 233 |
-
if (!status) return res.json({ success: false, message: 'Required an status text!' })
|
| 234 |
|
| 235 |
-
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' })
|
| 236 |
-
if (/^(https?|http):\/\//i.test(images)) {
|
| 237 |
-
const data_img = await axios.request({
|
| 238 |
-
method: "GET",
|
| 239 |
-
url: images,
|
| 240 |
-
responseType: "arraybuffer"
|
| 241 |
-
})
|
| 242 |
-
const response = await upscaleImageV2(data_img.data)
|
| 243 |
-
const type_img = await fileType.fromBuffer(response)
|
| 244 |
-
res.setHeader('Content-Type', type_img.mime)
|
| 245 |
-
res.send(response)
|
| 246 |
-
} else if (images && typeof images == 'string' && isBase64(images)) {
|
| 247 |
-
const response = await upscaleImageV2(Buffer.from(images, "base64"))
|
| 248 |
-
const type_img = await fileType.fromBuffer(response)
|
| 249 |
-
res.setHeader('Content-Type', type_img.mime)
|
| 250 |
-
res.send(response)
|
| 251 |
-
} else {
|
| 252 |
-
res.json({
|
| 253 |
-
success: false, message: 'No url or base64 detected!!'
|
| 254 |
-
})
|
| 255 |
-
}
|
| 256 |
-
} catch (e) {
|
| 257 |
-
console.log(e)
|
| 258 |
-
e = String(e)
|
| 259 |
-
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
| 260 |
-
}
|
| 261 |
-
})
|
| 262 |
app.post('/api/img2img', async (req, res) => {
|
| 263 |
try {
|
| 264 |
console.log(req.body)
|
|
@@ -329,54 +258,7 @@ app.post('/api/toanime2', async (req, res) => {
|
|
| 329 |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
| 330 |
}
|
| 331 |
})
|
| 332 |
-
app.post('/api/nsfw-check', async (req, res) => {
|
| 333 |
-
try {
|
| 334 |
-
console.log(req.body)
|
| 335 |
-
const { images, status } = req.body
|
| 336 |
-
if (!images) return res.json({ success: false, message: 'Required an images!' })
|
| 337 |
-
if (!status) return res.json({ success: false, message: 'Required an status text!' })
|
| 338 |
|
| 339 |
-
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' })
|
| 340 |
-
if (/^(https?|http):\/\//i.test(images)) {
|
| 341 |
-
const data_img = await axios.request({
|
| 342 |
-
method: "GET",
|
| 343 |
-
url: images,
|
| 344 |
-
responseType: "arraybuffer"
|
| 345 |
-
})
|
| 346 |
-
const response = await check_nsfw(data_img.data)
|
| 347 |
-
res.json({
|
| 348 |
-
status: "ok",
|
| 349 |
-
result: response
|
| 350 |
-
})
|
| 351 |
-
} else if (images && typeof images == 'string' && isBase64(images)) {
|
| 352 |
-
const img = Buffer.from(images, "base64")
|
| 353 |
-
const type = await fileType.fromBuffer(img)
|
| 354 |
-
if (type.ext == "jpg") {
|
| 355 |
-
let response = await check_nsfw(img)
|
| 356 |
-
res.json({
|
| 357 |
-
status: "ok",
|
| 358 |
-
result: response
|
| 359 |
-
})
|
| 360 |
-
}
|
| 361 |
-
if (type.ext == "webp") {
|
| 362 |
-
let converting = await allToJpg(img)
|
| 363 |
-
let response = await check_nsfw(converting)
|
| 364 |
-
res.json({
|
| 365 |
-
status: "ok",
|
| 366 |
-
result: response
|
| 367 |
-
})
|
| 368 |
-
}
|
| 369 |
-
} else {
|
| 370 |
-
res.json({
|
| 371 |
-
success: false, message: 'No url or base64 detected!!'
|
| 372 |
-
})
|
| 373 |
-
}
|
| 374 |
-
} catch (e) {
|
| 375 |
-
console.log(e)
|
| 376 |
-
e = String(e)
|
| 377 |
-
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
| 378 |
-
}
|
| 379 |
-
})
|
| 380 |
app.post('/api/instagram/stalk', async (req, res) => {
|
| 381 |
try {
|
| 382 |
console.log(req.body)
|
|
@@ -561,53 +443,6 @@ function toPDF(urls) {
|
|
| 561 |
})
|
| 562 |
}
|
| 563 |
|
| 564 |
-
async function upscaleImage(imageBuffer) {
|
| 565 |
-
return new Promise(async (resolve, reject) => {
|
| 566 |
-
try {
|
| 567 |
-
const upscaler = new Upscaler();
|
| 568 |
-
const imageTensor = tfjs.tensor3d(new Uint8Array(imageBuffer), [imageBuffer.height, imageBuffer.width, 3]);
|
| 569 |
-
|
| 570 |
-
const upscaledTensor = await upscaler.upscale(imageTensor, {
|
| 571 |
-
scale: 4, // upscale by a factor of 4
|
| 572 |
-
sharpen: true, // apply sharpening
|
| 573 |
-
denoise: true, // apply denoising
|
| 574 |
-
contrast: 1.5, // increase contrast by 50%
|
| 575 |
-
colorEnhance: true, // enhance colors
|
| 576 |
-
});
|
| 577 |
-
|
| 578 |
-
const upscaledImageBuffer = await tfjs.tensor3dToBuffer(upscaledTensor);
|
| 579 |
-
|
| 580 |
-
// dispose the tensors!
|
| 581 |
-
imageTensor.dispose();
|
| 582 |
-
upscaledTensor.dispose();
|
| 583 |
-
resolve(upscaledImageBuffer);
|
| 584 |
-
} catch (error) {
|
| 585 |
-
reject(error);
|
| 586 |
-
}
|
| 587 |
-
});
|
| 588 |
-
}
|
| 589 |
-
|
| 590 |
-
async function upscaleImageV2(imageBuffer) {
|
| 591 |
-
return new Promise(async (resolve, reject) => {
|
| 592 |
-
try {
|
| 593 |
-
const upscale = await Waifu2X.upscale(imageBuffer, null, {
|
| 594 |
-
noise: 0,
|
| 595 |
-
scale: 2,
|
| 596 |
-
gpu: -1,
|
| 597 |
-
ramLimit: 500,
|
| 598 |
-
outputAsBuffer: true
|
| 599 |
-
});
|
| 600 |
-
|
| 601 |
-
upscale.finishedPromise().then(() => {
|
| 602 |
-
const outputBuffer = upscale.endBuffer;
|
| 603 |
-
resolve(outputBuffer); // ArrayBuffer
|
| 604 |
-
});
|
| 605 |
-
} catch(e) {
|
| 606 |
-
reject(e.message);
|
| 607 |
-
}
|
| 608 |
-
});
|
| 609 |
-
}
|
| 610 |
-
|
| 611 |
async function processImageUpscaler(images, denoise, format, type) {
|
| 612 |
return new Promise(async (resolve, reject) => {
|
| 613 |
try {
|
|
@@ -725,38 +560,4 @@ async function processImageAnime(inputBuffer) {
|
|
| 725 |
console.error(err);
|
| 726 |
throw err;
|
| 727 |
}
|
| 728 |
-
}
|
| 729 |
-
|
| 730 |
-
|
| 731 |
-
|
| 732 |
-
async function check_nsfw(buffer) {
|
| 733 |
-
let _model = await load_model()
|
| 734 |
-
const convert = async (img) => {
|
| 735 |
-
// Decoded image in UInt8 Byte array
|
| 736 |
-
const image = await jpegjs.decode(img, { useTArray: true })
|
| 737 |
-
|
| 738 |
-
const numChannels = 3
|
| 739 |
-
const numPixels = image.width * image.height
|
| 740 |
-
const values = new Int32Array(numPixels * numChannels)
|
| 741 |
-
|
| 742 |
-
for (let i = 0; i < numPixels; i++)
|
| 743 |
-
for (let c = 0; c < numChannels; ++c)
|
| 744 |
-
values[i * numChannels + c] = image.data[i * 4 + c]
|
| 745 |
-
|
| 746 |
-
return tfjs.tensor3d(values, [image.height, image.width, numChannels], 'int32')
|
| 747 |
-
}
|
| 748 |
-
const image = await convert(buffer)
|
| 749 |
-
const predictions = await _model.classify(image)
|
| 750 |
-
image.dispose();
|
| 751 |
-
const results = predictions.map(v => {
|
| 752 |
-
return {
|
| 753 |
-
class_name: v.className,
|
| 754 |
-
probability: v.probability,
|
| 755 |
-
probability_percent: (v.probability * 100).toFixed(2)
|
| 756 |
-
}
|
| 757 |
-
})
|
| 758 |
-
return results
|
| 759 |
-
}
|
| 760 |
-
async function load_model() {
|
| 761 |
-
return await nsfwjs.load()
|
| 762 |
}
|
|
|
|
| 7 |
const axios = require("axios")
|
| 8 |
const FormData = require("form-data")
|
| 9 |
const ytdl = require('ytdl-core')
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
const Jimp = require('jimp')
|
| 11 |
const fileType = require("file-type")
|
| 12 |
+
|
| 13 |
//const Stress = require('./lib/ddos.js');
|
| 14 |
//const { BingChat } = (await import("bing-chat")).default
|
| 15 |
const { acytoo, chatgpt_4 } = require("./lib/chatgpt.js")
|
|
|
|
| 187 |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
| 188 |
}
|
| 189 |
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 191 |
app.post('/api/img2img', async (req, res) => {
|
| 192 |
try {
|
| 193 |
console.log(req.body)
|
|
|
|
| 258 |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
| 259 |
}
|
| 260 |
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 261 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 262 |
app.post('/api/instagram/stalk', async (req, res) => {
|
| 263 |
try {
|
| 264 |
console.log(req.body)
|
|
|
|
| 443 |
})
|
| 444 |
}
|
| 445 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 446 |
async function processImageUpscaler(images, denoise, format, type) {
|
| 447 |
return new Promise(async (resolve, reject) => {
|
| 448 |
try {
|
|
|
|
| 560 |
console.error(err);
|
| 561 |
throw err;
|
| 562 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 563 |
}
|