Rianofc commited on
Commit
4085b1a
·
verified ·
1 Parent(s): 1b40280

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +4 -28
index.js CHANGED
@@ -7,32 +7,10 @@ const app = express();
7
  const PORT = 7860;
8
  const TEMP_DIR = '/tmp';
9
  if (!fs.existsSync(TEMP_DIR)) fs.mkdirSync(TEMP_DIR, { recursive: true });
10
-
11
- // Fungsi bantu: tunggu file muncul
12
- function waitForFile(path, timeout = 5000) {
13
- return new Promise((resolve, reject) => {
14
- const interval = 100;
15
- let elapsed = 0;
16
-
17
- const check = () => {
18
- if (fs.existsSync(path)) return resolve();
19
- elapsed += interval;
20
- if (elapsed >= timeout) return reject(new Error('File tidak ditemukan setelah menunggu'));
21
- setTimeout(check, interval);
22
- };
23
-
24
- check();
25
- });
26
- }
27
-
28
- // Endpoint: /sswebvid
29
  app.get('/sswebvid', async (req, res) => {
30
  const url = req.query.url;
31
  if (!url) return res.status(400).send('Parameter ?url= wajib');
32
 
33
- const filename = `video_${Date.now()}.webm`;
34
- const filepath = `/tmp/${filename}`;
35
-
36
  const browser = await chromium.launch();
37
  const context = await browser.newContext({
38
  recordVideo: {
@@ -46,22 +24,20 @@ app.get('/sswebvid', async (req, res) => {
46
  try {
47
  await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 15000 });
48
  await page.waitForTimeout(5000);
49
- await browser.close();
50
 
51
- // Tunggu file benar-benar ada
52
- await waitForFile(filepath);
53
 
54
  res.setHeader('Content-Type', 'video/webm');
55
- const stream = fs.createReadStream(filepath);
56
  stream.pipe(res);
57
- stream.on('end', () => fs.unlink(filepath, () => {}));
58
  } catch (err) {
59
  await browser.close();
60
  res.status(500).send('Gagal rekam video: ' + err.message);
61
  }
62
  });
63
 
64
-
65
  // Endpoint: Screenshot sebagai foto (gambar)
66
  app.get('/ssweb', async (req, res) => {
67
  const url = req.query.url;
 
7
  const PORT = 7860;
8
  const TEMP_DIR = '/tmp';
9
  if (!fs.existsSync(TEMP_DIR)) fs.mkdirSync(TEMP_DIR, { recursive: true });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  app.get('/sswebvid', async (req, res) => {
11
  const url = req.query.url;
12
  if (!url) return res.status(400).send('Parameter ?url= wajib');
13
 
 
 
 
14
  const browser = await chromium.launch();
15
  const context = await browser.newContext({
16
  recordVideo: {
 
24
  try {
25
  await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 15000 });
26
  await page.waitForTimeout(5000);
27
+ const videoPath = await page.video().path();
28
 
29
+ await browser.close();
 
30
 
31
  res.setHeader('Content-Type', 'video/webm');
32
+ const stream = fs.createReadStream(videoPath);
33
  stream.pipe(res);
34
+ stream.on('end', () => fs.unlink(videoPath, () => {})); // hapus setelah dikirim
35
  } catch (err) {
36
  await browser.close();
37
  res.status(500).send('Gagal rekam video: ' + err.message);
38
  }
39
  });
40
 
 
41
  // Endpoint: Screenshot sebagai foto (gambar)
42
  app.get('/ssweb', async (req, res) => {
43
  const url = req.query.url;