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() }