be even more liberal with naming...
This commit is contained in:
469
bad/bad-list.txt
Normal file
469
bad/bad-list.txt
Normal file
@@ -0,0 +1,469 @@
|
||||
2g1c
|
||||
2 girls 1 cup
|
||||
acrotomophilia
|
||||
alabama hot pocket
|
||||
alaskan pipeline
|
||||
anal
|
||||
anilingus
|
||||
anus
|
||||
apeshit
|
||||
arsehole
|
||||
ass
|
||||
asshole
|
||||
assmunch
|
||||
auto erotic
|
||||
autoerotic
|
||||
babeland
|
||||
baby batter
|
||||
baby juice
|
||||
ball gag
|
||||
ball gravy
|
||||
ball kicking
|
||||
ball licking
|
||||
ball sack
|
||||
ball sucking
|
||||
bangbros
|
||||
bangbus
|
||||
bareback
|
||||
barely legal
|
||||
barenaked
|
||||
bastard
|
||||
bastardo
|
||||
bastinado
|
||||
bbw
|
||||
bdsm
|
||||
beaner
|
||||
beaners
|
||||
beaver cleaver
|
||||
beaver lips
|
||||
beastiality
|
||||
bestiality
|
||||
big black
|
||||
big breasts
|
||||
big knockers
|
||||
big tits
|
||||
bimbos
|
||||
birdlock
|
||||
bitch
|
||||
bitches
|
||||
black cock
|
||||
blonde action
|
||||
blonde on blonde action
|
||||
blowjob
|
||||
blow job
|
||||
blow your load
|
||||
blue waffle
|
||||
blumpkin
|
||||
bollocks
|
||||
bondage
|
||||
boner
|
||||
boob
|
||||
boobs
|
||||
booty call
|
||||
brown showers
|
||||
brunette action
|
||||
bukkake
|
||||
bulldyke
|
||||
bullet vibe
|
||||
bullshit
|
||||
bung hole
|
||||
bunghole
|
||||
busty
|
||||
butt
|
||||
buttcheeks
|
||||
butthole
|
||||
camel toe
|
||||
camgirl
|
||||
camslut
|
||||
camwhore
|
||||
carpet muncher
|
||||
carpetmuncher
|
||||
chocolate rosebuds
|
||||
cialis
|
||||
circlejerk
|
||||
cleveland steamer
|
||||
clit
|
||||
clitoris
|
||||
clover clamps
|
||||
clusterfuck
|
||||
cock
|
||||
cocks
|
||||
coprolagnia
|
||||
coprophilia
|
||||
cornhole
|
||||
coon
|
||||
coons
|
||||
creampie
|
||||
cum
|
||||
cumming
|
||||
cumshot
|
||||
cumshots
|
||||
cunnilingus
|
||||
cunt
|
||||
darkie
|
||||
date rape
|
||||
daterape
|
||||
deep throat
|
||||
deepthroat
|
||||
dendrophilia
|
||||
dick
|
||||
dildo
|
||||
dingleberry
|
||||
dingleberries
|
||||
dirty pillows
|
||||
dirty sanchez
|
||||
doggie style
|
||||
doggiestyle
|
||||
doggy style
|
||||
doggystyle
|
||||
dog style
|
||||
dolcett
|
||||
domination
|
||||
dominatrix
|
||||
dommes
|
||||
donkey punch
|
||||
double dong
|
||||
double penetration
|
||||
dp action
|
||||
dry hump
|
||||
dvda
|
||||
eat my ass
|
||||
ecchi
|
||||
ejaculation
|
||||
erotic
|
||||
erotism
|
||||
escort
|
||||
eunuch
|
||||
fag
|
||||
faggot
|
||||
fecal
|
||||
felch
|
||||
fellatio
|
||||
feltch
|
||||
female squirting
|
||||
femdom
|
||||
figging
|
||||
fingerbang
|
||||
fingering
|
||||
fisting
|
||||
foot fetish
|
||||
footjob
|
||||
frotting
|
||||
fuck
|
||||
fuck buttons
|
||||
fuckin
|
||||
fucking
|
||||
fucktards
|
||||
fudge packer
|
||||
fudgepacker
|
||||
futanari
|
||||
gangbang
|
||||
gang bang
|
||||
gay sex
|
||||
genitals
|
||||
giant cock
|
||||
girl on
|
||||
girl on top
|
||||
girls gone wild
|
||||
goatcx
|
||||
goatse
|
||||
god damn
|
||||
gokkun
|
||||
golden shower
|
||||
goodpoop
|
||||
goo girl
|
||||
goregasm
|
||||
grope
|
||||
group sex
|
||||
g-spot
|
||||
guro
|
||||
hand job
|
||||
handjob
|
||||
hard core
|
||||
hardcore
|
||||
hentai
|
||||
homoerotic
|
||||
honkey
|
||||
hooker
|
||||
horny
|
||||
hot carl
|
||||
hot chick
|
||||
how to kill
|
||||
how to murder
|
||||
huge fat
|
||||
humping
|
||||
incest
|
||||
intercourse
|
||||
jack off
|
||||
jail bait
|
||||
jailbait
|
||||
jelly donut
|
||||
jerk off
|
||||
jigaboo
|
||||
jiggaboo
|
||||
jiggerboo
|
||||
jizz
|
||||
juggs
|
||||
kike
|
||||
kinbaku
|
||||
kinkster
|
||||
kinky
|
||||
knobbing
|
||||
leather restraint
|
||||
leather straight jacket
|
||||
lemon party
|
||||
livesex
|
||||
lolita
|
||||
lovemaking
|
||||
make me come
|
||||
male squirting
|
||||
masturbate
|
||||
masturbating
|
||||
masturbation
|
||||
menage a trois
|
||||
milf
|
||||
missionary position
|
||||
mong
|
||||
motherfucker
|
||||
mound of venus
|
||||
mr hands
|
||||
muff diver
|
||||
muffdiving
|
||||
nambla
|
||||
nawashi
|
||||
negro
|
||||
neonazi
|
||||
nigga
|
||||
nigger
|
||||
nig nog
|
||||
nimphomania
|
||||
nipple
|
||||
nipples
|
||||
nsfw
|
||||
nsfw images
|
||||
nude
|
||||
nudity
|
||||
nutten
|
||||
nympho
|
||||
nymphomania
|
||||
octopussy
|
||||
omorashi
|
||||
one cup two girls
|
||||
one guy one jar
|
||||
orgasm
|
||||
orgy
|
||||
paedophile
|
||||
paki
|
||||
panties
|
||||
panty
|
||||
pedobear
|
||||
pedophile
|
||||
pegging
|
||||
penis
|
||||
phone sex
|
||||
piece of shit
|
||||
pikey
|
||||
pissing
|
||||
piss pig
|
||||
pisspig
|
||||
playboy
|
||||
pleasure chest
|
||||
pole smoker
|
||||
ponyplay
|
||||
poof
|
||||
poon
|
||||
poontang
|
||||
punany
|
||||
poop chute
|
||||
poopchute
|
||||
porn
|
||||
porno
|
||||
pornography
|
||||
prince albert piercing
|
||||
pthc
|
||||
pubes
|
||||
pussy
|
||||
queaf
|
||||
queef
|
||||
quim
|
||||
raghead
|
||||
raging boner
|
||||
rape
|
||||
raping
|
||||
rapist
|
||||
rectum
|
||||
reverse cowgirl
|
||||
rimjob
|
||||
rimming
|
||||
rosy palm
|
||||
rosy palm and her 5 sisters
|
||||
rusty trombone
|
||||
sadism
|
||||
santorum
|
||||
scat
|
||||
schlong
|
||||
scissoring
|
||||
semen
|
||||
sex
|
||||
sexcam
|
||||
sexo
|
||||
sexy
|
||||
sexual
|
||||
sexually
|
||||
sexuality
|
||||
shaved beaver
|
||||
shaved pussy
|
||||
shemale
|
||||
shibari
|
||||
shit
|
||||
shitblimp
|
||||
shitty
|
||||
shota
|
||||
shrimping
|
||||
skeet
|
||||
slanteye
|
||||
slut
|
||||
s&m
|
||||
smut
|
||||
snatch
|
||||
snowballing
|
||||
sodomize
|
||||
sodomy
|
||||
spastic
|
||||
spic
|
||||
splooge
|
||||
splooge moose
|
||||
spooge
|
||||
spread legs
|
||||
spunk
|
||||
strap on
|
||||
strapon
|
||||
strappado
|
||||
strip club
|
||||
style doggy
|
||||
suck
|
||||
sucks
|
||||
suicide girls
|
||||
sultry women
|
||||
swastika
|
||||
swinger
|
||||
tainted love
|
||||
taste my
|
||||
tea bagging
|
||||
threesome
|
||||
throating
|
||||
thumbzilla
|
||||
tied up
|
||||
tight white
|
||||
tit
|
||||
tits
|
||||
titties
|
||||
titty
|
||||
tongue in a
|
||||
topless
|
||||
tosser
|
||||
towelhead
|
||||
tranny
|
||||
tribadism
|
||||
tub girl
|
||||
tubgirl
|
||||
tushy
|
||||
twat
|
||||
twink
|
||||
twinkie
|
||||
two girls one cup
|
||||
undressing
|
||||
upskirt
|
||||
urethra play
|
||||
urophilia
|
||||
vagina
|
||||
venus mound
|
||||
viagra
|
||||
vibrator
|
||||
violet wand
|
||||
vorarephilia
|
||||
voyeur
|
||||
voyeurweb
|
||||
voyuer
|
||||
vulva
|
||||
wank
|
||||
wetback
|
||||
wet dream
|
||||
white power
|
||||
whore
|
||||
worldsex
|
||||
wrapping men
|
||||
wrinkled starfish
|
||||
xx
|
||||
xxx
|
||||
yaoi
|
||||
yellow showers
|
||||
yiffy
|
||||
zoophilia
|
||||
🖕
|
||||
analritter
|
||||
arsch
|
||||
arschficker
|
||||
arschlecker
|
||||
arschloch
|
||||
bimbo
|
||||
bratze
|
||||
bumsen
|
||||
bonze
|
||||
dödel
|
||||
fick
|
||||
ficken
|
||||
flittchen
|
||||
fotze
|
||||
fratze
|
||||
hackfresse
|
||||
hure
|
||||
hurensohn
|
||||
ische
|
||||
kackbratze
|
||||
kacke
|
||||
kacken
|
||||
kackwurst
|
||||
kampflesbe
|
||||
kanake
|
||||
kimme
|
||||
lümmel
|
||||
MILF
|
||||
möpse
|
||||
morgenlatte
|
||||
möse
|
||||
mufti
|
||||
muschi
|
||||
nackt
|
||||
neger
|
||||
nigger
|
||||
nippel
|
||||
nutte
|
||||
onanieren
|
||||
orgasmus
|
||||
penis
|
||||
pimmel
|
||||
pimpern
|
||||
pinkeln
|
||||
pissen
|
||||
pisser
|
||||
popel
|
||||
poppen
|
||||
porno
|
||||
reudig
|
||||
rosette
|
||||
schabracke
|
||||
schlampe
|
||||
scheiße
|
||||
scheisser
|
||||
schiesser
|
||||
schnackeln
|
||||
schwanzlutscher
|
||||
schwuchtel
|
||||
tittchen
|
||||
titten
|
||||
vögeln
|
||||
vollpfosten
|
||||
wichse
|
||||
wichsen
|
||||
wichser
|
130
bad/create.sh
130
bad/create.sh
@@ -1,130 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Fetch and merge text and JSON files from URLs
|
||||
# Usage: ./create.sh [output_file]
|
||||
|
||||
OUTPUT_FILE="${1:-merged_output.txt}"
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
FINAL_TEMP="$TEMP_DIR/combined.txt"
|
||||
|
||||
# Color codes for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# =============================================================================
|
||||
# CONFIGURE YOUR URLS AND COMMENTS HERE
|
||||
# =============================================================================
|
||||
|
||||
URLS_AND_COMMENTS=(
|
||||
"https://raw.githubusercontent.com/dsojevic/profanity-list/refs/heads/main/en.txt"
|
||||
"https://raw.githubusercontent.com/dsojevic/profanity-list/refs/heads/main/emoji.txt"
|
||||
"https://raw.githubusercontent.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words/refs/heads/master/de"
|
||||
"https://raw.githubusercontent.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words/refs/heads/master/en"
|
||||
"https://raw.githubusercontent.com/zacanger/profane-words/refs/heads/master/words.json"
|
||||
)
|
||||
|
||||
# =============================================================================
|
||||
|
||||
# Check if jq is available for JSON processing
|
||||
if ! command -v jq &> /dev/null; then
|
||||
echo -e "${YELLOW}Warning: jq not found. JSON files will be skipped.${NC}"
|
||||
echo -e "${YELLOW}Install jq with: apt-get install jq (Ubuntu/Debian) or brew install jq (macOS)${NC}"
|
||||
HAS_JQ=false
|
||||
else
|
||||
HAS_JQ=true
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}Text/JSON File Merger${NC}"
|
||||
echo "Processing $(echo "${URLS_AND_COMMENTS[@]}" | grep -c 'https://' || true) URLs..."
|
||||
|
||||
# Process URLs and comments
|
||||
for line in "${URLS_AND_COMMENTS[@]}"; do
|
||||
# Handle comments
|
||||
if [[ "$line" =~ ^[[:space:]]*# ]]; then
|
||||
echo "$line" >> "$FINAL_TEMP"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Skip lines that don't look like URLs
|
||||
if [[ ! "$line" =~ ^https?:// ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}Fetching: $line${NC}"
|
||||
|
||||
# Create temporary file for this URL
|
||||
URL_TEMP="$TEMP_DIR/url_content.tmp"
|
||||
|
||||
# Fetch the URL
|
||||
if curl -s -f "$line" -o "$URL_TEMP" 2>/dev/null; then
|
||||
echo -e "${GREEN}✓ Successfully fetched${NC}"
|
||||
|
||||
# Check if the content is JSON
|
||||
if [ "$HAS_JQ" = true ] && jq empty "$URL_TEMP" 2>/dev/null; then
|
||||
echo -e "${BLUE} → Detected JSON format, extracting strings...${NC}"
|
||||
|
||||
# Try to extract strings from JSON array or object
|
||||
# Handle different JSON structures
|
||||
if jq -e 'type == "array"' "$URL_TEMP" >/dev/null 2>&1; then
|
||||
# JSON array - extract all string values
|
||||
jq -r '.[] | select(type == "string")' "$URL_TEMP" >> "$FINAL_TEMP" 2>/dev/null || {
|
||||
echo -e "${RED} ✗ Failed to parse JSON array${NC}"
|
||||
echo "# ERROR: Could not parse JSON from $line" >> "$FINAL_TEMP"
|
||||
}
|
||||
elif jq -e 'type == "object"' "$URL_TEMP" >/dev/null 2>&1; then
|
||||
# JSON object - extract all string values
|
||||
jq -r 'recurse | select(type == "string")' "$URL_TEMP" >> "$FINAL_TEMP" 2>/dev/null || {
|
||||
echo -e "${RED} ✗ Failed to parse JSON object${NC}"
|
||||
echo "# ERROR: Could not parse JSON from $line" >> "$FINAL_TEMP"
|
||||
}
|
||||
else
|
||||
echo -e "${RED} ✗ Unsupported JSON structure${NC}"
|
||||
echo "# ERROR: Unsupported JSON structure from $line" >> "$FINAL_TEMP"
|
||||
fi
|
||||
else
|
||||
# Regular text file - append as-is
|
||||
echo -e "${BLUE} → Processing as text file...${NC}"
|
||||
cat "$URL_TEMP" >> "$FINAL_TEMP"
|
||||
fi
|
||||
|
||||
# Clean up URL temp file
|
||||
rm -f "$URL_TEMP"
|
||||
else
|
||||
echo -e "${RED}✗ Failed to fetch: $line${NC}"
|
||||
echo "# ERROR: Could not fetch $line" >> "$FINAL_TEMP"
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if we have any content
|
||||
if [ ! -s "$FINAL_TEMP" ]; then
|
||||
echo -e "${RED}No content to process${NC}"
|
||||
rm -rf "$TEMP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}Processing content...${NC}"
|
||||
|
||||
# Remove duplicates, sort alphabetically, and save to output file
|
||||
# Keep comments at the top, sort the rest
|
||||
{
|
||||
grep '^#' "$FINAL_TEMP" 2>/dev/null || true
|
||||
grep -v '^#' "$FINAL_TEMP" 2>/dev/null | grep -v '^[[:space:]]*$' | sort -u
|
||||
} > "$OUTPUT_FILE"
|
||||
|
||||
# Cleanup
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
# Show results
|
||||
line_count=$(wc -l < "$OUTPUT_FILE")
|
||||
echo -e "${GREEN}✓ Complete! Merged content saved to: $OUTPUT_FILE${NC}"
|
||||
echo -e "${GREEN}Total lines: $line_count${NC}"
|
||||
|
||||
# Show a preview of the content
|
||||
if [ -s "$OUTPUT_FILE" ]; then
|
||||
echo -e "${YELLOW}Preview (first 10 non-comment lines):${NC}"
|
||||
grep -v '^#' "$OUTPUT_FILE" | head -10
|
||||
fi
|
||||
|
File diff suppressed because it is too large
Load Diff
7020
bad/test-common-names.txt
Normal file
7020
bad/test-common-names.txt
Normal file
File diff suppressed because it is too large
Load Diff
37
src/main.rs
37
src/main.rs
@@ -82,7 +82,7 @@ pub(crate) enum NameUpdateError {
|
||||
}
|
||||
|
||||
static BAD_WORDS: LazyLock<HashSet<String>> = LazyLock::new(|| {
|
||||
const BAD_WORDS_FILE: &str = include_str!("../bad/merged_output.txt");
|
||||
const BAD_WORDS_FILE: &str = include_str!("../bad/bad-list.txt");
|
||||
|
||||
BAD_WORDS_FILE
|
||||
.lines()
|
||||
@@ -94,9 +94,42 @@ static BAD_WORDS: LazyLock<HashSet<String>> = LazyLock::new(|| {
|
||||
fn contains_bad_word(text: &str) -> bool {
|
||||
let cleaned_text: String = text.to_lowercase();
|
||||
|
||||
for (idx, a) in BAD_WORDS.iter().enumerate() {
|
||||
if cleaned_text.trim() == a {
|
||||
println!("Text contains {a} on line {idx}");
|
||||
}
|
||||
}
|
||||
|
||||
BAD_WORDS
|
||||
.iter()
|
||||
.any(|bad_word| cleaned_text.contains(bad_word))
|
||||
.any(|bad_word| cleaned_text.trim() == bad_word)
|
||||
}
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::contains_bad_word;
|
||||
use std::fs;
|
||||
|
||||
#[test]
|
||||
fn test_whitelist_words_are_not_flagged() {
|
||||
let whitelist_content =
|
||||
fs::read_to_string("bad/test-common-names.txt").expect("Failed to read file");
|
||||
|
||||
for (line_number, line) in whitelist_content.lines().enumerate() {
|
||||
let word = line.trim();
|
||||
|
||||
// Skip empty lines
|
||||
if word.is_empty() {
|
||||
continue;
|
||||
}
|
||||
|
||||
assert!(
|
||||
!contains_bad_word(word),
|
||||
"Word '{}' on line {} should not be flagged as bad but was detected",
|
||||
word,
|
||||
line_number + 1
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Backend {
|
||||
|
Reference in New Issue
Block a user