akkun3704 commited on
Commit
8c53df2
·
1 Parent(s): e39456d

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +59 -1
index.js CHANGED
@@ -1,9 +1,12 @@
 
1
  const os = require('os')
 
2
  const bytes = require('bytes')
3
  const sharp = require('sharp')
4
  const morgan = require('morgan')
5
  const express = require('express')
6
  const PDFDocument = require('pdfkit')
 
7
 
8
  const app = express()
9
  app.set('json spaces', 4)
@@ -34,7 +37,7 @@ app.post('/imagetopdf', async (req, res) => {
34
  if (!images) return res.json({ success: false, message: 'Required an array image url' })
35
 
36
  const buffer = await toPDF(images)
37
- res.setHeader('Content-Disposition', `attachment; filename=${Math.random().toString(36).slice(2)}.pdf`)
38
  res.setHeader('Content-Type', 'application/pdf')
39
  res.setHeader('Content-Length', buffer.byteLength)
40
  res.send(buffer)
@@ -45,6 +48,26 @@ app.post('/imagetopdf', async (req, res) => {
45
  }
46
  })
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  const PORT = process.env.PORT || 7860
49
  app.listen(PORT, () => console.log('App running on port', PORT))
50
 
@@ -84,4 +107,39 @@ function toPDF(urls) {
84
  reject(e)
85
  }
86
  })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
 
1
+ const fs = require('fs')
2
  const os = require('os')
3
+ const uuid = require('uuid')
4
  const bytes = require('bytes')
5
  const sharp = require('sharp')
6
  const morgan = require('morgan')
7
  const express = require('express')
8
  const PDFDocument = require('pdfkit')
9
+ const playwright = require('playwright-extra')
10
 
11
  const app = express()
12
  app.set('json spaces', 4)
 
37
  if (!images) return res.json({ success: false, message: 'Required an array image url' })
38
 
39
  const buffer = await toPDF(images)
40
+ res.setHeader('Content-Disposition', `attachment; filename=${uuid.v4()}.pdf`)
41
  res.setHeader('Content-Type', 'application/pdf')
42
  res.setHeader('Content-Length', buffer.byteLength)
43
  res.send(buffer)
 
48
  }
49
  })
50
 
51
+ app.all('/tgstogif', async (req, res) => {
52
+ if (!['GET', 'POST'].includes(req.method)) return res.status(405).end()
53
+ try {
54
+ let tgsUrl = req.query.url
55
+ if (req.method === 'POST') tgsUrl = req.body.url
56
+ if (!tgsUrl) return res.json({ success: false, message: 'Required parameter url' })
57
+ if (!tgsUrl.endsWith('.tgs')) return res.json({ success: false, message: 'Invalid tgs url' })
58
+
59
+ const buffer = await tgsToGif(tgsUrl)
60
+ res.setHeader('Content-Disposition', `attachment; filename=${uuid.v4()}.gif`)
61
+ res.setHeader('Content-Type', 'image/gif')
62
+ res.setHeader('Content-Length', buffer.byteLength)
63
+ res.send(buffer)
64
+ } catch (e) {
65
+ console.log(e)
66
+ e = String(e)
67
+ res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
68
+ }
69
+ })
70
+
71
  const PORT = process.env.PORT || 7860
72
  app.listen(PORT, () => console.log('App running on port', PORT))
73
 
 
107
  reject(e)
108
  }
109
  })
110
+ }
111
+
112
+ async function tgsToGif(url) {
113
+ let browser
114
+ try {
115
+ browser = await playwright['chromium'].launch({
116
+ headless: true,
117
+ executablePath: '/usr/bin/chromium',
118
+ args: ['--no-sandbox']
119
+ })
120
+
121
+ const page = await browser.newPage()
122
+ await page.goto('https://www.emojibest.com/tgs-to-gif')
123
+
124
+ const arrayBuffer = await (await fetch(url)).arrayBuffer()
125
+ await page.setInputFiles('.el-upload__input', {
126
+ name: 'file.tgs', buffer: Buffer.from(arrayBuffer)
127
+ })
128
+
129
+ const [download] = await Promise.all([
130
+ page.waitForEvent('download'),
131
+ page.click('.el-button.el-button--primary.el-button--mini'),
132
+ page.click('.el-button.el-button--success.el-button--mini')
133
+ ])
134
+
135
+ const filePath = await download.path()
136
+ const fileBuffer = await fs.promises.readFile(filePath)
137
+ await fs.promises.unlink(filePath)
138
+
139
+ return fileBuffer
140
+ } catch (e) {
141
+ throw e
142
+ } finally {
143
+ if (browser) await browser?.close?.()
144
+ }
145
  }