From 3266ac5d2b2afaa74a6cb3ebfe0dae57da1be4cf Mon Sep 17 00:00:00 2001 From: Chaska <166928710+chaskayote@users.noreply.github.com> Date: Sat, 27 Apr 2024 13:30:32 -0500 Subject: [PATCH] strip blacklist tags on post upload Normally it would error out and instead it will just strip the tags out without informing the user. --- config/tag.json | 2423 ++++++++++++++++- lib/philomena/images/image.ex | 2 +- lib/philomena/images/tag_validator.ex | 28 +- .../templates/tag/_tag_info_row.html.slime | 6 +- 4 files changed, 2435 insertions(+), 24 deletions(-) diff --git a/config/tag.json b/config/tag.json index 3229f3a9..c3461db2 100644 --- a/config/tag.json +++ b/config/tag.json @@ -14,8 +14,2427 @@ "tag needed", "paywall", "cringeworthy", - "cringe", "solo oc", - "tag your shit" + "tag your shit", + ">_>", + "<_<", + "v_v", + "1 eye", + "2 ears", + "2 fingers", + "2 horns", + "2 penises", + "2 tails", + "3 eyes", + "4 arms", + "4 breasts", + "4 ears", + "4 wings", + "6 breasts", + "6 ears", + ":>", + ":<", + ":3", + ":d", + ":o", + "? face", + "?!", + "after anal", + "after oral", + "after rape", + "after vaginal", + "ahoge", + "all three filled", + "almost fully inside", + "aloha shirt", + "alternate breast size", + "alternate color", + "alternate costume", + "alternate form", + "alternate hairstyle", + "alternate pride colors", + "alternate rainbow pride colors", + "alternate species", + "alternate universe", + "alternative fashion", + "ambient silhouette", + "ambiguous fluids", + "ambiguous form", + "ambiguous on human", + "ambiguous on top", + "ambiguous penetrated", + "ambiguous penetrating", + "ambiguous penetrating ambiguous", + "ambiguous penetrating anthro", + "ambiguous penetrating female", + "ambiguous penetrating feral", + "ambiguous penetrating gynomorph", + "ambiguous penetrating herm", + "ambiguous penetrating human", + "ambiguous penetrating intersex", + "ambiguous penetrating male", + "ambiguous penetration", + "ambiguous pred", + "ambiguous prey", + "anal beads in ass", + "anal juice", + "anal knotting", + "anal masturbation", + "anal orgasm", + "anatomically correct", + "anatomically correct anus", + "anatomically correct genitalia", + "ancestor penetrating descendant", + "andromorph", + "andromorph on top", + "andromorph penetrated", + "andromorph penetrating", + "andromorph penetrating andromorph", + "andromorph penetrating female", + "andromorph penetrating intersex", + "andromorph penetrating male", + "andromorph/male", + "angry eyebrows", + "animal ears", + "animal print", + "anime nosebleed", + "anisodactyl", + "ankle markings", + "ankle tuft", + "announcing orgasm", + "antennae markings", + "anthro focus", + "anthro on top", + "anthro penetrated", + "anthro penetrating", + "anthro penetrating ambiguous", + "anthro penetrating andromorph", + "anthro penetrating anthro", + "anthro penetrating female", + "anthro penetrating feral", + "anthro penetrating gynomorph", + "anthro penetrating herm", + "anthro penetrating human", + "anthro penetrating humanoid", + "anthro penetrating intersex", + "anthro penetrating male", + "anthro penetrating maleherm", + "anthro penetrating taur", + "anthro pred", + "anthro prey", + "anthropod webbing", + "anus lick", + "anus only", + "apode", + "areola slip", + "arm markings", + "arm pull", + "arm support", + "arm tuft", + "arm under breasts", + "armless", + "armpit fetish", + "arms bent", + "aroused face", + "arthropod abdomen genitalia", + "asking", + "ass on glass", + "ass up", + "assisted exposure", + "asymmetrical ears", + "athletic anthro", + "athletic female", + "athletic gynomorph", + "athletic intersex", + "athletic male", + "athropod abdomen", + "attack", + "audible creampie", + "aunt penetrating niece", + "auto penis lick", + "autofellatio while penetrated", + "autopenetration", + "autotitfuck", + "avian butt", + "avian feet", + "baby penetrated", + "baby penetrating", + "back boob", + "back groove", + "back markings", + "back wings", + "backless topwear", + "backlighting", + "backsack", + "backwards baseball cap", + "bad parenting", + "ball markings", + "ball penetrating", + "ball size difference", + "ball tuft", + "balls in underwear", + "balls outline", + "band-aid on face", + "bandage on face", + "bandeau", + "bar", + "bar emanata", + "barazoku", + "barbel (anatomy)", + "bare breasts", + "bare chest", + "barely contained", + "barely visible anus", + "barely visible areola", + "barely visible balls", + "barely visible genitalia", + "barely visible penis", + "barely visible pussy", + "base five layout", + "base four layout", + "base one layout", + "base six layout", + "base three layout", + "base two layout", + "basic sequence", + "bat ears", + "bat wings", + "beak fetish", + "becoming erect while penetrating", + "belly blush", + "belly markings", + "belly overhang", + "belly rub", + "belly scales", + "belly squish", + "bent arm", + "bent leg", + "between breasts", + "between toes", + "big anus", + "big areola", + "big biceps", + "big diaper", + "big dildo", + "big eyes", + "big feet", + "big hands", + "big head", + "big pecs", + "big pussy", + "big tail", + "big teats", + "big wings", + "bioluminescence", + "biped", + "bird’s-eye view", + "black and white fur", + "black anus", + "black areola", + "black armwear", + "black balls", + "black beak", + "black bikini", + "black border", + "black bottomwear", + "black choker", + "black claws", + "black clothing", + "black collar", + "black ears", + "black eyebrows", + "black face", + "black feathers", + "black footwear", + "black glans", + "black gloves", + "black handwear", + "black headwear", + "black hoodie", + "black hooves", + "black horn", + "black inner ear", + "black lips", + "black mane", + "black markings", + "black muscles", + "black nipples", + "black panties", + "black pawpaws", + "black sclera", + "black shoes", + "black skin", + "black socks", + "black spots", + "black stripes", + "black tail", + "black text", + "black text border", + "black thigh highs", + "black tipped ears", + "black tongue", + "black topwear", + "black wings", + "blockage (layout)", + "blonde eyebrows", + "blonde mane", + "blue anus", + "blue areola", + "blue armwear", + "blue balls", + "blue beak", + "blue border", + "blue bottomwear", + "blue claws", + "blue clothing", + "blue collar", + "blue ears", + "blue eyebrows", + "blue face", + "blue feathers", + "blue glans", + "blue headwear", + "blue highlights", + "blue horn", + "blue inner ear", + "blue insides", + "blue mane", + "blue markings", + "blue nipples", + "blue pupils", + "blue sclera", + "blue seam bottomwear", + "blue spots", + "blue stripes", + "blue swimwear", + "blue topwear", + "blue underwear", + "blue wings", + "blush lines", + "blush stickers", + "blushing profusel", + "bodily fluids", + "bodily noises", + "body blush", + "body part in ass", + "body part in mouth", + "body part in pussy", + "body size growth", + "bone frill", + "boob hat", + "boots only", + "border", + "borderless layout", + "bottomless female", + "bottomless gynomorph", + "bottomless intersex", + "bottomless male", + "bottomwear", + "bottomwear down", + "bouncing balls", + "bouncing breasts", + "bouncing butt", + "bouncing ears", + "bovine ears", + "bow (feature)", + "bow accessory", + "bow bottomwear", + "bow headwear", + "bow in front", + "bow ribbon", + "bow topwear", + "breast expansion", + "breast jiggle", + "breast lick", + "breast markings", + "breast rest", + "breast size difference", + "breasts and teats", + "breasts on glass", + "breath", + "breath powers", + "breathing noises", + "brick wall", + "briefs only", + "broken horn", + "brother penetrating", + "brother penetrating brother", + "brother penetrating sister", + "brown areola", + "brown armwear", + "brown backpack", + "brown balls", + "brown beak", + "brown border", + "brown bottomwear", + "brown claws", + "brown clothing", + "brown ears", + "brown eyebrows", + "brown face", + "brown headwear", + "brown horn", + "brown inner ear", + "brown mane", + "brown markings", + "brown nipples", + "brown pawpads", + "brown shoes", + "brown skin", + "brown spots", + "brown stripes", + "brown topwear", + "brown wings", + "bubble butt", + "building penetrated", + "bulge in face", + "bulging breasts", + "busty feral", + "butt blush", + "butt cleavage", + "butt from the front", + "butt heart", + "butt jiggle", + "butt markings", + "butt wings", + "button ears", + "calves up", + "camo bottomwear", + "camo topwear", + "canine ears", + "canon couple", + "caressing face", + "carpet", + "casual exposure", + "centered hair bow", + "cervical contact", + "cetacean penis", + "chain leash", + "chastity cage only", + "chastity device only", + "checkered bottomwear", + "checkered topwear", + "cheek markings", + "chest fur", + "chest markings", + "child penetrated", + "child penetrating", + "chin tuft", + "christmas bottomwear", + "christmas clothing", + "christmas headwear", + "christmas topwear", + "chromatic aberration", + "chubby cheeks", + "circle eyebrow", + "circle eyebrows", + "circlet", + "circuit markings", + "cleavage cutout", + "cleavage overflow", + "clitoral", + "clitoral fingering", + "clitoral hood", + "clitoral winking", + "cloaca juice", + "closed smile", + "clothed anthro", + "clothed breasts", + "clothed female", + "clothed female nude female", + "clothed female nude gynomorph", + "clothed female nude intersex", + "clothed female nude male", + "clothed feral", + "clothed gynomorph", + "clothed gynomorph nude gynomorph", + "clothed gynomorph nude intersex", + "clothed human", + "clothed human nude anthro", + "clothed humanoid", + "clothed intersex", + "clothed intersex nude gynomorph", + "clothed intersex nude intersex", + "clothed intersex nude male", + "clothed male", + "clothed male nude female", + "clothed male nude gynomorph", + "clothed male nude intersex", + "clothed male nude male", + "clothed masturbation", + "clothed taur", + "clothed to nude", + "clothing lift", + "cloud emanata", + "coat markings", + "collar tag", + "collarbone", + "collared shirt", + "color coded", + "color coded text", + "color swatch", + "colored blood", + "colored claws", + "colored cum", + "colored edge bikini", + "colored edge bra", + "colored edge panties", + "colored edge underwear", + "colored eyes", + "colored feces", + "colored fingernails", + "colored fire", + "colored flesh", + "colored fur", + "colored lactation", + "colored nails", + "colored pencil", + "colored pussy juice", + "colored saliva", + "colored sclera", + "colored seam briefs", + "colored seam underwear", + "colored skin", + "colored toenails", + "colored-in", + "command", + "commercial vehicle", + "complex markings", + "conjoined speech bubble", + "consentacles", + "consistent pov", + "constellation markings", + "contact onomatopoeia", + "copyright symbol", + "cosmic hair", + "cosmic wings", + "counter", + "countershade arms", + "countershade balls", + "countershade belly", + "countershade body", + "countershade border", + "countershade breasts", + "countershade butt", + "countershade crotch", + "countershade ears", + "countershade face", + "countershade feathers", + "countershade feet", + "countershade fingers", + "countershade fur", + "countershade genitalia", + "countershade hands", + "countershade head", + "countershade legs", + "countershade neck", + "countershade penis", + "countershade perineum", + "countershade pussy", + "countershade scales", + "countershade skin", + "countershade snout", + "countershade tail", + "countershade thighs", + "countershade torso", + "countershade wings", + "countertrade face", + "cousin penetrating cousin", + "covering", + "covering ears", + "covering self", + "cow ears", + "cow print", + "cow print armwear", + "creepy", + "cropped ears", + "cropped topwear", + "cross-popping vein", + "crossgender", + "crossover cosplay", + "crotch breasts", + "crotch lines", + "crotch markings", + "crotch tuft", + "crotchless bottomwear", + "cum between breasts", + "cum everywhere", + "cum expulsion", + "cum from ass", + "cum from mouth", + "cum from nose", + "cum from pussy", + "cum in a cup", + "cum in clothing", + "cum in container", + "cum in uterus", + "cum on beak", + "cum on bed", + "cum on bottomwear", + "cum on ground", + "cum on own face", + "cum on partner", + "cum on perineum", + "cum on topwear", + "cum on wings", + "cum overflow", + "cum pool", + "cum splatter", + "cum while penetrated", + "cumming while penetrating", + "cumshot on face", + "curled hair", + "curled horn", + "curved eyebrows", + "curved horn", + "curvy figure", + "cutaway", + "cute fangs", + "cutlery", + "cutout", + "cyan inner ear", + "dairy products", + "dark", + "dark areola", + "dark body", + "dark border", + "dark bottomwear", + "dark ears", + "dark eyebrows", + "dark face", + "dark fur", + "dark hair", + "dark headwear", + "dark inner ear", + "dark markings", + "dark nose", + "dark skin", + "dark topwear", + "darkened balls", + "darkened genitalia", + "darkened inner ear", + "darkened penis", + "daughter penetrating mother", + "daww", + "deep cleavage", + "deep cunnilingus", + "deep fisting", + "deep fossa", + "deep kiss", + "deep navel", + "deep penetration", + "deep rimming", + "deep skin", + "deep tongue", + "defeated", + "delivery (commerce)", + "deltoids", + "denim bottomwear", + "denim topwear", + "depth of field", + "derp eyes", + "detached eyebrows", + "detached sleeves", + "detailed anus", + "dewlap (anatomy)", + "dialogue box", + "diaper fetish", + "diaper only", + "different sound effects", + "digiphilia", + "digit ring", + "digitigrade", + "dildo in ass", + "dildo in mouth", + "dildo in penis", + "dildo in pussy", + "dildo insertion", + "dildo penetrating", + "dildo penetrating anthro", + "dildo penetrating male", + "diphallism", + "dipstick antennae", + "dipstick beak", + "dipstick ears", + "directional arrow", + "dirty bottomwear", + "dirty feet", + "discarded bottomwear", + "discarded bra", + "discarded object", + "discarded panties", + "discarded sex toy", + "discarded topwear", + "discarded underwear", + "dock (anatomy)", + "dog ears", + "dolphin shorts", + "dominant anthro", + "dominant feral", + "dominant gynomorph", + "dominant human", + "dominant intersex", + "dominant pov", + "doorframe", + "dot eyes", + "double v sign", + "dragon wings", + "drawstring bottomwear", + "drawstring topwear", + "drip effect", + "drunk bubble", + "dual holding", + "dutch angle", + "ear fins", + "ear markings", + "ear penetrating", + "ear penetration", + "ear tuft", + "ears through headwear", + "eight frame image", + "elbow gloves", + "elbow tuft", + "elderly female", + "elderly male", + "electricity", + "electronics", + "elemental manipulation", + "ellipsis", + "emanata", + "emo", + "emoji", + "empty eyes", + "enlarged clitoris", + "equine ears", + "erect nipples", + "erection under bottomwear", + "erection while penetrated", + "ethereal hair", + "evil face", + "evolutionary family", + "excessive genital fluids", + "exclamation point", + "expansion", + "expansion while penetrating", + "explicitly stated nonconsent", + "exposed", + "exposed breasts", + "exposure variation", + "extended sound effect", + "extreme french kiss", + "extreme penetration", + "extreme size difference", + "eye markings", + "eye through hair", + "eyebrow through hair", + "eyeless", + "eyewear on head", + "eyewear only", + "face to face", + "faceless ambiguous", + "faceless anthro", + "faceless female", + "faceless human", + "facial markings", + "facial scar", + "facial spikes", + "facial tuft", + "fake cat ears", + "fake cow ears", + "fake dog ears", + "fake ears", + "fake wings", + "fart fetish", + "farting on face", + "farting while penetrated", + "father penetrating", + "father penetrating child", + "father penetrating daughter", + "father penetrating son", + "feather hands", + "feather markings", + "feather tuft", + "feathered ears", + "featureless breasts", + "featureless face", + "featureless feet", + "featureless hands", + "feces on face", + "feet first", + "feet together", + "feline ears", + "fellatio while penetrated", + "fellatio while penetrating", + "female anthro", + "female feral", + "female humanoid", + "female on anthro", + "female on bottom", + "female on human", + "female on humanoid", + "female on top", + "female peeing", + "female penetrated", + "female penetrating", + "female penetrating ambiguous", + "female penetrating andromorph", + "female penetrating anthro", + "female penetrating female", + "female penetrating feral", + "female penetrating gynomorph", + "female penetrating herm", + "female penetrating human", + "female penetrating humanoid", + "female penetrating intersex", + "female penetrating male", + "female penetrating maleherm", + "female pov", + "female pred", + "female rape", + "female rimming male", + "female symbol", + "feral focus", + "feral on top", + "feral penetrated", + "feral penetrating", + "feral penetrating ambiguous", + "feral penetrating andromorph", + "feral penetrating anthro", + "feral penetrating female", + "feral penetrating feral", + "feral penetrating gynomorph", + "feral penetrating herm", + "feral penetrating human", + "feral penetrating humanoid", + "feral penetrating intersex", + "feral penetrating male", + "feral penetrating taur", + "feral pred", + "feral prey", + "fetlocks", + "ffm", + "ffm threesome", + "fin", + "finger fetish", + "finger markings", + "finger ring", + "fingering while penetrating", + "fingerless (marking)", + "fingerless armwear", + "fingerless elbow gloves", + "fire manipulation", + "fishnet armwear", + "fishnet bottomwear", + "fishnet topwear", + "five frame image", + "five frame sequence", + "five row layout", + "flag topwear", + "flame markings", + "flaming eyebrows", + "flaming wings", + "flashing breasts", + "flesh tunnel", + "flexing bicep", + "floating eyebrows", + "floating hands", + "floating wings", + "floor", + "floral bottomwear", + "floral markings", + "floral topwear", + "fluffy chest", + "fluffy eyebrows", + "fluffy hair", + "flying sweatdrops", + "folded", + "folded ears", + "folded wings", + "food insertion", + "foot grab", + "foot markings", + "footjob while penetrating", + "footwear only", + "footwear without bottomwear", + "for a head", + "forced oral", + "forehead gem", + "forehead markings", + "foreshortening", + "four frame grid", + "four frame image", + "four frame sequence", + "four frame staggered grid", + "four row layout", + "foursome", + "fox ears", + "fox tail", + "framed by legs", + "framed picture", + "freckled ears", + "free flow layout", + "frenum ladder", + "frill (anatomy)", + "frilly", + "frilly bottomwear", + "frilly topwear", + "frogtied", + "front view", + "frown eyebrows", + "ftg crossgender", + "fti crossgender", + "ftm crossgender", + "fucked silly", + "fully bound", + "fupa", + "fur growth", + "fur markings", + "fur tuft", + "furgonomic bottomwear", + "furgonomic headwear", + "furgonomic topwear", + "furred wings", + "furrowed eyebrows", + "furry ears", + "furry-specific piercing", + "gameplay mechanics", + "gaming while penetrated", + "gaming while penetrating", + "gears", + "gem", + "gender symbol", + "genital expansion", + "genital fluids", + "genital focus", + "genital markings", + "genital outline", + "genital piercing", + "geometric background", + "giga", + "gills", + "glare", + "glass surface", + "glasses only", + "glistening areola", + "glistening armwear", + "glistening balls", + "glistening bottomwear", + "glistening breasts", + "glistening butt", + "glistening clothing", + "glistening ears", + "glistening eyes", + "glistening face", + "glistening hair", + "glistening nose", + "glistening penis", + "glistening skin", + "glistening topwear", + "glorp", + "gloves (markings)", + "gloves only", + "glowing areola", + "glowing ears", + "glowing eyebrows", + "glowing genitalia", + "glowing inner ear", + "glowing markings", + "goat ears", + "goggles on headwear", + "gold (metal)", + "gold inner ear", + "gold jewelry", + "gold markings", + "gold topwear", + "goo-connected lips", + "good boy", + "good girl", + "grabbing both ears", + "grabbing both legs", + "grabbing both thighs", + "gradient ears", + "gradient hair", + "gradient inner ear", + "gradient markings", + "grandfather penetrating grandson", + "grandson penetrating grandfather", + "grandson penetrating grandmother", + "greaves", + "green anus", + "green areola", + "green armwear", + "green balls", + "green border", + "green bottomwear", + "green claws", + "green ears", + "green eyebrows", + "green face", + "green facial markings", + "green feathers", + "green headwear", + "green inner ear", + "green markings", + "green nipples", + "green nose", + "green pawpads", + "green sclera", + "green skin", + "green tail", + "green tongue", + "green topwear", + "green underwear", + "green wings", + "grene bottomwear", + "grey areola", + "grey armwear", + "grey balls", + "grey beak", + "grey border", + "grey bottomwear", + "grey claws", + "grey countershading", + "grey ears", + "grey eyebrows", + "grey face", + "grey headwear", + "grey horn", + "grey inner ear", + "grey markings", + "grey nipples", + "grey nose", + "grey pawpads", + "grey penis", + "grey topwear", + "grey wings", + "grid layout", + "group masturbation", + "growth", + "grunting", + "gui", + "gym bottomwear", + "gym topwear", + "gynomorph", + "gynomorph on bottom", + "gynomorph on top", + "gynomorph penetrated", + "gynomorph penetrating", + "gynomorph penetrating ambiguous", + "gynomorph penetrating andromorph", + "gynomorph penetrating anthro", + "gynomorph penetrating female", + "gynomorph penetrating feral", + "gynomorph penetrating gynomorph", + "gynomorph penetrating herm", + "gynomorph penetrating human", + "gynomorph penetrating humanoid", + "gynomorph penetrating intersex", + "gynomorph penetrating male", + "gynomorph penetrating maleherm", + "gynomorph/female", + "gynomorph/gynomorph", + "gynomorph/herm", + "gynomorph/male", + "hair between eyes", + "hand behind back", + "hand gesture", + "hand in pocket", + "hand markings", + "hand on arm", + "hand on back", + "hand on belly", + "hand on cheek", + "hand on chest", + "hand on ears", + "hand on face", + "hand on head", + "hand on hindpaw", + "hand on knee", + "hand on leg", + "hand on own belly", + "hand on own breast", + "hand on own butt", + "hand on own face", + "hand on own leg", + "hand on own thigh", + "hand on penis", + "hand on shoulder", + "hand on thigh", + "handjob while penetrated", + "handjob while penetrating", + "hands above head", + "hands free penetrating", + "hands in both pockets", + "hands on ears", + "hands on hips", + "hands on legs", + "hands on own legs", + "hands on thighs", + "hands together", + "hanging breasts", + "happy sex", + "hat only", + "head crest", + "head fin", + "head first", + "head grab", + "head horn", + "head markings", + "head out of frame", + "head tuft", + "head wings", + "headgear", + "headgear only", + "headwear", + "headwear only", + "heart after text", + "heart areola", + "heart bottomwear", + "heart censor", + "heart clothing", + "heart eyebrows", + "heart print", + "heart reaction", + "heart topwear", + "hemipenes", + "herm", + "herm on top", + "herm penetrated", + "herm penetrating", + "herm penetrating ambiguous", + "herm penetrating andromorph", + "herm penetrating anthro", + "herm penetrating female", + "herm penetrating gynomorph", + "herm penetrating herm", + "herm penetrating human", + "herm penetrating intersex", + "herm penetrating male", + "herm penetrating maleherm", + "herm/female", + "herm/male", + "hetero penetrating gay", + "high waisted bottomwear", + "high-angle view", + "highleg bottomwear", + "highlights (coloring)", + "hindpaw", + "hip markings", + "holding arm", + "holding belly", + "holding beverage", + "holding book", + "holding both ears", + "holding bottle", + "holding bottomwear", + "holding breast", + "holding butt", + "holding cellphone", + "holding character", + "holding clothing", + "holding container", + "holding controller", + "holding cup", + "holding face", + "holding food", + "holding game controller", + "holding gun", + "holding head", + "holding headwear", + "holding leg", + "holding object", + "holding pen", + "holding penis", + "holding phone", + "holding sex toy", + "holding tool", + "holding topwear", + "holding underwear", + "holding weapon", + "hole (anatomy)", + "hood", + "hoodie only", + "hook hand", + "horizontal blockage", + "horizontal diphallism", + "horizontal staggering", + "horn grab", + "horn markings", + "horn ring", + "horse ears", + "hourglass figure", + "huge anus", + "huge areola", + "huge belly", + "huge ears", + "huge muscles", + "human and animal ears", + "human focus", + "human on hhuman", + "human on humanoid", + "human on top", + "human penetrated", + "human penetrating", + "human penetrating ambiguous", + "human penetrating andromorph", + "human penetrating anthro", + "human penetrating cub", + "human penetrating female", + "human penetrating feral", + "human penetrating gynomorph", + "human penetrating herm", + "human penetrating human", + "human penetrating humanoid", + "human penetrating intersex", + "human penetrating machine", + "human penetrating male", + "human penetrating robot", + "human penetrating taur", + "human pov", + "human prey", + "human to anthro", + "humanoid ears", + "humanoid face", + "humanoid focus", + "humanoid genitalia on feral", + "humanoid on anthro", + "humanoid on feral", + "humanoid on humanoid", + "humanoid on top", + "humanoid penetrated", + "humanoid penetrating", + "humanoid penetrating anthro", + "humanoid penetrating female", + "humanoid penetrating feral", + "humanoid penetrating gynomorph", + "humanoid penetrating human", + "humanoid penetrating humanoid", + "humanoid penetrating intersex", + "humanoid penetrating male", + "humanoid penetrating taur", + "humanoid pointy ears", + "humanoidized", + "husband penetrating wife", + "hybrid genitalia", + "hyper anus", + "hyper areola", + "hyper belly", + "hyper ears", + "hyper genitalia", + "hyper hips", + "hyper muscles", + "hyper nipples", + "hyper pregnancy", + "hyper thighs", + "iconography", + "imminent oral", + "imminent orgasm", + "imminent sex", + "imminent vore", + "immobile", + "impact onomatopoeia", + "implied transformation", + "impregnation request", + "imprint", + "inaccurate knotting", + "industrial piercing", + "ineffective bottomwear", + "ineffective censorship", + "information board", + "inner ear fluff", + "inner monologue", + "innie pussy", + "insect wings", + "insemination request", + "inside balls", + "insult", + "intelligence loss", + "internal oral", + "internal vaginal", + "intersex on bottom", + "intersex on human", + "intersex on top", + "intersex penetrated", + "intersex penetrating", + "intersex penetrating ambiguous", + "intersex penetrating andromorph", + "intersex penetrating anthro", + "intersex penetrating female", + "intersex penetrating feral", + "intersex penetrating gynomorph", + "intersex penetrating herm", + "intersex penetrating human", + "intersex penetrating humanoid", + "intersex penetrating intersex", + "intersex penetrating male", + "intersex penetrating maleherm", + "intersex/ambi", + "intimate", + "intraspecies", + "intraspecies bestiality", + "inviting", + "inward slanted eyebrows", + "iris", + "ironic fake ears", + "irregular grid layout", + "irumatio", + "it’ll never fit", + "j-fashion", + "jiggling", + "jockstrap only", + "keyhole topwear", + "kiss mark", + "kissing while penetrating", + "knee tuft", + "kneeling oral position", + "knees together", + "knock-knened", + "knot root", + "labia piercing", + "landscape dwarfing", + "large group", + "larger ambiguous", + "larger anthro", + "larger female", + "larger feral", + "larger gynomorph", + "larger human", + "larger humanoid", + "larger intersex", + "larger on top", + "larger penetrated", + "larger pred", + "larger prey", + "latex armwear", + "latex bottomwear", + "latex headwear", + "latex legwear", + "latex thigh highs", + "latex topwear", + "laying on top", + "leaf ears", + "leaf hair", + "leaf print topwear", + "leaning", + "leaning on elbow", + "leash pull", + "leashed collar", + "leather bottomwear", + "leather clothing", + "leather cuffs", + "leather headwear", + "leather topwear", + "leg grab", + "leg markings", + "leg tuft", + "legless", + "legs in water", + "legs together", + "leopard spots", + "lepidopteran wings", + "leucistic", + "lidded eyes", + "light areola", + "light body", + "light border", + "light bottomwear", + "light ears", + "light eyebrows", + "light face", + "light fur", + "light inner ear", + "light markings", + "light skin", + "light topwear", + "lightened eyebrows", + "lightened inner ear", + "linked speech bubble", + "lip ring", + "lipstick on face", + "lipstick on penis", + "living condom", + "logo", + "long claws", + "long eyebrows", + "long eyelashes", + "long neck", + "long penis", + "looking aside", + "looking at breasts", + "looking at butt", + "looking at genitalia", + "looking at object", + "looking at phone", + "looking forward", + "loose feather", + "lop ears", + "low-angle view", + "lying on top", + "machine penetrating", + "magic user", + "male anthro", + "male human", + "male on bottom", + "male on feral", + "male on human", + "male on humanoid", + "male on top", + "male peeing", + "male penetrating", + "male penetrating alien", + "male penetrating ambiguous", + "male penetrating andromorph", + "male penetrating anthro", + "male penetrating cub", + "male penetrating eunuch", + "male penetrating female", + "male penetrating feral", + "male penetrating gynomorph", + "male penetrating herm", + "male penetrating human", + "male penetrating humanoid", + "male penetrating intersex", + "male penetrating machine", + "male penetrating male", + "male penetrating maleherm", + "male penetrating null", + "male penetrating sex toy", + "male penetrating taur", + "male pov", + "male pred", + "male prey", + "male rape", + "male symbol", + "male/ambiguous", + "maleherm", + "maleherm penetrated", + "maleherm penetrating", + "maleherm penetrating andromorph", + "maleherm penetrating female", + "maleherm penetrating herm", + "maleherm penetrating intersex", + "maleherm penetrating male", + "maleherm penetrating maleherm", + "mandibles", + "manly", + "married couple", + "mascara tears", + "masturbating while penetrated", + "mature anthro", + "mature female", + "mature gynomorph", + "mature intersex", + "mature male", + "medium breasts", + "melanistic", + "melee weapon", + "membrane (anatomy)", + "membranous ears", + "membranous frill", + "membranous wings", + "menstrual pad", + "messy", + "messy hair", + "metal", + "metal collar", + "midriff", + "mismatched ears", + "mismatched genitalia", + "mismatched wings", + "monotone armwear", + "monotone beak", + "monotone bottomwear", + "monotone clothing", + "monotone face", + "monotone fur", + "monotone hair", + "monotone headwear", + "monotone inner ear", + "monotone tail", + "monotone topwear", + "monotone wings", + "monster penetrating", + "morbidly obese female", + "morbidly obese gynomorph", + "morbidly obese intersex", + "morbidly obese male", + "mother penetrating daughter", + "mother penetrating son", + "motion blur", + "motion lines", + "motion onomatopoeia", + "motion outline", + "motor vehicle", + "mottled genitalia", + "mottled penis", + "mouse ears", + "mouth hold", + "mouth shot", + "mtf crossgender", + "muffled", + "multi balls", + "multi eye", + "multi frame sequence", + "multi genitalia", + "multi horn", + "multi leg", + "multi tone ears", + "multi tone fur", + "multi tone topwear", + "multicolored armwear", + "multicolored beak", + "multicolored body", + "multicolored bottomwear", + "multicolored clothing", + "multicolored ears", + "multicolored eyebrows", + "multicolored eyes", + "multicolored face", + "multicolored feathers", + "multicolored footwear", + "multicolored fur", + "multicolored headwear", + "multicolored inner ear", + "multicolored legwear", + "multicolored mane", + "multicolored markings", + "multicolored pussy", + "multicolored scales", + "multicolored skin", + "multicolored topwear", + "multicolored wings", + "multifur", + "multiple angles", + "multiple piercings", + "multiple poses", + "multiple prey", + "muscular arms", + "muscular gynomorph", + "muscular legs", + "muscular sub", + "musical note", + "musk clouds", + "musky cock", + "mutli wing", + "mutual tail penetrating", + "muzzle (marking)", + "name drop", + "name in dialogue", + "name on topwear", + "name tag", + "narrowed eyebrows", + "natural breasts", + "nature", + "naughty face", + "navel fetish", + "navel outline", + "neck bulge", + "neck markings", + "neck tuft", + "nephew penetrating aunt", + "nephew penetrating uncle", + "nightmare fuel", + "nine frame image", + "nipple dip", + "nipple fetish", + "nipple outline", + "nipple penetrating", + "no eyebrows", + "no sclera", + "no underwear", + "non-euclidean sex", + "non-humanoid machine penetrating", + "non-mammal balls", + "non-mammal breasts", + "non-mammal ears", + "non-mammal nipples", + "nose beak", + "nose horn", + "not furry focus", + "notched wings", + "nude female", + "null bulge", + "number", + "number on topwear", + "nurse headwear", + "obese anthro", + "obese female", + "obese male", + "object in ass", + "object in mouth", + "oblivious", + "obscured eyes", + "obscured face", + "obscured penetration", + "obscured sex", + "occipital markings", + "occult symbol", + "old", + "older female", + "older gynomorph", + "older intersex", + "older male", + "older penetrated", + "on bench", + "on front", + "on hind legs", + "on model", + "on top", + "on top of", + "one breast out", + "one eye obstructed", + "one row layout", + "open beak", + "open bottomwear", + "open smile", + "open topwear", + "oral invitation", + "oral masturbation", + "oral only", + "oral while penetrated", + "oral while penetrating", + "orange areola", + "orange armwear", + "orange balls", + "orange beak", + "orange border", + "orange bottomwear", + "orange clothing", + "orange ears", + "orange eyebrows", + "orange face", + "orange facial markings", + "orange features", + "orange headwear", + "orange inner ear", + "orange markings", + "orange nipples", + "orange nose", + "orange scales", + "orange sclera", + "orange skin", + "orange tail", + "orange topwear", + "orange wings", + "organs", + "orgasm face", + "orgasm from oral", + "out of frame", + "outline", + "outside border", + "outward slanted eyebrows", + "over edge", + "oversized bottomwear", + "oversized topwear", + "overweight ambiguous", + "overweight female", + "overweight gynomorph", + "overweight intersex", + "overweight male", + "overweight penetrated", + "ovum", + "ovum with heart", + "page number", + "pale skin", + "panel skew", + "panties only", + "pants down", + "pantsless", + "parallel sex", + "parody", + "partially inside", + "patreon", + "patreon logo", + "pattern armwear", + "pattern bottomwear", + "pattern clothing", + "pattern headwear", + "pattern legwear", + "pattern thigh highs", + "pattern topwear", + "pauldron", + "paw markings", + "pear-shaped figure", + "pec grab", + "peeing while penetrated", + "peeping", + "penetratable sex toy", + "penetrated male penetrating", + "penetrated while penetrating", + "penetrating nose", + "penetrating pov", + "penetrating while penetrated", + "penile spines", + "penis accessory", + "penis awe", + "penis base", + "penis everywhere", + "penis hug", + "penis in face", + "penis in penis", + "penis kissing", + "penis markings", + "penis outline", + "penis shaped bulge", + "penis size difference", + "penis through fly", + "penis towards viewer", + "perineum", + "personal grooming", + "perspective-incorrect bottomwear", + "perspective-incorrect topwear", + "pet praise", + "photo frame", + "pictographics", + "picture frame", + "piebald", + "pince-nez", + "pink areola", + "pink armwear", + "pink balls", + "pink beak", + "pink border", + "pink bottomwear", + "pink bra", + "pink claws", + "pink clitoris", + "pink clothing", + "pink collar", + "pink ears", + "pink eyebrows", + "pink face", + "pink feathes", + "pink glans", + "pink headwear", + "pink highlights", + "pink horn", + "pink inner ear", + "pink inner pussy", + "pink markings", + "pink panties", + "pink pawpads", + "pink pussy", + "pink sclera", + "pink skin", + "pink tail", + "pink tongue", + "pink topwear", + "pink underwear", + "pink wings", + "pinstripe bottomwear", + "pivoted ears", + "plaid bottomwear", + "plaid clothing", + "plaid headwear", + "plaid topwear", + "planet penetrated", + "plant hair", + "plap", + "platform footwear", + "pleated skirt", + "plucked string instrument", + "plump labia", + "pockets", + "pointy and animal ears", + "pointy speech bubble", + "pokemon fusion", + "pokemon speak", + "pokemorph", + "polearm", + "polygonal speech bubble", + "ponytail ears", + "potbelly", + "precum drip", + "precum on face", + "precum string", + "precum through bottomwear", + "predator penetrated", + "predator penetrating", + "predator penetrating prey", + "predator/prey", + "pregnant female", + "pregnant intersex", + "pregnant sex", + "prehensile ears", + "presenting balls", + "prey female", + "prey male", + "prey penetrated", + "prey penetrating", + "prey penetrating predator", + "prick ears", + "pride color armwear", + "pride color bottomwear", + "pride color markings", + "pride color topwear", + "print bottomwear", + "print bra", + "print clothing", + "print headwear", + "print topwear", + "print underwear", + "profanity", + "projectile lactation", + "pseudo bottomwear", + "pseudo-penis penetrating", + "pubic mound", + "public transportation", + "puffy anus", + "puffy areola", + "puffy nipples", + "pulling up bottomwear", + "pumps", + "pun", + "purple anus", + "purple areola", + "purple armwear", + "purple balls", + "purple border", + "purple bottomwear", + "purple claws", + "purple ears", + "purple eyebrows", + "purple face", + "purple headwear", + "purple highlights", + "purple horn", + "purple inner ear", + "purple markings", + "purple nipples", + "purple pawpads", + "purple sclera", + "purple skin", + "purple stripes", + "purple tail", + "purple tongue", + "purple topwear", + "purple underwear", + "purple wings", + "pussy blush", + "pussy ejaculation while penetrated", + "pussy floss", + "pussy juice drip", + "pussy juice on face", + "pussy juice string", + "pussy outline", + "pussyjob", + "quadruped penetrating", + "quads", + "question mark", + "questioning tone", + "rabbit ears", + "rainbow armwear", + "rainbow bottomwear", + "rainbow ears", + "rainbow markings", + "rainbow tail", + "rainbow topwear", + "raised arm", + "raised bottomwear", + "raised calf", + "raised eyebrows", + "raised foot", + "raised hand", + "raised inner eyebrows", + "raised topwear", + "raised wings", + "rape face", + "rat tail", + "real", + "realistic", + "realistic feral", + "realistic wings", + "receiving pov", + "rectangular glasses", + "red areola", + "red armwear", + "red balls", + "red bandanna", + "red beak", + "red border", + "red bottomwear", + "red cheeks", + "red claws", + "red clothing", + "red collar", + "red dress", + "red ears", + "red eyebrows", + "red face", + "red feathers", + "red gloves", + "red headwear", + "red highlights", + "red horn", + "red inner ear", + "red mane", + "red markings", + "red nipples", + "red pawpads", + "red sclera", + "red seam bottomwear", + "red shoes", + "red stripes", + "red tongue", + "red topwear", + "red underwear", + "red wings", + "reddened butt", + "regular grid layout", + "religious headwear", + "repeated text", + "requesting", + "restrained", + "restroom stall", + "reverse stand and carry position", + "ridiculous fit", + "ring (marking)", + "ring piercing", + "robot penetrating", + "roleplay", + "rolled up sleeves", + "round ears", + "rug", + "sackless", + "sagging breasts", + "saliva on face", + "saliva on tongue", + "scale eyebrows", + "scale markings", + "scarf only", + "screen", + "screen face", + "scroll", + "scrunchy face", + "scut tail", + "scuted arms", + "scutes", + "self bite", + "self lick", + "semi-anthro", + "sentient ears", + "serafuku", + "serious", + "serious face", + "serpentine", + "serratus", + "seven frame image", + "seven frame sequence", + "sex pillow", + "sex slave", + "sex toy background", + "sex toy in ass", + "sex toy in pussy", + "sex toy insertion", + "sex toy penetrating", + "sex toy penetration", + "sexual barrier device", + "sexual competition", + "shadow face", + "shaking", + "shallow penetration", + "sharkini", + "shirt", + "shirt collar", + "shirt only", + "shirtless", + "shoes only", + "shoes without bottomwear", + "short", + "short ears", + "short eyebrows", + "short female", + "short gynomorph", + "short intersex", + "short male", + "short stack", + "shortened sound effect", + "shoulder blades", + "shoulder markings", + "shoulder tuft", + "shoulderless topwear", + "shower head", + "side view", + "side-tie bikini", + "side-tie bottomwear", + "sideless clothing", + "sideless swimsuit", + "silly face", + "silver eyebrows", + "simple eyebrows", + "simple eyes", + "simple face", + "single strap topwear", + "sister penetrating brother", + "sister penetrating sister", + "sitting on chair", + "six frame grid", + "six frame image", + "six frame sequence", + "six frame staggered grid", + "six row layout", + "size difference", + "size play", + "skimpy bottomwear", + "skimpy topwear", + "skindentation", + "skinsuit", + "slanted eyebrows", + "sleeveless topwear", + "slim anthro", + "slim female", + "slit play", + "slosh", + "sloshing belly", + "slutty face", + "smalelr intersex", + "small areola", + "small but hung", + "small ears", + "small eyebrows", + "small tail", + "small waist", + "small wings", + "smaller ambiguous", + "smaller anthro", + "smaller feral", + "smaller gynomorph", + "smaller human", + "smaller humanoid", + "smaller on top", + "smaller penetrated", + "smaller pred", + "smaller prey", + "smelly", + "smelly feet", + "smiley face", + "smiling at viewer", + "smug face", + "snaggle tooth", + "snout markings", + "social nudity", + "socks only", + "soiling bottomwear", + "soles", + "son penetrating", + "son penetrating father", + "son penetrating mother", + "son penetrating parent", + "sound effect variant", + "speaker ears", + "species in dialogue", + "species transformation", + "speech bubble", + "spiked shell", + "spikes (anatomy)", + "spines", + "spiral markings", + "split form", + "sploot", + "spotted bottomwear", + "spotted ears", + "spotted face", + "spotted markings", + "spotted topwear", + "spread toes", + "spread wings", + "square crossover", + "staggering (layout)", + "standard pokeball", + "star topwear", + "stated sexuality", + "step pose", + "stinkface", + "stirrup socks", + "straight legs", + "strapless topwear", + "stretched ears", + "stretched pussy", + "string instrument", + "striped (kink)", + "striped armwear", + "striped bottomwear", + "striped clothing", + "striped ears", + "striped face", + "striped headwear", + "striped inner ear", + "striped legwear", + "striped markings", + "striped panties", + "striped scales", + "striped shirt", + "striped topwear", + "striped underwear", + "stuttering", + "style emulation", + "submissive anthro", + "submissive female", + "submissive feral", + "submissive human", + "submissive intersex", + "submissive pov", + "substance intoxication", + "suggestive bottomwear", + "suggestive topwear", + "suit symbol", + "sunglasses on head", + "super crown", + "surprise", + "surprised face", + "swallowing sound effect", + "sweatdrop", + "sweaty balls", + "sweaty breasts", + "sweaty butt", + "sweaty face", + "sweaty feet", + "sweaty genitalia", + "sweaty legs", + "sweaty penis", + "sweaty topwear", + "symbol", + "symbol-shaped pupils", + "tail clothing", + "tail fetish", + "tail growth", + "tail in pussy", + "tail markings", + "tail motion", + "tail penetrating", + "tail ring", + "tail through skirt", + "tail tuft", + "tail under skirt", + "tailbutt", + "tailjob while penetrating", + "take your pic", + "talking feral", + "talking to prey", + "tall", + "tan areola", + "tan balls", + "tan belly", + "tan border", + "tan bottomwear", + "tan clothing", + "tan countershading", + "tan ears", + "tan eyebrows", + "tan face", + "tan feathers", + "tan headwear", + "tan inner ear", + "tan inner ear fluff", + "tan markings", + "tan tail", + "tan topwear", + "tan wings", + "tapering penis", + "tartan bottomwear", + "taur penetrated", + "taur penetrating", + "taur penetrating anthro", + "taur penetrating female", + "taur penetrating feral", + "taur penetrating human", + "taur penetrating humanoid", + "taur penetrating intersex", + "taur penetrating male", + "taur penetrating taur", + "teal bottomwear", + "teal ears", + "teal eyebrows", + "teal inner ear", + "teal markings", + "teal topwear", + "teapot (body type)", + "tearing bottomwear", + "tearing topwear", + "tears of pleasure", + "teats", + "teeth showing", + "tentacle in ass", + "tentacle in pussy", + "tentacle penetrating", + "tentacle rape", + "tentacle sex", + "tentaclejob", + "tentacles penetrating female", + "teratophilia", + "terra macro", + "text border", + "text box", + "text emphasis", + "text markings", + "text on bodydominant humanoid", + "text on bottomwear", + "text on clothing", + "text on hat", + "text on headwear", + "text on shirt", + "text on swimwear", + "text on tank top", + "text on topwear", + "these aren’t my glasses", + "thick arms", + "thick bottom lip", + "thick eyebrows", + "thick lips", + "thick penis", + "thick tail", + "thigh gap", + "thigh grab", + "thigh markings", + "thigh squish", + "thin eyebrows", + "thin legs", + "thin tail", + "thin thighs", + "thinking with portals", + "three frame image", + "three frame sequence", + "three row layout", + "three-quarter view", + "throat swabbing", + "tied ears", + "tied topwear", + "tight bottomwear", + "tight topwear", + "tile", + "tile floor", + "titfuck", + "titfuck while penetrating", + "title", + "toddler", + "toe markings", + "toeless (marking)", + "toeless footwear", + "toeless legwear", + "tongue out blowjob", + "toony", + "toothed beak", + "topless male", + "topwear", + "topwear only", + "torn bottomwear", + "torn legwear", + "torn topwear", + "torso grab", + "torso markings", + "touching face", + "touching penis", + "towel around neck", + "towel only", + "toying partner", + "toying self", + "transgender penetrating male", + "translucent", + "translucent bottomwear", + "translucent hair", + "translucent penetration", + "translucent tentacles", + "translucent topwear", + "translucent wings", + "transparent border", + "triangular ears", + "tribadism", + "tsundere", + "tuft", + "tufted ears", + "twin bows", + "twitter logo", + "two doms one sub", + "two row layout", + "two tone armwear", + "two tone beak", + "two tone body", + "two tone bottomwear", + "two tone clothing", + "two tone ears", + "two tone eyebrows", + "two tone eyes", + "two tone face", + "two tone feathers", + "two tone footwear", + "two tone fur", + "two tone hair", + "two tone headwear", + "two tone inner ear", + "two tone markings", + "two tone penis", + "two tone pussy", + "two tone scales", + "two tone skin", + "two tone tail", + "two tone topwear", + "two tone wings", + "two-footed footjob", + "unaware", + "unbuttoned bottomwear", + "unbuttoned topwear", + "uncle penetrating nephew", + "uncle penetrating niece", + "undercut", + "underhoof", + "undersized topwear", + "unguiligrade", + "unguligrade anthro", + "unicorn horn", + "unprofessional behavior", + "unsigned", + "unusual anatomy", + "unusual bodily fluids", + "unusual cum", + "unusual genital fluids", + "unusual genitalia", + "unusual genitalia placement", + "unusual insides", + "unusual penis", + "unusual penis placement", + "unusual pupils", + "unusual tail", + "unusued condom", + "unwanted cum inside", + "unwanted ejaculation", + "unwilling prey", + "upskirt sex", + "uraeus", + "urethral", + "urethral bulge", + "urine on face", + "urine pool", + "user interface", + "using wings", + "v sign", + "v-shaped eyebrows", + "vaginal knotting", + "vaginal masturbation", + "vambrace", + "vehicle for hire", + "vein", + "veiny balls", + "veiny breasts", + "veiny muscles", + "vertical diphallism", + "vertical staggering", + "vibrator in ass", + "vibrator in pussy", + "visibly trans", + "visual pun", + "vowelless", + "vowelless sound effect", + "vowelless vocalization", + "v_v", + "walk-in", + "wall (structure)", + "wave", + "waving at viewer", + "wavy eyebrows", + "wavy mouth", + "wearing diaper", + "website logo", + "wet bottomwear", + "wet shirt", + "wet topwear", + "wetting bottomwear", + "what", + "what has science done", + "where is your god now", + "whisker markings", + "whisker spots", + "white areola", + "white armwear", + "white balls", + "white beak", + "white belly", + "white border", + "white bottomwear", + "white claws", + "white clothing", + "white countershading", + "white diaper", + "white ears", + "white eyebrows", + "white face", + "white feathers", + "white gloves", + "white headwear", + "white horn", + "white inner ear", + "white inner ear fluff", + "white mane", + "white markings", + "white nipples", + "white nose", + "white outline", + "white panties", + "white perneum", + "white pillow", + "white sheath", + "white shoes", + "white skin", + "white spots", + "white stripes", + "white tail tip", + "white text", + "white text border", + "white thigh highs", + "white topper", + "white topwear", + "white wings", + "why", + "wide stance", + "willing prey", + "wince", + "wing boner", + "wing claws", + "wing markings", + "wiping tears", + "wishbone mouth", + "wolf ears", + "worm’s-eye view", + "worried face", + "wrapped condom", + "wrist markings", + "wrist tuft", + "writing on face", + "x anus", + "xenophilia", + "y anus", + "year", + "yellow areola", + "yellow armwear", + "yellow beak", + "yellow border", + "yellow bottomwear", + "yellow claws", + "yellow clothing", + "yellow countershading", + "yellow ears", + "yellow face", + "yellow headwear", + "yellow horn", + "yellow inner ear", + "yellow markings", + "yellow nipples", + "yellow nose", + "yellow sclera", + "yellow skin", + "yellow tongue", + "yellow topwear", + "yellow underwear", + "yellow wings", + "yes-no question", + "young ambiguous", + "young penetrated", + "young penetrating", + "young penetrating older", + "younger female", + "younger gynomorph", + "younger penetrated", + "zero pictured", + "zipper topwear", + "zzz" ] } \ No newline at end of file diff --git a/lib/philomena/images/image.ex b/lib/philomena/images/image.ex index d8e791c8..7dbe0444 100644 --- a/lib/philomena/images/image.ex +++ b/lib/philomena/images/image.ex @@ -99,7 +99,7 @@ defmodule Philomena.Images.Image do field :uploaded_image, :string, virtual: true field :removed_image, :string, virtual: true - + field :tag_input, :string, virtual: true timestamps(inserted_at: :created_at, type: :utc_datetime) end diff --git a/lib/philomena/images/tag_validator.ex b/lib/philomena/images/tag_validator.ex index 34d5eb31..e5fff775 100644 --- a/lib/philomena/images/tag_validator.ex +++ b/lib/philomena/images/tag_validator.ex @@ -3,7 +3,10 @@ defmodule Philomena.Images.TagValidator do import Ecto.Changeset def validate_tags(changeset) do - tags = changeset |> get_field(:tags) + blacklist = Config.get(:tag)["blacklist"] + tags = changeset |> get_field(:tags) |> Enum.reject(fn x -> + x.name in blacklist + end) validate_tag_input(changeset, tags) end @@ -14,7 +17,7 @@ defmodule Philomena.Images.TagValidator do changeset |> validate_number_of_tags(tag_set, 3) - |> validate_bad_words(tag_set) + |> strip_bad_words(tags) |> validate_has_rating(rating_set) |> validate_safe(rating_set) |> validate_sexual_exclusion(rating_set) @@ -45,21 +48,14 @@ defmodule Philomena.Images.TagValidator do end end - def validate_bad_words(changeset, tag_set) do - bad_words = MapSet.new(Config.get(:tag)["blacklist"]) - intersection = MapSet.intersection(tag_set, bad_words) + def strip_bad_words(changeset, tags) do + tag_input = tags + |> Enum.reduce([], fn x, acc -> [x.name | acc] end) + |> Enum.join(", ") - cond do - MapSet.size(intersection) > 0 -> - Enum.reduce( - intersection, - changeset, - &add_error(&2, :tag_input, "contains forbidden tag `#{&1}'") - ) - - true -> - changeset - end + changeset + |> put_change(:tag_input, tag_input) + |> put_change(:tags, tags) end defp validate_has_rating(changeset, %{safe: s, sexual: x, horror: h, gross: g}) do diff --git a/lib/philomena_web/templates/tag/_tag_info_row.html.slime b/lib/philomena_web/templates/tag/_tag_info_row.html.slime index 01550b20..3e30f687 100644 --- a/lib/philomena_web/templates/tag/_tag_info_row.html.slime +++ b/lib/philomena_web/templates/tag/_tag_info_row.html.slime @@ -13,10 +13,6 @@ = link "Usage", to: Routes.tag_detail_path(@conn, :index, @tag), class: "detail-link" = if manages_dnp?(@conn) do = link "Create new DNP entry", to: Routes.dnp_entry_path(@conn, :new, tag_id: @tag.id), class: "detail-link" - = if manages_tags?(@conn) do - = link "Edit spoiler image ", to: Routes.tag_image_path(@conn, :edit, @tag) - = if can?(@conn, :alias, @tag) do - = link "Edit aliases", to: Routes.tag_alias_path(@conn, :edit, @tag) br @@ -122,4 +118,4 @@ | ( = link "more info", to: Routes.dnp_entry_path(@conn, :show, entry) - | ) + | ) \ No newline at end of file