const express = require('express'); const NodeCache = require('node-cache'); const axios = require('axios'); const { v4: uuidv4 } = require('uuid'); const app = express(); const cache = new NodeCache({ stdTTL: 604800, checkperiod: 600 }); const port = 7860; const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); const getWIBTime = () => { return new Date().toLocaleString("id-ID", { timeZone: "Asia/Jakarta", hour: '2-digit', minute: '2-digit', second: '2-digit', day: '2-digit', month: 'long', year: 'numeric' }); }; function generateRandomIP() { return Array.from({ length: 4 }, () => Math.floor(Math.random() * 256)).join('.'); } async function getAIResponse(prompt, modelName) { const anonymousId = uuidv4(); const fakeIP = generateRandomIP(); let fullText = ""; const config = { method: 'post', url: 'https://notegpt.io/api/v2/chat/stream', headers: { 'Content-Type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36', 'Cookie': `anonymous_user_id=${anonymousId}`, 'Origin': 'https://notegpt.io', 'Referer': 'https://notegpt.io/chat-deepseek', 'X-Forwarded-For': fakeIP, 'X-Real-IP': fakeIP, 'Client-IP': fakeIP }, data: { "message": prompt, "language": "auto", "model": modelName, "tone": "default", "length": "moderate", "conversation_id": uuidv4(), "image_urls": [], "chat_mode": "standard" }, responseType: 'stream' }; const response = await axios(config); const stream = response.data; return new Promise((resolve, reject) => { stream.on('data', (chunk) => { const lines = chunk.toString().split('\n'); for (const line of lines) { if (line.startsWith('data: ')) { const jsonStr = line.substring(6).trim(); if (jsonStr === '[DONE]') continue; try { const data = JSON.parse(jsonStr); if (data.text) fullText += data.text; } catch (e) {} } } }); stream.on('end', () => resolve(fullText)); stream.on('error', (err) => reject(err)); }); } app.get('/', (req, res) => { res.send(`
Reverse Engineered NoteGPT Automator.
/chatpuruboy-flash (gemini-2.5-flash) atau puruboy-pro (gemini-3-flash-preview).