Dashme / plugins /flux2.js
maylinejix's picture
Update plugins/flux2.js
d5b2f07 verified
const axios = require('axios');
const sharp = require('sharp');
const fs = require('fs');
const path = require('path');
const handler = async (req, res) => {
try {
const { text } = req.query;
if (!text) {
return res.status(400).json({
success: false,
error: 'Missing required parameter: text'
});
}
const targetUrl = `https://fast-flux-demo.replicate.workers.dev/api/generate-image?text=${encodeURIComponent(text)}`;
const proxyUrl = `https://proxy-sigma-roan.vercel.app/api/proxy?url=${encodeURIComponent(targetUrl)}`;
const result = await axios.get(proxyUrl, {
responseType: 'arraybuffer'
});
const buffer = Buffer.from(result.data);
const jpegBuffer = await sharp(buffer)
.jpeg({ quality: 90 })
.toBuffer();
const randomName = `flux-${Math.random().toString(36).substring(2, 15)}.jpg`;
const tmpPath = path.join('/tmp', randomName);
fs.writeFileSync(tmpPath, jpegBuffer);
setTimeout(() => {
if (fs.existsSync(tmpPath)) {
fs.unlinkSync(tmpPath);
}
}, 5 * 60 * 1000);
const host = req.headers.host || req.get('host');
const protocol = req.headers['x-forwarded-proto'] || req.protocol || 'https';
const imageUrl = `${protocol}://tmp.dashx.dpdns.org/tmp/${randomName}`;
res.json({
author: "Herza",
success: true,
data: {
img_url: imageUrl
}
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
};
module.exports = {
name: 'Flux AIv2',
description: 'Generate image using Flux AI',
type: 'GET',
routes: ['api/AI/flux2'],
tags: ['ai', 'Flux', 'Image Generator'],
main: ['AI'],
parameters: ['text', 'key'],
enabled: true,
limit: 2,
handler
};