andhikagg commited on
Commit
6ed701d
·
verified ·
1 Parent(s): 96823f0

Update app.js

Browse files
Files changed (1) hide show
  1. app.js +53 -5
app.js CHANGED
@@ -1,5 +1,5 @@
1
  const express = require('express');
2
- const { chromium } = require('playwright');
3
  const cors = require('cors');
4
  const dotenv = require('dotenv');
5
  const os = require('os');
@@ -53,6 +53,46 @@ const utils = {
53
  }
54
  };
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  const app = express();
57
  app.use(express.json());
58
  app.use(cors());
@@ -60,7 +100,7 @@ app.set('json spaces', 3);
60
 
61
  app.get('*', async (req, res) => {
62
  try {
63
- const { q } = req.query;
64
  if (!q) {
65
  return res.status(200).json({
66
  name: 'HD Bart Generator API',
@@ -76,9 +116,15 @@ app.get('*', async (req, res) => {
76
  }
77
  });
78
  }
79
- const imageBuffer = await utils.generateBrat(q);
80
- res.set('Content-Type', 'image/png');
81
- res.send(imageBuffer);
 
 
 
 
 
 
82
  } catch (error) {
83
  console.error(error);
84
  res.status(500).json({
@@ -94,9 +140,11 @@ const PORT = process.env.PORT || 7860;
94
  app.listen(PORT, async () => {
95
  console.log(`Server running on port ${PORT}`);
96
  await utils.initialize();
 
97
  });
98
 
99
  process.on('SIGINT', async () => {
100
  await utils.close();
 
101
  process.exit(0);
102
  });
 
1
  const express = require('express');
2
+ const { chromium, devices } = require('playwright');
3
  const cors = require('cors');
4
  const dotenv = require('dotenv');
5
  const os = require('os');
 
53
  }
54
  };
55
 
56
+ const utils2 = {
57
+ async initialize() {
58
+ if (!browser) {
59
+ browser = await chromium.launch({ headless: true });
60
+ const context = await browser.newContext({
61
+ viewport: config.viewport,
62
+ userAgent: config.userAgent,
63
+ ...devices['iPhone 13'],
64
+ });
65
+
66
+ await context.route('**/*', (route) => {
67
+ const url = route.request().url();
68
+ if (url.endsWith('.png') || url.endsWith('.jpg') || url.includes('google-analytics')) {
69
+ return route.abort();
70
+ }
71
+ route.continue();
72
+ });
73
+
74
+ page = await context.newPage();
75
+ await page.goto('https://www.bratgenerator.com/', { waitUntil: 'domcontentloaded', timeout: 10000 });
76
+
77
+ try {
78
+ await page.click('#onetrust-accept-btn-handler', { timeout: 2000 });
79
+ } catch { }
80
+
81
+ await page.evaluate(() => setupTheme('white'));
82
+ }
83
+ },
84
+
85
+ async generateBrat(text) {
86
+ await page.fill('#textInput', text);
87
+ const overlay = page.locator('#textOverlay');
88
+ return overlay.screenshot({ timeout: 3000 });
89
+ },
90
+
91
+ async close() {
92
+ if (browser) await browser.close();
93
+ }
94
+ };
95
+
96
  const app = express();
97
  app.use(express.json());
98
  app.use(cors());
 
100
 
101
  app.get('*', async (req, res) => {
102
  try {
103
+ const { q, type } = req.query;
104
  if (!q) {
105
  return res.status(200).json({
106
  name: 'HD Bart Generator API',
 
116
  }
117
  });
118
  }
119
+ if (type === "iphone") {
120
+ const imageBuffer = await utils2.generateBrat(q);
121
+ res.set('Content-Type', 'image/png');
122
+ res.send(imageBuffer);
123
+ } else {
124
+ const imageBuffer = await utils.generateBrat(q);
125
+ res.set('Content-Type', 'image/png');
126
+ res.send(imageBuffer);
127
+ }
128
  } catch (error) {
129
  console.error(error);
130
  res.status(500).json({
 
140
  app.listen(PORT, async () => {
141
  console.log(`Server running on port ${PORT}`);
142
  await utils.initialize();
143
+ await utils2.initialize();
144
  });
145
 
146
  process.on('SIGINT', async () => {
147
  await utils.close();
148
+ await utils2.close();
149
  process.exit(0);
150
  });