ryu-js / plugins /alldownloader.js
randydev's picture
Upload alldownloader.js
245a10c verified
import express from 'express';
import { Database } from '../database/database.js';
import {
facebookdl,
savefrom,
snapsave,
tiktokdl,
sfilemobi,
capcutdl,
PinterestDL,
sfilemobiSearch,
TiktokDownloader,
TwitterDownloader,
TwitterDownloderV3,
TwitterDownloaderV2,
TeraboxDownloader,
TeraboxV2Downloader,
TeraboxV3Downloader,
XnxxDownloader,
XsearchDownloaderV2,
InstagramDownloader,
InstagramDLV3,
InstagramDLV2,
InstagramDLV4,
XInfoDownloaderV2,
TelegramUseLog,
} from '../lib/all.js';
import { authenticateApiKey, apiLimiter } from '../middleware/midware.js';
const AllDlRoutes = express.Router();
const dbClient = new Database("AkenoXJs");
const db = dbClient.collection("api_keys");
async function updateIP(apiKey, newIP) {
await db.updateOne(
{ key: apiKey },
{ $addToSet: { ip_addresses: newIP } }
);
}
async function downloadMedia(media) {
const downloadResults = {};
try {
if (media.audio && Object.keys(media.audio).length > 0) {
const audioQuality = Object.keys(media.audio)[0];
const audioDownloadUrl = await media.audio[audioQuality].download();
downloadResults.audio = {
quality: audioQuality,
url: audioDownloadUrl
};
}
return downloadResults;
} catch (error) {
console.error("Error downloading media:", error);
throw new Error("Failed to download media");
}
}
/**
* @swagger
* /api/v1/dl/twitter-v3:
* get:
* summary: Twitter V3 Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/twitter-v3', async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.url;
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await TwitterDownloderV3(q);
res.json({ message: results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/twitter-v2:
* get:
* summary: Twitter V2 Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/twitter-v2', async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.url;
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await TwitterDownloaderV2(q);
res.json({ message: results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/xnxx-info-v2:
* get:
* summary: Xnxx Info V2 Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/xnxx-info-v2', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.url;
if (!q) {
return res.status(400).json({ error: "url parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await XInfoDownloaderV2(q);
res.json({ message: results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/xnxx-search-v2:
* get:
* summary: Xnxx Search V2 Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: q
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/xnxx-search-v2', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.q;
if (!q) {
return res.status(400).json({ error: "q parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await XsearchDownloaderV2(q);
res.json({ message: results });
// console.dir(testings);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/instagram-v4:
* get:
* summary: Instagram V4 Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/instagram-v4', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.url;
if (!q) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await InstagramDLV4(q);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/instagram-v3:
* get:
* summary: Instagram V3 Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/instagram-v3', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.url;
if (!q) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await InstagramDLV3(q);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/instagram-v2:
* get:
* summary: Instagram V2 Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/instagram-v2', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.url;
if (!q) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await InstagramDLV2(q);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/pint:
* get:
* summary: Pinterest Search Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: q
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/pint', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.q;
if (!q) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await PinterestDL(q);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/sfilemobi-search:
* get:
* summary: Sfilemobi Search Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: q
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/sfilemobi-search', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.q;
if (!q) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await sfilemobiSearch(q);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/* AllDlRoutes.get('/api/v1/dl/terabox-v3', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
const results = await TeraboxV3Downloader(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
*/
/* AllDlRoutes.get('/api/v1/dl/terabox-v2', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await TeraboxV2Downloader(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
}); */
/* AllDlRoutes.get('/api/v1/dl/terabox', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await TeraboxDownloader(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
*/
/**
* @swagger
* /api/v1/dl/capcut:
* get:
* summary: Capcut Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/capcut', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = capcutdl(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/instagram:
* get:
* summary: Instagram Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/instagram', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await InstagramDownloader(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/twitter:
* get:
* summary: Twitter Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/twitter', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await TwitterDownloader(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/sfilemobi:
* get:
* summary: Sfilemobi Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/sfilemobi', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await sfilemobi(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/tiktok:
* get:
* summary: Tiktok Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: The URL of the TikTok video to be processed
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/tiktok', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await TiktokDownloader(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/tiktok-v2:
* get:
* summary: Tiktok V2 Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: The URL of the TikTok video to be processed
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid URL)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/tiktok-v2', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "URL parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await tiktokdl(url);
res.json({ results });
} catch (error) {
console.error("TikTok Downloader Error:", error.message);
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/fb:
* get:
* summary: FB Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid url)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/fb', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "url parameter is required." });
}
const results = await facebookdl(url);
for (const video of results.video) {
video.url = await video.download();
}
for (const audio of results.audio) {
audio.url = await audio.download();
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/snapsave:
* get:
* summary: SnapSave Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid url)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/snapsave', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "url parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await snapsave(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/savefrom:
* get:
* summary: Savefrom Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: url
* required: true
* description: null
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid url)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/savefrom', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const url = req.query.url;
if (!url) {
return res.status(400).json({ error: "url parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await savefrom(url);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
/**
* @swagger
* /api/v1/dl/xnxx:
* get:
* summary: Xnxx Downloader
* tags: [ALL-Downloader]
* parameters:
* - in: query
* name: q
* required: true
* description: The search of the Xnxx video to be processed
* schema:
* type: string
* - in: header
* name: x-api-key
* required: true
* description: API key for authentication
* schema:
* type: string
* example: "lu api key di @aknuserbot telegram"
* responses:
* 200:
* description: Success
* 400:
* description: Bad Request (e.g., missing or invalid q)
* 401:
* description: Unauthorized (e.g., missing or invalid API key)
* 500:
* description: Internal Server Error
*/
AllDlRoutes.get('/api/v1/dl/xnxx', authenticateApiKey, apiLimiter, async (req, res) => {
try {
const apiKey = req.headers['x-api-key'];
const userAgent = req.headers['user-agent'];
const xForwardedFor = req.headers['x-forwarded-for'];
const xRealIP = req.headers['x-real-ip'];
const cfConnectingIP = req.headers['cf-connecting-ip'];
let realIP = req.ip;
if (xForwardedFor) {
realIP = xForwardedFor.split(',')[0].trim();
} else if (xRealIP) {
realIP = xRealIP;
} else if (cfConnectingIP) {
realIP = cfConnectingIP;
}
req.realIP = realIP;
console.log(`🔍 Captured IPs:`, { xForwardedFor, xRealIP, cfConnectingIP, realIP });
const keyDoc = await db.findOne({ key: apiKey });
if (!keyDoc) {
return res.status(403).json({ error: "Invalid API Key." });
}
const q = req.query.q;
if (!q) {
return res.status(400).json({ error: "q parameter is required." });
}
await updateIP(apiKey, realIP);
await TelegramUseLog(
keyDoc.owner,
keyDoc.key,
`Accessed: ${req.path}\nRealIP: ${realIP}\nUser-Agent: ${userAgent}`
);
const results = await XnxxDownloader(q);
res.json({ results });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
export { AllDlRoutes };