magicstudio.mjs
javascript•Created 30 Nov 2025, 03:53•171 views
Aiart & background remover, Wrapper from magicstudio.com.
#ai#txt2img#image
javascript
0 lines
/***
@ Base: https://magicstudio.com/
@ Author: Shannz
@ Desc: Aiart & background remover, Wrapper from magicstudio.com.
***/
import axios from 'axios';
import FormData from 'form-data';
import { v4 as uuidv4 } from 'uuid';
import fs from 'fs';
import path from 'path';
import { uploadFile } from 'cloudsky-storage';
function generateClientId(length = 40) {
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let id = '';
for (let i = 0; i < length; i++) {
id += chars.charAt(Math.floor(Math.random() * chars.length));
}
return id;
}
function getMimeType(filePath) {
const ext = path.extname(filePath).toLowerCase();
if (ext === '.png') return 'image/png';
if (ext === '.webp') return 'image/webp';
return 'image/jpeg';
}
export const magicstudio = {
aiart: async (prompt) => {
const anonymousUserId = uuidv4();
const requestTimestamp = (Date.now() / 1000).toFixed(3);
const clientId = generateClientId();
const formData = new FormData();
formData.append('prompt', prompt);
formData.append('output_format', 'bytes');
formData.append('user_profile_id', 'null');
formData.append('anonymous_user_id', anonymousUserId);
formData.append('request_timestamp', requestTimestamp);
formData.append('user_is_subscribed', 'false');
formData.append('client_id', clientId);
const config = {
method: 'POST',
url: 'https://ai-api.magicstudio.com/api/ai-art-generator',
headers: {
...formData.getHeaders(),
'User-Agent': 'ScRaPe/9.9 (KaliLinux; Nusantara Os; My/Shannz)',
'Accept': 'application/json, text/plain, */*',
'origin': 'https://magicstudio.com',
'referer': 'https://magicstudio.com/ai-art-generator/'
},
responseType: 'arraybuffer',
data: formData
};
try {
const response = await axios.request(config);
const imageBuffer = Buffer.from(response.data);
const fileName = `aiart-${Date.now()}.jpg`;
const upload = await uploadFile(imageBuffer, fileName);
if (upload.success) {
return upload.data.url;
} else {
throw new Error(upload.message || "Upload ke Cloudsky gagal");
}
} catch (error) {
console.error('Error di aiart:', error.message || error);
return 'Gagal membuat atau mengupload gambar.';
}
},
removebg: async (filePath) => {
try {
if (!fs.existsSync(filePath)) {
throw new Error(`File tidak ditemukan: ${filePath}`);
}
const imageBuffer = fs.readFileSync(filePath);
const mimeType = getMimeType(filePath);
const base64Data = imageBuffer.toString('base64');
const dataUri = `data:${mimeType};base64,${base64Data}`;
const anonymousUserId = uuidv4();
const requestTimestamp = (Date.now() / 1000).toFixed(3);
const clientId = generateClientId();
const formData = new FormData();
formData.append('image', dataUri);
formData.append('output_type', 'image');
formData.append('output_format', 'url');
formData.append('auto_delete_data', 'true');
formData.append('user_profile_id', 'null');
formData.append('anonymous_user_id', anonymousUserId);
formData.append('request_timestamp', requestTimestamp);
formData.append('user_is_subscribed', 'false');
formData.append('client_id', clientId);
const config = {
method: 'POST',
url: 'https://ai-api.magicstudio.com/api/remove-background',
headers: {
...formData.getHeaders(),
'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Mobile Safari/537.36',
'Accept': 'application/json, text/plain, */*',
'origin': 'https://magicstudio.com',
'referer': 'https://magicstudio.com/background-remover/editor/'
},
data: formData
};
const response = await axios.request(config);
if (response.data && response.data.status === 'success' && response.data.results) {
return response.data.results[0].image;
} else {
throw new Error("Format respons API tidak sesuai atau gagal menghapus background.");
}
} catch (error) {
console.error('Error di removebg:', error.response?.data || error.message);
return 'Gagal menghapus background gambar.';
}
}
};
/*
(async () => {
console.log("⏳ Menggambar AI Art...");
const artUrl = await magicstudio.aiart('beautiful anime girl');
console.log("✅ AI Art URL:", artUrl);
console.log("⏳ Menghapus Background...");
const bgUrl = await magicstudio.removebg('./u.jpg');
console.log("✅ Remove BG URL:", bgUrl);
})();
*/