akkun3704 commited on
Commit
9008ed0
·
verified ·
1 Parent(s): d9355d8

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +36 -7
index.js CHANGED
@@ -1,11 +1,12 @@
1
  const fs = require('fs')
2
  const os = require('os')
3
- const mime = require('mime')
4
  const axios = require('axios')
5
  const bytes = require('bytes')
6
  const sharp = require('sharp')
7
  const morgan = require('morgan')
8
  const express = require('express')
 
9
  const PDFDocument = require('pdfkit')
10
 
11
  const app = express()
@@ -13,7 +14,8 @@ app.set('json spaces', 4)
13
  app.use(morgan('dev'))
14
  app.use(express.json())
15
 
16
- app.use('/file', express.static(os.tmpdir()))
 
17
 
18
  app.all('/', (req, res) => {
19
  const status = {}
@@ -32,11 +34,13 @@ app.all('/', (req, res) => {
32
  })
33
  })
34
 
35
- app.post('/imagetopdf', async (req, res) => {
 
 
36
  try {
37
  console.log(new Date().toLocaleString('id', { timeZone: 'Asia/Jakarta' }), '\n', req.body)
38
  const { images } = req.body
39
- if (!images) return res.json({ success: false, message: 'Required an array image url' })
40
 
41
  const buffer = await toPDF(images)
42
  res.setHeader('Content-Disposition', `attachment; filename=${Math.random().toString(36).slice(2)}.pdf`)
@@ -46,7 +50,7 @@ app.post('/imagetopdf', async (req, res) => {
46
  } catch (e) {
47
  console.log(e)
48
  e = String(e)
49
- res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
50
  }
51
  })
52
 
@@ -61,7 +65,7 @@ app.all('/webp2png', async (req, res) => {
61
  const fileName = `${Math.random().toString(36)}.png`
62
  const convertData = await sharp(fileBuffer).png().toBuffer()
63
 
64
- await fs.promises.writeFile(`${os.tmpdir()}/${fileName}`, convertData)
65
  res.send(`https://${req.get('host')}/file/${fileName}`)
66
  } catch (e) {
67
  console.log(e)
@@ -70,8 +74,33 @@ app.all('/webp2png', async (req, res) => {
70
  }
71
  })
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  app.all('/stablediff/illusion', async (req, res) => {
74
- if (!['GET', 'POST'].includes(req.method)) return res.json({ success: false, message: 'Method Not Allowed' })
 
75
  try {
76
  const {
77
  prompt,
 
1
  const fs = require('fs')
2
  const os = require('os')
3
+ const util = require('util')
4
  const axios = require('axios')
5
  const bytes = require('bytes')
6
  const sharp = require('sharp')
7
  const morgan = require('morgan')
8
  const express = require('express')
9
+ const cp = require('child_process')
10
  const PDFDocument = require('pdfkit')
11
 
12
  const app = express()
 
14
  app.use(morgan('dev'))
15
  app.use(express.json())
16
 
17
+ const tmpFolder = os.tmpdir()
18
+ app.use('/file', express.static(tmpFolder))
19
 
20
  app.all('/', (req, res) => {
21
  const status = {}
 
34
  })
35
  })
36
 
37
+ app.all('/imagetopdf', async (req, res) => {
38
+ if (!['POST'].includes(req.method)) return res.status(405).json({ success: false, message: 'Method Not Allowed' })
39
+
40
  try {
41
  console.log(new Date().toLocaleString('id', { timeZone: 'Asia/Jakarta' }), '\n', req.body)
42
  const { images } = req.body
43
+ if (!(images && Array.isArray(images))) return res.json({ success: false, message: 'Required an array image url' })
44
 
45
  const buffer = await toPDF(images)
46
  res.setHeader('Content-Disposition', `attachment; filename=${Math.random().toString(36).slice(2)}.pdf`)
 
50
  } catch (e) {
51
  console.log(e)
52
  e = String(e)
53
+ res.status(500).json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
54
  }
55
  })
56
 
 
65
  const fileName = `${Math.random().toString(36)}.png`
66
  const convertData = await sharp(fileBuffer).png().toBuffer()
67
 
68
+ await fs.promises.writeFile(`${tmpFolder}/${fileName}`, convertData)
69
  res.send(`https://${req.get('host')}/file/${fileName}`)
70
  } catch (e) {
71
  console.log(e)
 
74
  }
75
  })
76
 
77
+ app.all('/webp2mp4', async (req, res) => {
78
+ if (!['POST'].includes(req.method)) return res.status(405).json({ success: false, message: 'Method Not Allowed' })
79
+
80
+ try {
81
+ const { file } = req.body
82
+ if (!(file && isBase64(file))) return res.json({ success: false, message: 'Payload body file must be filled in base64 format' })
83
+
84
+ const fileBuffer = Buffer.from(file, 'base64')
85
+ const fileName = `${Math.random().toString(36)}.webp`
86
+ const filePath = `${tmpFolder}/${fileName}`
87
+ await fs.promises.writeFile(filePath, fileBuffer)
88
+
89
+ const exec = util.promisify(cp.exec).bind(cp)
90
+ await exec(`convert ${filePath} ${filePath}.gif`)
91
+ await exec(`ffmpeg -i ${filePath}.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" ${filePath.replace(/.webp|.gif/g, '')}.mp4`)
92
+
93
+ res.send(`https://${req.get('host')}/file/${fileName.replace('.webp', '.mp4')}`)
94
+ } catch (e) {
95
+ console.log(e)
96
+ e = String(e)
97
+ res.status(500).json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
98
+ }
99
+ })
100
+
101
  app.all('/stablediff/illusion', async (req, res) => {
102
+ if (!['GET', 'POST'].includes(req.method)) return res.status(405).json({ success: false, message: 'Method Not Allowed' })
103
+
104
  try {
105
  const {
106
  prompt,