Make a demo?

This commit is contained in:
吳元皓 2025-05-19 14:38:59 +08:00
parent edd8e5b05a
commit 2495911a81
4 changed files with 49 additions and 4 deletions

View File

@ -1,6 +1,17 @@
async function checkUnsafeContent() { import NewsAnalyzer from "~/components/newsAnalyzer";
const req = await fetch("/api/contentcheck/kidunfriendlycontent"); const newsAnalyzer = new NewsAnalyzer();
const res = await req.json(); async function checkUnsafeContent(title: string) {
try {
const req = await fetch("/api/contentcheck/kidunfriendlycontent");
const res = await req.json();
const patterns = res.words.map((word) => new RegExp(word, "i"));
console.log(patterns);
newsAnalyzer.setSensitivePatterns(patterns);
const kidfriendly = newsAnalyzer.isKidFriendly(title);
return kidfriendly;
} catch (e) {
console.log(e);
}
} }
export default checkUnsafeContent; export default checkUnsafeContent;

View File

@ -0,0 +1,20 @@
// News Analyzer Class
class NewsAnalyzer {
private sensitivePatterns: RegExp[];
constructor() {
this.sensitivePatterns = [];
}
isKidFriendly(title) {
for (let pattern of this.sensitivePatterns) {
if (pattern.test(title)) return false;
}
return true;
}
public setSensitivePatterns(patterns: RegExp[]): void {
this.sensitivePatterns = patterns;
}
}
export default NewsAnalyzer;

14
pages/demo.vue Normal file
View File

@ -0,0 +1,14 @@
<script setup lang="ts">
import CheckKidUnfriendlyContent from "~/components/checks/checkKidUnfriendlyContent";
const title = ref("");
const system = ref(false);
const checkTitle = () => {
if (!title.value) return;
system.value = CheckKidUnfriendlyContent(title.value);
}
</script>
<template>
<input type="text" v-model="title">
<button @click="checkTitle">
<div>{{ system }}</div>
</template>

View File

@ -1,6 +1,6 @@
import sql from "~/server/components/postgres"; import sql from "~/server/components/postgres";
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
return { return {
words: ["violence"], words: ["violence", "kill", "太小"],
}; };
}); });