siputzx commited on
Commit
bfa0169
·
verified ·
1 Parent(s): a9a0fd6

Update app.js

Browse files
Files changed (1) hide show
  1. app.js +41 -46
app.js CHANGED
@@ -13,53 +13,54 @@ const config = {
13
  userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
14
  };
15
 
16
- let browser, page;
17
-
18
  const utils = {
19
- async initialize() {
20
- if (!browser) {
21
- browser = await chromium.launch({ headless: true });
22
- const context = await browser.newContext({
23
- viewport: config.viewport,
24
- userAgent: config.userAgent
25
- });
26
 
27
- await context.route('**/*', (route) => {
28
- const url = route.request().url();
29
- if (url.endsWith('.png') || url.endsWith('.jpg') || url.includes('google-analytics')) {
30
- return route.abort();
31
- }
32
- route.continue();
33
- });
34
 
35
- page = await context.newPage();
36
- await page.goto('https://www.bratgenerator.com/', { waitUntil: 'domcontentloaded', timeout: 10000 });
37
 
38
- try {
39
- await page.click('#onetrust-accept-btn-handler', { timeout: 2000 });
40
- } catch { }
41
 
42
- await page.evaluate(() => setupTheme('white'));
43
- }
 
44
  },
45
 
46
  async generateBrat(text) {
47
- await page.fill('#textInput', text);
48
- const overlay = page.locator('#textOverlay');
49
- // Ambil screenshot dalam format PNG
50
- const pngBuffer = await overlay.screenshot({
51
- timeout: 3000,
52
- type: 'png'
53
- });
54
 
55
- // Konversi ke WebP menggunakan sharp
56
- return sharp(pngBuffer)
57
- .webp({ quality: 80 })
58
- .toBuffer();
59
- },
60
-
61
- async close() {
62
- if (browser) await browser.close();
 
 
 
 
 
 
 
 
 
63
  }
64
  };
65
 
@@ -73,7 +74,7 @@ app.get('*', async (req, res) => {
73
  if (!q) {
74
  return res.json({
75
  name: 'HD Bart Generator API',
76
- message: 'Parameter q di perlukan',
77
  version: '2.1.0',
78
  runtime: {
79
  os: os.type(),
@@ -99,12 +100,6 @@ app.get('*', async (req, res) => {
99
 
100
  const PORT = process.env.PORT || 7860;
101
 
102
- app.listen(PORT, async () => {
103
  console.log(`Server running on port ${PORT}`);
104
- await utils.initialize();
105
- });
106
-
107
- process.on('SIGINT', async () => {
108
- await utils.close();
109
- process.exit(0);
110
  });
 
13
  userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
14
  };
15
 
 
 
16
  const utils = {
17
+ async createBrowserInstance() {
18
+ const browser = await chromium.launch({ headless: true });
19
+ const context = await browser.newContext({
20
+ viewport: config.viewport,
21
+ userAgent: config.userAgent
22
+ });
 
23
 
24
+ await context.route('**/*', (route) => {
25
+ const url = route.request().url();
26
+ if (url.endsWith('.png') || url.endsWith('.jpg') || url.includes('google-analytics')) {
27
+ return route.abort();
28
+ }
29
+ route.continue();
30
+ });
31
 
32
+ const page = await context.newPage();
33
+ await page.goto('https://www.bratgenerator.com/', { waitUntil: 'domcontentloaded', timeout: 10000 });
34
 
35
+ try {
36
+ await page.click('#onetrust-accept-btn-handler', { timeout: 2000 });
37
+ } catch { }
38
 
39
+ await page.evaluate(() => setupTheme('white'));
40
+
41
+ return { browser, page };
42
  },
43
 
44
  async generateBrat(text) {
45
+ const { browser, page } = await this.createBrowserInstance();
 
 
 
 
 
 
46
 
47
+ try {
48
+ await page.fill('#textInput', text);
49
+ const overlay = page.locator('#textOverlay');
50
+
51
+ // Take screenshot
52
+ const pngBuffer = await overlay.screenshot({
53
+ timeout: 3000,
54
+ type: 'png'
55
+ });
56
+
57
+ // Convert to WebP
58
+ return await sharp(pngBuffer)
59
+ .webp({ quality: 80 })
60
+ .toBuffer();
61
+ } finally {
62
+ await browser.close();
63
+ }
64
  }
65
  };
66
 
 
74
  if (!q) {
75
  return res.json({
76
  name: 'HD Bart Generator API',
77
+ message: 'Parameter q diperlukan',
78
  version: '2.1.0',
79
  runtime: {
80
  os: os.type(),
 
100
 
101
  const PORT = process.env.PORT || 7860;
102
 
103
+ app.listen(PORT, () => {
104
  console.log(`Server running on port ${PORT}`);
 
 
 
 
 
 
105
  });