• Stars
    star
    162
  • Rank 224,689 (Top 5 %)
  • Language
    TypeScript
  • Created 8 months ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A minimal library that helps filter out NSFW images.

NSFW Filter

An npm library that helps filter out inappropriate images using AI.

Current version


Installation

npm i nsfw-filter

Usage

import NSFWFilter from 'nsfw-filter';

const isSafe = await NSFWFilter.isSafe(image);

Full example

import { useState } from 'react';
import NSFWFilter from 'nsfw-filter';

function ImageUploader() {
  const [imageUrl, setImageUrl] = useState('');

  const handleImageUpload = async (event) => {
    const file = event.target.files[0];

    // Check to see if the image is appropriate
    const isSafe = await NSFWFilter.isSafe(file);
    if (!isSafe) return 'Image is not appropriate';

    // Process the image if it is safe
    if (file) {
      const reader = new FileReader();
      reader.onloadend = () => {
        setImageUrl(reader.result);
      };
      reader.readAsDataURL(file);
    }
  };

  return (
    <div>
      <input type="file" onChange={handleImageUpload} />
      {imageUrl && <img src={imageUrl} alt="Uploaded" />}
    </div>
  );
}

export default ImageUploader;

Real world usage

nsfw-filter is currently used in production to process hundreds of thousands of images for a popular image restoration service called restorePhotos. It helps prevent people from uploading inappropriate pictures. See how it's used here.

Using in a browser environment with vite

you can polyfill the core node modules used in nsfw-filter for browser compatibility such as

["path", "stream", "assert", "events", "zlib", "util", "buffer"]

more on this: https://vitejs.dev/guide/troubleshooting.html

install vite-plugin-node-polyfills with npm: https://www.npmjs.com/package/vite-plugin-node-polyfills in vite.config.js

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import { nodePolyfills } from "vite-plugin-node-polyfills";
import path from "path";
export default defineConfig({
  plugins: [
    nodePolyfills({
      // To add only specific polyfills, add them here. If no option is passed, adds all polyfills
      include: ["path", "stream", "assert", "events", "zlib", "util", "buffer"],
    }),
    react(),
  ],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src"),
      "~": path.resolve(__dirname, "./"),
    },
  },
});

bonus: you can polyfill path to support path aliases for vite when you deploy your could on the cloud for example vercel. so you can use @ import { cn } from "@/lib/utils" disclaimer: using nsfw-filter on the browser will dramatically increase your bundle size.

How it works

This library uses both Tensorflow.js, an OSS library for machine learning models, and nsfwjs to predict whether a given image is NSFW (Not Safe For Work).

More Repositories

1

roomGPT

Upload a photo of your room to generate your dream room with AI.
TypeScript
9,563
star
2

aicommits

A CLI that writes your git commit messages for you with AI
TypeScript
7,420
star
3

restorePhotos

Restoring old and blurry face photos with AI.
TypeScript
3,737
star
4

twitterbio

Generate your Twitter bio with Mixtral and GPT-3.5.
TypeScript
1,562
star
5

notesGPT

Record voice notes & transcribe, summarize, and get tasks
TypeScript
1,447
star
6

pdftochat

Chat with your PDFs with AI
TypeScript
664
star
7

qrGPT

An AI QR Code Generator
TypeScript
473
star
8

news-summarizer

News summarizer with AI
TypeScript
327
star
9

tailwind-color-picker

A chrome extension color picker for Tailwind
TypeScript
317
star
10

alt-text-generator

A flask API that generates a description for any image using AI.
Python
115
star
11

devwriting

All resources & exercises from the Miami Dev Writer's Retreat
101
star
12

devrel-resources

A repo filled with devrel resources, communities, and people in the space to follow
69
star
13

aiangels

A directory of angel investors in AI startups.
TypeScript
61
star
14

whatisdevrel

A site that explains what developer relations is
JavaScript
56
star
15

vercel-deploy-extension

A chrome extension that can deploy any Github repo to Vercel for you
JavaScript
53
star
16

nextjs-swell

A Next.js and Swell demo
JavaScript
41
star
17

devtool-angels

A site that lists angel investors that invest in devtools
TypeScript
38
star
18

intercom-nextjs

A Next.js app that uses Intercom
JavaScript
24
star
19

yt-search-engine

Search Engine for YouTuber Ali Abdaal's videos
JavaScript
24
star
20

scripts

Scripts I use to enhance my workflow, focused on React & Git
Shell
23
star
21

algorithms

My solved algorithm problems, notes, and techniques
Python
19
star
22

bobrossextension

A Chrome extension that replaces all images on Youtube.com with pictures of Bob Ross.
JavaScript
19
star
23

chat

A simple Next.js chat app.
TypeScript
16
star
24

passive-to-active-voice

Transform passive voice into active voice with AI.
TypeScript
14
star
25

finetuning

Python scripts to finetune GPT 3.5
Python
12
star
26

deliveroo

A site I made for one of my dad's app ideas to get feedback
JavaScript
11
star
27

together-js

Together.ai Node.js SDK
TypeScript
10
star
28

next-blog

My blog where I talk about devrel, tech, and coding.
JavaScript
9
star
29

prisma-data-proxy

A serverless app using the Next.js and the Prisma Data Proxy presented at Prisma Serverless Conference
JavaScript
8
star
30

pmsox-site

Landing page for a fintech startup
JavaScript
8
star
31

nextjs-prisma-demo

A Next.js and Prisma Demo.
JavaScript
7
star
32

uploader

Simple Next.js app that uses ByteScale to upload docs
TypeScript
6
star
33

vscode

My vscode settings, custom keybindings, and extensions
5
star
34

json_to_firestore

A script that turns a JSON file into a FireStore collection
JavaScript
5
star
35

nowtrailer-site

A site I made for one of my dad's friends about trailers
JavaScript
4
star
36

polls-app

A polling react app that allows users to vote and create polls anonymously
JavaScript
4
star
37

dotfiles

My dotfiles
Shell
4
star
38

ultimate_rust_crash_course

Exercises from the Rust Fundamentals Course
Rust
3
star
39

eatnow

A mobile app that reminds you to eat each day
JavaScript
3
star
40

css

Documenting my knowledge about CSS
HTML
2
star
41

sveltekit-app

Default Sveltekit app
Svelte
2
star
42

cell-tracking-viz

Dashboard for Cell Tracking Challenge data for Dr. Andrew Cohen
JavaScript
2
star
43

astro-markdown

A minimalistic markdown page in Astro
JavaScript
2
star
44

advent-of-code

Advent of Code 2021
2
star
45

TIL

A collection of tips and learnings about CS
2
star
46

qualtrics-spss

A script that uses the Qualtrics API to scrape survey data and format it into a CSV/SPSS file
Python
1
star
47

dvtpd

Landing page for my DVT prevention medical device
JavaScript
1
star
48

covid-tracker

A React web app that tracks covid in the US (in-progress)
JavaScript
1
star
49

Nutlope

Personal README
1
star
50

covid-classifier

A machine learning model that classifies CT scans as covid or non-covid using a k-nearest neighbor algorithm
Python
1
star