implement flagNsfwByAttachments method

This commit is contained in:
srgooglo 2022-10-16 20:47:58 +02:00
parent bf8fc48e0f
commit fe4198d884

View File

@ -0,0 +1,48 @@
import { Post } from "../../../models"
import indecentPrediction from "../../../utils/indecent-prediction"
import isNSFW from "../../../utils/is-nsfw"
import modifyPostData from "./modifyPostData"
export default async (post_id) => {
if (!post_id) {
throw new Error("Post ID is required")
}
let post = await Post.findById(post_id)
if (!post) {
throw new Error("Post not found")
}
let flags = []
// run indecentPrediction to all attachments
if (Array.isArray(post.attachments) && post.attachments.length > 0) {
for await (const attachment of post.attachments) {
const prediction = await indecentPrediction({
url: attachment.url,
}).catch((err) => {
console.log("Error while checking", attachment, err)
return null
})
if (prediction) {
const isNsfw = isNSFW(prediction)
if (isNsfw) {
flags.push("nsfw")
}
}
}
}
// if is there new flags update post
if (post.flags !== flags) {
await modifyPostData(post_id, {
flags: flags,
})
}
return flags
}