Ayogiakbar

AI IMAGE & VIDEO ENCHANCE

Oct 2nd, 2025
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Ai Image/Video Editing  - Open Pixel
  3.  * Author  : gienetic
  4.  * Base    : https://play.google.com/store/apps/details?id=com.openart.ai
  5.  * Note    : kalo recode tetep kasih tag author / sumber ya bab :v
  6.  */
  7.  
  8. const axios = require("axios");
  9.  
  10. const KEYYY = "XbS7PoQmAv0TKrnL52tTnsRYJdO1v0rNcBPEey4D15FF2vfvMrIrB8LPagog";
  11. const UUID = `gienetic_${Math.random().toString(36).substring(2, 10)}`;
  12.  
  13. const headers = {
  14.   "user-agent": "Dart/3.8 (dart:io)",
  15.   "content-type": "application/json; charset=utf-8",
  16.   "accept": "application/json",
  17.   "accept-encoding": "gzip",
  18. };
  19.  
  20. // Ini sengaja gw kasih auto translate dulu, karna seperti biasa , ai nya gak mudeng bahasa indo :v
  21. async function translateToEnglish(text) {
  22.   try {
  23.     const url = "https://translate.googleapis.com/translate_a/single";
  24.     const params = { client: "gtx", sl: "auto", tl: "en", dt: "t", q: text };
  25.     const response = await axios.get(url, { params, headers });
  26.     return response.data[0][0][0];
  27.   } catch (error) {
  28.     console.error("Translate Error:", error.message);
  29.     return text;
  30.   }
  31. }
  32.  
  33. // Image → Image
  34. async function img2img(init_image, prompt) {
  35.   try {
  36.     const translatedPrompt = await translateToEnglish(prompt);
  37.     const payload = {
  38.       key: KEYYY,
  39.       init_image,
  40.       prompt: translatedPrompt,
  41.       model_id: "flux-kontext-dev",
  42.       num_inference_steps: "28",
  43.       strength: "0.5",
  44.       scheduler: "DPMSolverMultistepScheduler",
  45.       guidance: "2.5",
  46.       base64: false,
  47.       negative_prompt: null,
  48.     };
  49.  
  50.     const response = await axios.post(
  51.       "https://modelslab.com/api/v6/images/img2img",
  52.       payload,
  53.       { headers }
  54.     );
  55.  
  56.     return response.data.id ? fetchImage(response.data.id) : response.data;
  57.   } catch (error) {
  58.     return { status: "failed", error: error.message };
  59.   }
  60. }
  61.  
  62. // Text → Image
  63. async function text2img(prompt) {
  64.   try {
  65.     const translatedPrompt = await translateToEnglish(prompt);
  66.     const url = `https://noisy-firefly-a3ec.akshaynceo6876.workers.dev/chat/dalle?user_id=${UUID}&message=${encodeURIComponent(translatedPrompt)}`;
  67.     const response = await axios.post(url, null, { headers });
  68.     return response.data?.output?.length ? response.data.output : response.data;
  69.   } catch (error) {
  70.     return { status: "failed", error: error.message };
  71.   }
  72. }
  73.  
  74. // Image → Video
  75. async function img2video(init_image, prompt, options = {}) {
  76.   try {
  77.     const translatedPrompt = await translateToEnglish(prompt);
  78.     const payload = {
  79.       key: KEYYY,
  80.       init_image,
  81.       prompt: translatedPrompt,
  82.       base64: false,
  83.       resolution: options.resolution || "480",
  84.       output_type: "mp4",
  85.       model_id: options.model_id || "wan2.2",
  86.       fps: options.fps || "16",
  87.       num_frames: options.num_frames || "82",
  88.     };
  89.  
  90.     const response = await axios.post(
  91.       "https://modelslab.com/api/v6/video/img2video_ultra",
  92.       payload,
  93.       { headers }
  94.     );
  95.  
  96.     return response.data.id ? fetchVideo(response.data.id) : response.data;
  97.   } catch (error) {
  98.     return { status: "failed", error: error.message };
  99.   }
  100. }
  101.  
  102. // Text → Video
  103. async function text2video(prompt, options = {}) {
  104.   try {
  105.     const translatedPrompt = await translateToEnglish(prompt);
  106.     const payload = {
  107.       key: KEYYY,
  108.       prompt: translatedPrompt,
  109.       resolution: options.resolution || "480",
  110.       fps: options.fps || "16",
  111.       num_frames: options.num_frames || "82",
  112.       output_type: "mp4",
  113.       model_id: options.model_id || "wan2.2",
  114.     };
  115.  
  116.     const response = await axios.post(
  117.       "https://modelslab.com/api/v6/video/text2video_ultra",
  118.       payload,
  119.       { headers }
  120.     );
  121.  
  122.     return response.data.id ? fetchVideo(response.data.id) : response.data;
  123.   } catch (error) {
  124.     return { status: "failed", error: error.message };
  125.   }
  126. }
  127.  
  128. // Fetch Image Job
  129. async function fetchImage(jobId) {
  130.   const response = await axios.post(
  131.     `https://modelslab.com/api/v6/images/fetch/${jobId}`,
  132.     { key: KEYYY },
  133.     { headers }
  134.   );
  135.  
  136.   if (response.data.status === "processing") {
  137.     await new Promise((resolve) => setTimeout(resolve, 5000));
  138.     return fetchImage(jobId);
  139.   }
  140.  
  141.   return response.data.output || response.data;
  142. }
  143.  
  144. // Fetch Video Job
  145. async function fetchVideo(jobId) {
  146.   const response = await axios.post(
  147.     `https://modelslab.com/api/v6/video/fetch/${jobId}`,
  148.     { key: KEYYY },
  149.     { headers }
  150.   );
  151.  
  152.   if (response.data.status === "processing") {
  153.     await new Promise((resolve) => setTimeout(resolve, 5000));
  154.     return fetchVideo(jobId);
  155.   }
  156.  
  157.   return response.data.output || response.data;
  158. }
  159.  
  160. module.exports = { img2img, text2img, img2video, text2video };
  161.  
Add Comment
Please, Sign In to add comment