#lang scheme/base ;; Get a list of all the swearwords from http://www.noswearing.com/list.php. ;; We'll look at all the abbr-tagged attributes. ;; ;; This module makes me feel a little dirty. :( (require net/url scheme/match scheme/local scheme/contract (planet ashinn/html-parser/html-parser) (planet lizorkin/sxml:2:1/sxml)) ;; A dictionary entry associates a term with its meaning. (define-struct entry (term meaning) #:prefab) ;; extract-term: sexp -> (or entry #f) (define (extract-term abbr-sexp) (match abbr-sexp [(list 'abbr (list '@ (list 'title meaning)) (list 'b term)) (make-entry term meaning)] [else #f])) ;; get-swearwords: -> (listof entry) ;; Returns a list of the swear-word entries. (define (get-swearwords) (local [(define swear-url (string->url "http://www.noswearing.com/list.php")) (define content (html->sxml (get-pure-port swear-url))) (define query (sxpath "//abbr"))] (filter (lambda (x) x) (map extract-term (query content))))) (provide/contract [struct entry ([term string?] [meaning string?])] [get-swearwords (-> (listof entry?))] [hardcoded-swearwords (listof entry?)]) ;;; ;;; ;; List extracted on May 7, 2009, just in case the URL goes away. (define hardcoded-swearwords '(#s(entry "anus" "butt") #s(entry "arse" "butt") #s(entry "arsehole" "butt") #s(entry "ass" "butt") #s(entry "ass-pirate" "homosexual") #s(entry "assbag" "idiot") #s(entry "assbandit" "homosexual") #s(entry "assbanger" "homosexual") #s(entry "assbite" "idiot") #s(entry "assclown" "butt") #s(entry "asscock" "idiot") #s(entry "asscracker" "butt") #s(entry "asses" "butts") #s(entry "assface" "butt") #s(entry "assfuck" "rear-loving") #s(entry "assfucker" "homosexual") #s(entry "assgoblin" "homosexual") #s(entry "asshat" "butt") #s(entry "asshead" "idiot") #s(entry "asshole" "jerk") #s(entry "asshopper" "homosexual") #s(entry "assjacker" "homosexual") #s(entry "asslick" "idiot") #s(entry "asslicker" "Buttlicker") #s(entry "assmonkey" "idiot") #s(entry "assmunch" "idiot") #s(entry "assmuncher" "butt") #s(entry "assnigger" "Racial Slur") #s(entry "asspirate" "homosexual") #s(entry "assshole" "butt") #s(entry "asssucker" "idiot") #s(entry "asswad" "butt") #s(entry "asswipe" "butt") #s(entry "bampot" "idiot") #s(entry "bastard" "illegitimate child") #s(entry "beaner" "Mexican") #s(entry "bitch" "female dog") #s(entry "bitchass" "idiot") #s(entry "bitchtits" "homosexual") #s(entry "bitchy" "mean") #s(entry "blow job" "sexual act") #s(entry "blowjob" "sexual act") #s(entry "bollocks" "male genitalia") #s(entry "bollox" "male genitalia") #s(entry "boner" "erection") #s(entry "brotherfucker" "homosexual") #s(entry "bullshit" "poop") #s(entry "bumblefuck" "homosexual") #s(entry "butt plug" "cork") #s(entry "butt-pirate" "homosexual") #s(entry "buttfucka" "homosexual") #s(entry "buttfucker" "homosexual") #s(entry "camel toe" "female genitalia") #s(entry "carpetmuncher" "homosexual") #s(entry "chinc" "Chinese") #s(entry "chink" "asian") #s(entry "choad" "male genitalia") #s(entry "chode" "small penis") #s(entry "clit" "female genitals") #s(entry "clitface" "idiot") #s(entry "clitfuck" "sexual act") #s(entry "clusterfuck" "mess up") #s(entry "cock" "penis") #s(entry "cockass" "Jerk") #s(entry "cockbite" "idiot") #s(entry "cockburger" "idiot") #s(entry "cockface" "idiot") #s(entry "cockfucker" "idiot") #s(entry "cockjockey" "homosexual") #s(entry "cockknoker" "homosexual") #s(entry "cockmaster" "homosexual") #s(entry "cockmongler" "homosexual") #s(entry "cockmongruel" "homosexual") #s(entry "cockmonkey" "idiot") #s(entry "cockmuncher" "homosexual") #s(entry "cocknose" "idiot") #s(entry "cocknugget" "idiot") #s(entry "cockshit" "idiot") #s(entry "cocksmith" "homosexual") #s(entry "cocksmoker" "homosexual") #s(entry "cocksucker" "homosexual") #s(entry "coochie" "female genitalia") #s(entry "coochy" "female genitalia") #s(entry "coon" "African American") #s(entry "cooter" "vagina") #s(entry "cracker" "Caucasian") #s(entry "cum" "semen") #s(entry "cumbubble" "idiot") #s(entry "cumdumpster" "prostitute") #s(entry "cumguzzler" "homosexual") #s(entry "cumjockey" "homosexual") #s(entry "cumslut" "dirty girl") #s(entry "cumtart" "idiot") #s(entry "cunnilingus" "sexual act") #s(entry "cunt" "vagina") #s(entry "cuntface" "idiot") #s(entry "cunthole" "female genitalia") #s(entry "cuntrag" "idiot") #s(entry "cuntslut" "idiot") #s(entry "dago" "Italian") #s(entry "damn" "darn") #s(entry "deggo" "Italian") #s(entry "dick" "penis") #s(entry "dickbag" "idiot") #s(entry "dickbeaters" "Hands") #s(entry "dickface" "idiot") #s(entry "dickfuck" "idiot") #s(entry "dickhead" "phallace face") #s(entry "dickhole" "male genitalia") #s(entry "dickjuice" "semen") #s(entry "dickmilk" "sperm") #s(entry "dickmonger" "homosexual") #s(entry "dicks" "penises") #s(entry "dickslap" "sexual act") #s(entry "dicksucker" "homosexual") #s(entry "dickwad" "idiot") #s(entry "dickweasel" "idiot") #s(entry "dickweed" "idiot") #s(entry "dickwod" "idiot") #s(entry "dike" "homosexual") #s(entry "dildo" "sexual toy") #s(entry "dipshit" "idiot") #s(entry "dookie" "poop") #s(entry "douche" "female hygene product") #s(entry "douche-fag" "idiot") #s(entry "douchebag" "female hygene accessory") #s(entry "douchewaffle" "homosexual") #s(entry "dumass" "idiot") #s(entry "dumb ass" "idiot") #s(entry "dumbass" "idiot") #s(entry "dumbfuck" "idiot") #s(entry "dumbshit" "idiot") #s(entry "dumshit" "idiot") #s(entry "dyke" "homosexual") #s(entry "fag" "homosexual") #s(entry "fagbag" "homosexual") #s(entry "fagfucker" "homosexual") #s(entry "faggit" "homosexual") #s(entry "faggot" "homosexual") #s(entry "faggotcock" "homosexual") #s(entry "fagtard" "homosexual idiot") #s(entry "fatass" "a fat person") #s(entry "fellatio" "sexual act") #s(entry "feltch" "sexual act") #s(entry "flamer" "homosexual") #s(entry "fuck" "fornicate") #s(entry "fuckass" "idiot") #s(entry "fuckbag" "idiot") #s(entry "fuckboy" "idiot") #s(entry "fuckbrain" "idiot") #s(entry "fuckbutt" "butt") #s(entry "fucked" "had intercourse") #s(entry "fucker" "fornicator") #s(entry "fuckersucker" "idiot") #s(entry "fuckface" "idiot") #s(entry "fuckhead" "butt") #s(entry "fuckhole" "jerk") #s(entry "fuckin" "sexual act") #s(entry "fucking" "freaking") #s(entry "fucknut" "idiot") #s(entry "fucknutt" "idiot") #s(entry "fuckoff" "go away") #s(entry "fucks" "sexual act") #s(entry "fuckstick" "male genitalia") #s(entry "fucktard" "Moron") #s(entry "fuckup" "idiot") #s(entry "fuckwad" "idiot") #s(entry "fuckwit" "dummy") #s(entry "fuckwitt" "idiot") #s(entry "fudgepacker" "homosexual") #s(entry "gay" "homosexual") #s(entry "gayass" "butt") #s(entry "gaybob" "homosexual") #s(entry "gaydo" "homosexual") #s(entry "gayfuck" "homosexual") #s(entry "gayfuckist" "homosexual") #s(entry "gaylord" "homosexual") #s(entry "gaytard" "homosexual") #s(entry "gaywad" "homosexual") #s(entry "goddamn" "goshdarn") #s(entry "goddamnit" "goshdarnit") #s(entry "gooch" "female genitalia") #s(entry "gook" "Chinese") #s(entry "gringo" "foreigner") #s(entry "guido" "italian") #s(entry "handjob" "sexual act") #s(entry "hard on" "erection") #s(entry "heeb" "Jewish Person") #s(entry "hell" "heck") #s(entry "ho" "woman") #s(entry "hoe" "Woman") #s(entry "homo" "homosexual") #s(entry "homodumbshit" "idiot") #s(entry "honkey" "white person") #s(entry "humping" "sexual act") #s(entry "jackass" "idiot") #s(entry "jap" "japanesse person") #s(entry "jerk off" "masturbate") #s(entry "jigaboo" "African American") #s(entry "jizz" "Semen") #s(entry "jungle bunny" "african american") #s(entry "junglebunny" "african american") #s(entry "kike" "Jewish Person") #s(entry "kooch" "female genitalia") #s(entry "kootch" "female genitalia") #s(entry "kunt" "female genitalia") #s(entry "kyke" "Jewish person") #s(entry "lesbian" "homosexual") #s(entry "lesbo" "homosexual") #s(entry "lezzie" "homosexual") #s(entry "mcfagget" "homosexual") #s(entry "mick" "irish") #s(entry "minge" "female genitalia") #s(entry "mothafucka" "Jerk") #s(entry "motherfucker" "mother lover") #s(entry "motherfucking" "fornicating with mother") #s(entry "muff" "female genitalia") #s(entry "muffdiver" "homosexual") #s(entry "munging" "sexual act") #s(entry "negro" "african american") #s(entry "nigga" "african american") #s(entry "nigger" "african american") #s(entry "niglet" "african american child") #s(entry "nut sack" "male genitalia") #s(entry "nutsack" "male genitalia") #s(entry "paki" "pakistanien") #s(entry "panooch" "femail genitalia") #s(entry "pecker" "Penis") #s(entry "peckerhead" "idiot") #s(entry "penis" "male genitalia") #s(entry "penisfucker" "homosexual") #s(entry "penispuffer" "homosexual") #s(entry "piss" "urinate") #s(entry "pissed" "urinated") #s(entry "pissed off" "angry") #s(entry "pissflaps" "female genitalia") #s(entry "polesmoker" "homosexual") #s(entry "pollock" "polish person") #s(entry "poon" "female genitals") #s(entry "poonani" "female genitalia") #s(entry "poonany" "vagina") #s(entry "poontang" "female genitalia") #s(entry "porch monkey" "african american") #s(entry "porchmonkey" "African American") #s(entry "prick" "penis") #s(entry "punanny" "female genitalia") #s(entry "punta" "female dog") #s(entry "pussies" "Female Genitalias") #s(entry "pussy" "female reproductive organ") #s(entry "pussylicking" "sexual act") #s(entry "puto" "idiot") #s(entry "queef" "vaginal fart.") #s(entry "queer" "homosexual") #s(entry "queerbait" "homosexual") #s(entry "queerhole" "homosexual") #s(entry "renob" "erection") #s(entry "rimjob" "dirty sexual act") #s(entry "ruski" "Russian") #s(entry "sand nigger" "middle eastern") #s(entry "sandnigger" "middle eastern") #s(entry "schlong" "male genitalia") #s(entry "scrote" "male genitalia") #s(entry "shit" "poop") #s(entry "shitass" "idiot") #s(entry "shitbagger" "idiot") #s(entry "shitbreath" "Bad Breath") #s(entry "shitcunt" "idiot") #s(entry "shitdick" "idiot") #s(entry "shitface" "pooface") #s(entry "shitfaced" "Drunk") #s(entry "shithead" "jerk") #s(entry "shithole" "idiot") #s(entry "shithouse" "bathroom") #s(entry "shitspitter" "butt") #s(entry "shitstain" "poop") #s(entry "shitter" "defecator") #s(entry "shittiest" "worst") #s(entry "shitting" "pooping") #s(entry "shitty" "bad") #s(entry "shiz" "poop") #s(entry "shiznit" "poop") #s(entry "skank" "dirty girl") #s(entry "skeet" "semen") #s(entry "skullfuck" "sexual act") #s(entry "slut" "sexually popular woman") #s(entry "slutbag" "sexually popular woman") #s(entry "smeg" "poop") #s(entry "snatch" "female genitalia") #s(entry "spic" "mexican") #s(entry "spick" "mexican american") #s(entry "splooge" "ejaculate") #s(entry "tard" "mentally challenged") #s(entry "testicle" "male genitalia") #s(entry "thundercunt" "idiot") #s(entry "tit" "breast") #s(entry "titfuck" "sexual act") #s(entry "tits" "breasts") #s(entry "tittyfuck" "sexual act") #s(entry "twat" "female genitals") #s(entry "twatlips" "idiot") #s(entry "twats" "vaginas") #s(entry "twatwaffle" "homosexual") #s(entry "unclefucker" "homosexual") #s(entry "va-j-j" "female genitalia") #s(entry "vag" "femail genitalia") #s(entry "vagina" "female genitalia") #s(entry "vjayjay" "female genitalia") #s(entry "wank" "sexual act") #s(entry "wetback" "Mexican") #s(entry "whore" "hussy") #s(entry "whorebag" "idiot") #s(entry "whoreface" "idiot") #s(entry "wop" "Italian")))