Spaces:
Paused
Paused
| const FormData = require("form-data"); | |
| const axios = require("axios"); | |
| const fs = require('fs'); | |
| const qs = require('qs'); | |
| const tool = [ 'removebg', 'enhance', 'upscale', 'restore', 'colorize' ]; | |
| const pxpic = { | |
| upload: async (filePath) => { | |
| const { | |
| fileTypeFromBuffer: fromBuffer | |
| } = await import( 'file-type') | |
| const buffer = fs.readFileSync(filePath); | |
| const { ext, mime } = (await fromBuffer(buffer)) || {}; | |
| const fileName = Date.now() + "." + ext; | |
| const folder = "uploads"; | |
| const responsej = await axios.post("https://pxpic.com/getSignedUrl", { folder, fileName }, { | |
| headers: { | |
| "Content-Type": "application/json", | |
| }, | |
| }); | |
| const { presignedUrl } = responsej.data; | |
| await axios.put(presignedUrl, buffer, { | |
| headers: { | |
| "Content-Type": mime, | |
| }, | |
| }); | |
| const cdnDomain = "https://files.fotoenhancer.com/uploads/"; | |
| const sourceFileUrl = cdnDomain + fileName; | |
| return sourceFileUrl; | |
| }, | |
| create: async (filePath, tools) => { | |
| if (!tool.includes(tools)) { | |
| return `Pilih salah satu dari tools ini: ${tool.join(', ')}`; | |
| } | |
| const url = await pxpic.upload(filePath); | |
| let data = qs.stringify({ | |
| 'imageUrl': url, | |
| 'targetFormat': 'png', | |
| 'needCompress': 'no', | |
| 'imageQuality': '100', | |
| 'compressLevel': '6', | |
| 'fileOriginalExtension': 'png', | |
| 'aiFunction': tools, | |
| 'upscalingLevel': '' | |
| }); | |
| let config = { | |
| method: 'POST', | |
| url: 'https://pxpic.com/callAiFunction', | |
| headers: { | |
| 'User-Agent': 'Mozilla/5.0 (Android 10; Mobile; rv:131.0) Gecko/131.0 Firefox/131.0', | |
| 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8', | |
| 'Content-Type': 'application/x-www-form-urlencoded', | |
| 'accept-language': 'id-ID' | |
| }, | |
| data: data | |
| }; | |
| const api = await axios.request(config); | |
| return api.data; | |
| } | |
| } | |
| const domain = { | |
| efek: "https://effect-api.visual-paradigm.com", | |
| ai: "https://ai-services.visual-paradigm.com" | |
| } | |
| const paradigm = { | |
| async rmbg(buffer) { | |
| const { fileTypeFromBuffer } = await import('file-type'); | |
| const fileType = await fileTypeFromBuffer(buffer); | |
| if (!fileType || !['image/jpeg', 'image/png', 'image/gif'].includes(fileType.mime)) throw new Error("File yang diunggah bukan gambar. Hanya file gambar yang diperbolehkan."); | |
| const form = new FormData(); | |
| form.append("file", buffer, `anjuc.jpg`); | |
| const { data } = await axios.post(`${domain.efek}/remove-bg`, form, { | |
| headers: form.getHeaders(), | |
| responseType: "arraybuffer" | |
| }).catch(e => e.response); | |
| return data; | |
| }, | |
| async enhance(buffer) { | |
| const { fileTypeFromBuffer } = await import('file-type'); | |
| const fileType = await fileTypeFromBuffer(buffer); | |
| if (!fileType || !['image/jpeg', 'image/png', 'image/gif'].includes(fileType.mime)) throw new Error("File yang diunggah bukan gambar. Hanya file gambar yang diperbolehkan."); | |
| const form = new FormData(); | |
| form.append("file", buffer, `${Date.now()}.jpg`); | |
| const { data } = await axios.post(`${domain.ai}/api/super-resolution/file`, form, { | |
| headers: form.getHeaders(), | |
| responseType: "arraybuffer" | |
| }).catch(e => e.response); | |
| return data; | |
| } | |
| }; | |
| module.exports = { enhance: paradigm.enhance, pxpic }; |