File size: 2,707 Bytes
75cd405
6dd6c3a
34f5aad
 
75cd405
 
c41752f
75cd405
 
 
 
6dd6c3a
 
 
 
21abae2
75cd405
f6b3e6c
 
75cd405
f6b3e6c
75cd405
 
 
 
fe364d9
f6b3e6c
75cd405
 
f6b3e6c
75cd405
 
 
 
34f5aad
 
 
6dd6c3a
34f5aad
f6b3e6c
6dd6c3a
f6b3e6c
6dd6c3a
 
 
 
34f5aad
 
6dd6c3a
 
f6b3e6c
6dd6c3a
 
 
 
34f5aad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75cd405
 
 
6dd6c3a
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
const express = require('express');
const { tiktokStalk } = require('./lib/tiktokstalk'); // Pastikan file `tiktokstalk.js` sesuai
const { yt1s } = require('./lib/yt1s'); // Modul untuk yt1s
const { ytdl } = require('./lib/ytdl'); // Modul untuk ytdl

const app = express();
const port = process.env.PORT || 7860; // Hugging Face Spaces menggunakan port 7860

// Middleware untuk parsing JSON
app.use(express.json());

app.get('/', (req, res) => res.status(400).json({ message: 'Hello World' }));

// Endpoint untuk TikTok Stalk
app.get('/endpoint/tiktokstalk', async (req, res) => {
  const query = req.query.query; // Mengambil parameter dari query string

  console.log(`[TikTokStalk] Received query: ${query}`); // Log command

  if (!query) {
    console.error(`[TikTokStalk] Error: Query is required`);
    return res.status(400).json({ error: 'Query is required' });
  }

  try {
    const result = await tiktokStalk(query);
    console.log(`[TikTokStalk] Success: Result fetched for ${query}`);
    res.json(result);
  } catch (error) {
    console.error(`[TikTokStalk] Error:`, error);
    res.status(500).json({ error: 'Something went wrong' });
  }
});

// Endpoint untuk YouTube Download via yt1s
app.get('/endpoint/yt1s', async (req, res) => {
  const url = req.query.url;

  console.log(`[YouTubeDownload] Received request for URL: ${url}`); // Log command

  if (!url) {
    console.error(`[YouTubeDownload] Error: URL is required`);
    return res.status(400).json({ error: 'URL is required' });
  }

  try {
    const result = await yt1s.dl(url);
    console.log(`[YouTubeDownload] Success: Video fetched for URL: ${url}`);
    res.json(result);
  } catch (error) {
    console.error(`[YouTubeDownload] Error:`, error);
    res.status(500).json({ error: 'Something went wrong' });
  }
});

// Endpoint untuk YouTube Download via ytdl
app.get('/endpoint/ytdl', async (req, res) => {
  const url = req.query.url;
  const resolution = parseInt(req.query.resolution, 10) || 720; // Default ke 720p jika tidak ada

  console.log(`[YTDLDownload] Received request for URL: ${url}, Resolution: ${resolution}`); // Log command

  if (!url) {
    console.error(`[YTDLDownload] Error: URL is required`);
    return res.status(400).json({ error: 'URL is required' });
  }

  try {
    const result = await ytdl(url, resolution);
    console.log(`[YTDLDownload] Success: Video fetched for URL: ${url}, Resolution: ${resolution}`);
    res.json(result);
  } catch (error) {
    console.error(`[YTDLDownload] Error:`, error);
    res.status(500).json({ error: 'Something went wrong' });
  }
});

// Menjalankan server
app.listen(port, () => {
  console.log(`API running on http://localhost:${port}`);
});