Spaces:
Paused
Paused
| 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 app = express() | |
| app.set('json spaces', 4) | |
| app.use(morgan('dev')) | |
| app.use(express.json()) | |
| 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.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 !== "user") return res.json({ success: false, message: 'Invalid status!' }) | |
| const response = await acytoo(prompt, model) | |
| 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 }) | |
| } | |
| }) | |
| 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 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 acytoo(text, model) { | |
| let res = await axios.request({ | |
| method: "POST", | |
| url: "https://chat.acytoo.com/api/completions", | |
| data: JSON.stringify({ | |
| key: "", | |
| messages: [{ | |
| role: "user", | |
| content: text, | |
| createAt: "", | |
| }], | |
| model: model, | |
| password: "", | |
| temprature: 1 | |
| }), | |
| headres: { | |
| "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", | |
| "Origin": "https://chat.acytoo.com" | |
| } | |
| }) | |
| return res.data | |
| } | |