mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
68 lines
1.2 KiB
JavaScript
68 lines
1.2 KiB
JavaScript
import { Post } from "@db_models"
|
|
import axios from "axios"
|
|
|
|
const classifyAPI = "https://vision-service.ragestudio.net"
|
|
|
|
const adultLevels = [
|
|
"VERY_UNLIKELY",
|
|
"UNLIKELY",
|
|
"POSSIBLE",
|
|
"LIKELY",
|
|
"VERY_LIKELY",
|
|
]
|
|
|
|
export default {
|
|
id: "classify_post_attachments",
|
|
maxJobs: 100,
|
|
process: async (job) => {
|
|
const { post_id, auth_token } = job.data
|
|
|
|
let post = await Post.findById(post_id).lean()
|
|
|
|
console.log(`[CLASSIFY] Checking post ${post_id}`)
|
|
|
|
if (!post) {
|
|
return false
|
|
}
|
|
|
|
if (!Array.isArray(post.attachments)) {
|
|
return false
|
|
}
|
|
|
|
for await (const attachment of post.attachments) {
|
|
if (!attachment.url) {
|
|
continue
|
|
}
|
|
|
|
const response = await axios({
|
|
method: "GET",
|
|
url: `${classifyAPI}/safe_detect`,
|
|
headers: {
|
|
Authorization: auth_token,
|
|
},
|
|
params: {
|
|
url: attachment.url,
|
|
},
|
|
})
|
|
|
|
console.log(
|
|
`[CLASSIFY] Attachment [${attachment.url}] classified as ${response.data.detections.adult}`,
|
|
)
|
|
|
|
const adultLevel = adultLevels.indexOf(
|
|
response.data.detections.adult,
|
|
)
|
|
|
|
if (!Array.isArray(attachment.flags)) {
|
|
attachment.flags = []
|
|
}
|
|
|
|
if (adultLevel > 2) {
|
|
attachment.flags.push("nsfw")
|
|
}
|
|
}
|
|
|
|
await Post.findByIdAndUpdate(post._id, post)
|
|
},
|
|
}
|