Spaces:
Running
Running
const os = require('os') | |
const bytes = require('bytes') | |
const sharp = require('sharp') | |
const morgan = require('morgan') | |
const express = require('express') | |
const PDFDocument = require('pdfkit') | |
const axios = require("axios") | |
const FormData = require("form-data") | |
const tfjs = require('@tensorflow/tfjs-node') | |
const nsfwjs = require('nsfwjs') | |
const jpegjs = require('jpeg-js') | |
const fileType = require("file-type") | |
//const Stress = require('./lib/ddos.js'); | |
//const { BingChat } = (await import("bing-chat")).default | |
const { acytoo, chatgpt_4 } = require("./lib/chatgpt.js") | |
const { sss_instagram, gramvio } = require("./lib/instagram.js") | |
const { allToJpg } = require("./lib/convertFormat.js") | |
const apikey = "Kyouka" | |
const app = express() | |
app.set('json spaces', 4) | |
app.use(morgan('dev')) | |
app.use(express.json({ limit: "500mb" })) | |
app.use(express.urlencoded({ limit: '500mb', extended: true })) | |
app.use((req, res, next) => { | |
load_model(), | |
next() | |
}) | |
app.all('/', (req, res) => { | |
const status = {} | |
const used = process.memoryUsage() | |
for (let key in used) status[key] = formatSize(used[key]) | |
const totalmem = os.totalmem() | |
const freemem = os.freemem() | |
status.memoryUsage = `${formatSize(totalmem - freemem)} / ${formatSize(totalmem)}` | |
res.json({ | |
creator: "@SadTeams", | |
message: 'Hello World!!', | |
uptime: new Date(process.uptime() * 1000).toUTCString().split(' ')[4], | |
status | |
}) | |
}) | |
app.post('/imagetopdf', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { images } = req.body | |
if (!images) return res.json({ success: false, message: 'Required an array image url' }) | |
const buffer = await toPDF(images) | |
res.setHeader('Content-Disposition', `attachment; filename=${Math.random().toString(36).slice(2)}.pdf`) | |
res.setHeader('Content-Type', 'application/pdf') | |
res.setHeader('Content-Length', buffer.byteLength) | |
res.send(buffer) | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
app.get('/fetch', async (req, res) => { | |
try { | |
if (!req.query.url) return res.json({ message: 'Required an url' }) | |
let json = await axios.get(req.query.url) | |
res.json(json.data) | |
} catch (e) { | |
res.send(e) | |
} | |
}) | |
app.post('/api/chatgpt', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { prompt, model, status } = req.body | |
if (!prompt) return res.json({ success: false, message: 'Required an prompt text!' }) | |
if (!model) return res.json({ success: false, message: 'Required an model version!' }) | |
if (!status) return res.json({ success: false, message: 'Required an prompt text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
if(model == "gpt-4") { | |
const response = await axios.request({ | |
method: "GET", | |
url: "https://aemt.me/gpt4?text=" + prompt | |
}) | |
res.json({ | |
status: "ok", | |
result: response.data.result | |
}) | |
} else if(model == "gpt-3.5") { | |
const response = await acytoo(prompt, "gpt-4") | |
res.json({ | |
status: "ok", | |
result: response | |
}) | |
} else if(model == "gpt-3") { | |
const response = await acytoo(prompt, "gpt-3.5-turbo") | |
res.json({ | |
status: "ok", | |
result: response | |
}) | |
} | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
app.post('/api/chatgpt2', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { data, prompt, status } = req.body | |
if (!data) return res.json({ success: false, message: 'Required an data text!' }) | |
if (!prompt) return res.json({ success: false, message: 'Required an prompt text!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
const response = await axios.request({ | |
method: "GET", | |
url: `https://aemt.me/prompt/gpt?prompt=${data}&text=${prompt}` | |
}) | |
res.json({ | |
status: "ok", | |
result: response.data.result | |
}) | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
app.post('/api/toanime', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { url, status } = req.body | |
if (!url) return res.json({ success: false, message: 'Required an url!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
const response = await axios.request({ | |
method: "GET", | |
url: "https://aemt.me/toanime?url=" + url | |
}) | |
const image = await axios.request({ | |
method: "GET", | |
url: response.data.url.img_crop_single, | |
responseType: "arraybuffer" | |
}) | |
res.setHeader('Content-Type', 'image/jpeg') | |
res.send(image.data) | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
app.post('/api/upscaler', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { images, denoise, scale, format, type, status } = req.body | |
if (!images) return res.json({ success: false, message: 'Required an images!' }) | |
if (!denoise) return res.json({ success: false, message: 'Required an denoise!' }) | |
if (!scale) return res.json({ success: false, message: 'Required an images!' }) | |
if (!format) return res.json({ success: false, message: 'Required an format size!' }) | |
if (!type) return res.json({ success: false, message: 'Required an images!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
if (/^(https?|http):\/\//i.test(images)) { | |
const data_img = await axios.request({ | |
method: "GET", | |
url: images, | |
responseType: "arraybuffer" | |
}) | |
const response = await processImage(data_img.data, denoise, scale, format, type) | |
const type_img = await fileType.fromBuffer(response) | |
res.setHeader('Content-Type', type_img.mime) | |
res.send(response) | |
} else if (images && typeof images == 'string' && isBase64(images)) { | |
const response = await processImage(Buffer.from(images, "base64"), denoise, scale, format, type) | |
const type_img = await fileType.fromBuffer(response) | |
res.setHeader('Content-Type', type_img.mime) | |
res.send(response) | |
} else { | |
res.json({ | |
success: false, message: 'No url or base64 detected!!' | |
}) | |
} | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
app.post('/api/nsfw-check', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { images, status } = req.body | |
if (!images) return res.json({ success: false, message: 'Required an images!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
if (/^(https?|http):\/\//i.test(images)) { | |
const data_img = await axios.request({ | |
method: "GET", | |
url: images, | |
responseType: "arraybuffer" | |
}) | |
const response = await check_nsfw(data_img.data) | |
res.json({ | |
status: "ok", | |
result: response | |
}) | |
} else if (images && typeof images == 'string' && isBase64(images)) { | |
const img = Buffer.from(images, "base64") | |
const type = await fileType.fromBuffer(img) | |
if (type.ext == "jpg") { | |
let response = await check_nsfw(img) | |
res.json({ | |
status: "ok", | |
result: response | |
}) | |
} | |
if (type.ext == "webp") { | |
let converting = await allToJpg(img) | |
let response = await check_nsfw(converting) | |
res.json({ | |
status: "ok", | |
result: response | |
}) | |
} | |
} else { | |
res.json({ | |
success: false, message: 'No url or base64 detected!!' | |
}) | |
} | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
app.post('/api/instagram/stalk', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { username, status } = req.body | |
if (!username) return res.json({ success: false, message: 'Required an username text!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
const response = await gramvio(username) | |
res.json({ | |
status: "ok", | |
result: response | |
}) | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
app.post('/api/instagram/download', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { url, status } = req.body | |
if (!url) return res.json({ success: false, message: 'Required an url!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
const response = await sss_instagram(url) | |
res.json({ | |
status: "ok", | |
result: response | |
}) | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
/*app.post('/tools/ddos', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { url, interval, mount, status } = req.body | |
if (!url) return res.json({ success: false, message: 'Required an url!' }) | |
if (!interval) return res.json({ success: false, message: 'Required an interval number!' }) | |
if (!mount) return res.json({ success: false, message: 'Required an mount number!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
const response = await Stress.start({ | |
debug: true, | |
url: url, | |
interval: interval, | |
max: mount, | |
proxy: "./proxy.txt" | |
}) | |
res.json({ | |
status: "ok", | |
target: url, | |
interval: interval, | |
mount: mount, | |
response | |
}) | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
})*/ | |
app.post('/api/bingchat', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { prompt, status } = req.body | |
if (!prompt) return res.json({ success: false, message: 'Required an prompt text!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
const response = await axios.request({ | |
method: "GET", | |
url: "https://aemt.me/bingai?text=" + prompt | |
}) | |
res.json({ | |
status: "ok", | |
result: response.data.result | |
}) | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
app.post('/convert/zombie', async (req, res) => { | |
try { | |
console.log(req.body) | |
const { url, status } = req.body | |
if (!url) return res.json({ success: false, message: 'Required an url!' }) | |
if (!status) return res.json({ success: false, message: 'Required an status text!' }) | |
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' }) | |
const resp = await axios.request({ | |
method: "GET", | |
url: "https://aemt.me/converter/zombie?url=" + url | |
}) | |
const response = await axios.request({ | |
method: "GET", | |
url: resp.data.url, | |
contentType: "arraybuffer" | |
}) | |
res.setHeader('Content-Type', 'image/jpeg') | |
res.send(response.data) | |
} catch (e) { | |
console.log(e) | |
e = String(e) | |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e }) | |
} | |
}) | |
const PORT = process.env.PORT || 7860 | |
app.listen(PORT, () => { | |
console.log('App running on port', PORT) | |
}) | |
function formatSize(num) { | |
return bytes(+num || 0, { unitSeparator: ' ' }) | |
} | |
function isBase64(str) { | |
try { | |
return btoa(atob(str)) === str | |
} catch { | |
return false | |
} | |
} | |
function toPDF(urls) { | |
return new Promise(async (resolve, reject) => { | |
try { | |
if (!Array.isArray(urls)) urls = [urls] | |
const doc = new PDFDocument({ margin: 0, size: 'A4' }) | |
const buffers = [] | |
for (let i = 0; i < urls.length; i++) { | |
const response = await fetch(urls[i], { headers: { referer: urls[i] }}) | |
if (!response.ok) continue | |
const type = response.headers.get('content-type') | |
if (!/image/.test(type)) continue | |
let buffer = Buffer.from(await response.arrayBuffer()) | |
if (/gif|webp/.test(type)) buffer = await sharp(buffer).png().toBuffer() | |
doc.image(buffer, 0, 0, { fit: [595.28, 841.89], align: 'center', valign: 'center' }) | |
if (urls.length !== i + 1) doc.addPage() | |
} | |
doc.on('data', (chunk) => buffers.push(chunk)) | |
doc.on('end', () => resolve(Buffer.concat(buffers))) | |
doc.on('error', reject) | |
doc.end() | |
} catch (e) { | |
console.log(e) | |
reject(e) | |
} | |
}) | |
} | |
async function processImage(image, denoise, scale, format, type) { | |
return new Promise(async (resolve, reject) => { | |
try { | |
let type_img = await fileType.fromBuffer(image) | |
let random_numbers = Math.floor(Math.random() * 1000); | |
const formData = new FormData(); | |
formData.append("denoise", denoise); | |
formData.append("scale", scale); | |
formData.append("format", format); | |
formData.append("type", type); | |
formData.append("file", image, { | |
filename: | |
"images_" + random_numbers.toString().padStart(3, "0") + "." + type_img.ext, | |
contentType: type_img.mime, | |
}); | |
const response = await axios.request({ | |
method: "POST", | |
url: "https://api.alcaamado.es/ns-api-waifu2x/v1/convert", | |
data: formData, | |
debug: true, | |
headers: { | |
Authority: "api.alcaamado.es", | |
Accept: "application/json", | |
Referer: "https://waifu2x.pro/", | |
Origin: "https://waifu2x.pro", | |
"User-Agent": | |
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", | |
}, | |
}); | |
const images = await axios.request({ | |
method: "GET", | |
url: | |
"https://api.alcaamado.es/api/v2/waifu2x/get?hash=" + | |
response.data.hash + | |
"&type=" + | |
format, | |
headers: { | |
Accept: "image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", | |
"Content-Type": "image/jpg", | |
Referer: "https://waifu2x.pro/", | |
"User-Agent": | |
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", | |
}, | |
responseType: "arraybuffer", | |
}); | |
// Mengonversi arraybuffer ke Buffer | |
//const buffer = Buffer.from(images.data); | |
resolve(images.data); | |
} catch (error) { | |
reject(error); | |
} | |
}); | |
} | |
async function check_nsfw(buffer) { | |
let _model = await load_model() | |
const convert = async (img) => { | |
// Decoded image in UInt8 Byte array | |
const image = await jpegjs.decode(img, { useTArray: true }) | |
const numChannels = 3 | |
const numPixels = image.width * image.height | |
const values = new Int32Array(numPixels * numChannels) | |
for (let i = 0; i < numPixels; i++) | |
for (let c = 0; c < numChannels; ++c) | |
values[i * numChannels + c] = image.data[i * 4 + c] | |
return tfjs.tensor3d(values, [image.height, image.width, numChannels], 'int32') | |
} | |
const image = await convert(buffer) | |
const predictions = await _model.classify(image) | |
image.dispose(); | |
const results = predictions.map(v => { | |
return { | |
class_name: v.className, | |
probability: v.probability, | |
probability_percent: (v.probability * 100).toFixed(2) | |
} | |
}) | |
return results | |
} | |
async function load_model() { | |
return await nsfwjs.load() | |
} |