File size: 4,097 Bytes
70335fc 6f115e7 70335fc cc43160 1c2f245 83075c1 f836f2f 3dd504b 2a1da11 0a020de dd9b2ad ea9ab95 aaeefe8 03eff68 ded0ba9 e67e90e 1122fa5 70335fc 6d18814 e28d3f7 091ea21 43cc2ca 6d18814 ca3f718 03eff68 6d18814 e67e90e 44ec318 e67e90e ea9ab95 e67e90e dc7aadc 90e4651 dc7aadc aaeefe8 70335fc 27ace8b 8babfe5 70335fc 0cdf085 70335fc 9280f36 70335fc 17f2e27 1c2f245 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
/*
Credits @xpushz on telegram
Copyright 2017-2025 (c) Randy W @xtdevs, @xtsea on telegram
from : https://github.com/TeamKillerX
Channel : @RendyProjects
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import express from 'express';
const app = express();
import * as swaggerUi from 'swagger-ui-express';
import * as cheerio from 'cheerio';
import * as lifestyle from './startup/lifestyle.js';
import { Readable } from "stream";
import { OpenaiRes, tebakgambar, AnimeHentai } from './scrapper.js';
import { CheckMilWare } from './middleware/midware.js';
import { setup, serve } from './swagger.js';
import sharp from "sharp";
import cors from 'cors';
import bodyParser from 'body-parser';
import swaggerJsDoc from 'swagger-jsdoc';
// routes
import { FluxRoutes } from './plugins/fluxai.js';
import { GeminiRoutes } from './routes/googleGemini.js';
const CheckMilWares = new CheckMilWare();
app.disable('x-powered-by');
app.use(cors({
origin: '*',
methods: ['GET', 'POST'],
allowedHeaders: ['Content-Type', 'Authorization']
}));
app.use(bodyParser.json());
app.use(
bodyParser.urlencoded({
extended: true,
})
);
// routes
app.use(GeminiRoutes);
app.use(FluxRoutes);
const swaggerOptions = {
definition: {
openapi: '3.0.0',
info: {
title: 'AkenoXJs',
version: '1.0.0',
description: "Free API by @xtdevs",
contact: {
name: "RandyDev",
url: "",
email: ""
},
license: {
name: "MIT LICENSE",
url: "https://github.com/xtsea/x-api-js/blob/main/LICENSE"
}
},
servers: [
{
url: 'https://randydev-ryu-js.hf.space',
description: 'url'
}
],
tags: [
{ name: "AI" }
]
},
apis: [
"./routes/*.js",
"./plugins/*.js",
"./routes/*.route.js"
]
};
const specs = swaggerJsDoc(swaggerOptions);
app.use(
'/docs',
serve,
setup(specs, {
customCss: `
.swagger-ui .topbar { display: none; }
.swagger-ui .opblock .opblock-summary-path {
display: inline-block;
word-break: break-word;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
`,
customCssUrl: "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/4.3.0/swagger-ui.min.css",
customSiteTitle: 'AkenoXJs'
})
);
app.get('/', (req, res) => {
res.redirect('https://t.me/RendyProjects');
});
app.use(async (req, res, next) => {
await CheckMilWares.handle(req, res, next);
});
app.get('/api/v1/hentai-anime', async (req, res) => {
try {
const result = await AnimeHentai();
if (result) {
res.json({ result });
} else {
res.status(404).json({ error: "No result found." });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.get('/api/v1/tebakgambar', async (req, res) => {
try {
const result = await tebakgambar();
if (result) {
res.json({ result });
} else {
res.status(404).json({ error: "No result found." });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.get('/api/v1/gpt-old', async (req, res) => {
try {
const query = req.query.query;
const results = await OpenaiRes(query);
res.json({ results });
} catch (error) {
res.status(401).json({ error: error.message });
}
});
lifestyle.startServer(app); |