Spaces:
Running
Running
Update index.js
Browse files
index.js
CHANGED
@@ -6,6 +6,8 @@ const express = require('express')
|
|
6 |
const PDFDocument = require('pdfkit')
|
7 |
const axios = require("axios")
|
8 |
const FormData = require("form-data")
|
|
|
|
|
9 |
//const { BingChat } = (await import("bing-chat")).default
|
10 |
const apikey = "@SadTeam77"
|
11 |
|
@@ -150,6 +152,36 @@ app.post('/api/waifu2x', async (req, res) => {
|
|
150 |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
151 |
}
|
152 |
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
/*app.post('/api/bingchat', async (req, res) => {
|
154 |
try {
|
155 |
console.log(req.body)
|
@@ -179,7 +211,13 @@ app.listen(PORT, () => console.log('App running on port', PORT))
|
|
179 |
function formatSize(num) {
|
180 |
return bytes(+num || 0, { unitSeparator: ' ' })
|
181 |
}
|
182 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
function toPDF(urls) {
|
184 |
return new Promise(async (resolve, reject) => {
|
185 |
try {
|
@@ -291,10 +329,16 @@ async function waifu2x(image, formats) {
|
|
291 |
})
|
292 |
return images.data
|
293 |
}
|
294 |
-
function
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
}
|
|
|
6 |
const PDFDocument = require('pdfkit')
|
7 |
const axios = require("axios")
|
8 |
const FormData = require("form-data")
|
9 |
+
const tfjs = require('@tensorflow/tfjs-node')
|
10 |
+
const nsfwjs = require('nsfwjs')
|
11 |
//const { BingChat } = (await import("bing-chat")).default
|
12 |
const apikey = "@SadTeam77"
|
13 |
|
|
|
152 |
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
153 |
}
|
154 |
})
|
155 |
+
app.post('/api/nsfw-check', async (req, res) => {
|
156 |
+
try {
|
157 |
+
console.log(req.body)
|
158 |
+
const { images, status } = req.body
|
159 |
+
if (!images) return res.json({ success: false, message: 'Required an images!' })
|
160 |
+
if (!status) return res.json({ success: false, message: 'Required an status text!' })
|
161 |
+
|
162 |
+
if(status !== apikey) return res.json({ success: false, message: 'Invalid status!' })
|
163 |
+
if (/^(https?|http):\/\//i.test(images)) {
|
164 |
+
const data_img = await axios.request({
|
165 |
+
method: "GET",
|
166 |
+
url: images,
|
167 |
+
responseType: "arraybuffer"
|
168 |
+
})
|
169 |
+
const response = await check_nsfw(data_img.data)
|
170 |
+
res.json(response)
|
171 |
+
} else if (images && typeof images == 'string' && isBase64(images)) {
|
172 |
+
const response = await check_nsfw(Buffer.from(images, "base64"))
|
173 |
+
res.json(response)
|
174 |
+
} else {
|
175 |
+
res.json({
|
176 |
+
success: false, message: 'No url or base64 detected!!'
|
177 |
+
})
|
178 |
+
}
|
179 |
+
} catch (e) {
|
180 |
+
console.log(e)
|
181 |
+
e = String(e)
|
182 |
+
res.json({ error: true, message: e === '[object Object]' ? 'Internal Server Error' : e })
|
183 |
+
}
|
184 |
+
})
|
185 |
/*app.post('/api/bingchat', async (req, res) => {
|
186 |
try {
|
187 |
console.log(req.body)
|
|
|
211 |
function formatSize(num) {
|
212 |
return bytes(+num || 0, { unitSeparator: ' ' })
|
213 |
}
|
214 |
+
function isBase64(str) {
|
215 |
+
try {
|
216 |
+
return btoa(atob(str)) === str
|
217 |
+
} catch {
|
218 |
+
return false
|
219 |
+
}
|
220 |
+
}
|
221 |
function toPDF(urls) {
|
222 |
return new Promise(async (resolve, reject) => {
|
223 |
try {
|
|
|
329 |
})
|
330 |
return images.data
|
331 |
}
|
332 |
+
async function check_nsfw(buffer) {
|
333 |
+
const model = await nsfwjs.load() // To load a local model, nsfw.load('file://./path/to/model/')
|
334 |
+
// Image must be in tf.tensor3d format
|
335 |
+
// you can convert image to tf.tensor3d with tf.node.decodeImage(Uint8Array,channels)
|
336 |
+
const image = await tfjs.node.decodeImage(buffer,3)
|
337 |
+
const predictions = await model.classify(image)
|
338 |
+
image.dispose() // Tensor memory must be managed explicitly (it is not sufficient to let a tf.Tensor go out of scope for its memory to be released).
|
339 |
+
return prediction.map(v => {
|
340 |
+
class_name: v.className,
|
341 |
+
probability: v.probability,
|
342 |
+
probability_percent: (v.probability * 100).toFixed(2)
|
343 |
+
})
|
344 |
}
|