zenndb / index.js
Ruloaooa's picture
Update index.js
0c691c5 verified
const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');
const session = require('express-session');
const MongoStore = require('connect-mongo');
const dotenv = require('dotenv');
const LoveTik = require("./scraper");
const path = require("path");
const lovetik = new LoveTik();
const bodyParser = require("body-parser");
// Load environment variables
dotenv.config();
const app = express();
const PORT = 7860;
// Middleware
app.use(cors({
origin: true,
credentials: true
}));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Session Configuration
/*app.use(session({
secret: process.env.SESSION_SECRET || 'Khoirul78',
resave: false,
saveUninitialized: false,
store: MongoStore.create({
mongoUrl: "mongodb+srv://Khoirul78:Khoirul78@cluster0.zhnha.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0"
}),
cookie: {
maxAge: 1000 * 60 * 60 * 24 // 24 hours
}
}));*/
function getHDVideo(media = {}) {
// 1️⃣ PRIORITAS: IMAGE JIKA ADA
if (Array.isArray(media.images) && media.images.length) {
return {
type: "image",
url: media.images.map(img => img.url || img)
};
}
// 2️⃣ JIKA TIDAK ADA IMAGE → CARI VIDEO
if (Array.isArray(media.videos) && media.videos.length) {
const priority = ["HD Original", "720p", "576p"];
for (const quality of priority) {
const video = media.videos.find(v =>
typeof v.size === "string" &&
v.size.toLowerCase().includes(quality.toLowerCase())
);
if (video) {
return {
type: "video",
quality: video.size,
url: video.url
};
}
}
// fallback video pertama
const v = media.videos[0];
return {
type: "video",
quality: v.size || "unknown",
url: v.url
};
}
// 3️⃣ TIDAK ADA MEDIA
return null;
}
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, "public")));
// Routes
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "public/index.html"));
});
app.post("/api/tiktok", async (req, res) => {
try {
const { url } = req.body;
if (!url) {
return res.status(400).json({
status: false,
message: "Parameter url wajib diisi"
});
}
const hehe = await lovetik.download(url);
const result = getHDVideo(hehe.media);
res.json({
status: true,
result
});
} catch (err) {
res.status(500).json({
status: false,
message: err.message
});
}
});
app.listen(PORT, '0.0.0.0', () => {
console.log(`Server running on port ${PORT}`);
});