Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 43.35 KB | None | 0 0
  1. #TODO: REMOVE UNIQUE COMMENTS SCORE
  2.  
  3.  
  4. #MUST HAVE AT LEAST 20 COMMENTS TO BE ANALYZED
  5. import sys
  6. import praw
  7. import nltk
  8. import random
  9. import operator, time
  10. from nltk.corpus import stopwords
  11. import string
  12. import csv
  13. import threading
  14.  
  15.  
  16. r = praw.Reddit(client_id='heddO7c6fr8_ew',
  17. client_secret='-R8xmfsLhcc7iH5FheqxHk-xYXI',
  18. password='1lafot12',
  19. user_agent='Gathers data',
  20. username='GNLS03JPAP',
  21. disable_warning=True)
  22.  
  23. r2 = praw.Reddit(
  24. client_id='QMGJWHgnQGIJNA',
  25. client_secret='Vq5vDuub6xb_ik8jzOsm33Wpl5M',
  26. password='1lafot12',
  27. username='doggobotbotbot',
  28. user_agent='Smiles all around!'
  29. )
  30.  
  31.  
  32. r3 = praw.Reddit(client_id='zOtvUodaAj30lA',
  33. client_secret='Y4nQ5MRjmKZo8Yqrzkd0IbkWzLA',
  34. password='inyL5r6X',
  35. user_agent='Final last sender',
  36. username='DiepModBot',
  37. disable_warning=True)
  38.  
  39.  
  40. r4 = praw.Reddit(client_id='wKvFAi0z-krvKg',
  41. client_secret='UEY7aHZI5NH13D0I3ht_IvxrTUk',
  42. password='1lafot12X',
  43. user_agent='CrossPostingBot',
  44. username='FactorioPrintsBOT')
  45.  
  46.  
  47.  
  48.  
  49. # print([x.body for x in r.redditor("totesmessenger").comments.new(limit=100)])
  50. # exit()
  51. #
  52. longVars = {'parentlist':None, 'breply':None, 'lkarma':None, 'nPosts':None, 'repetitive':None, 'ldist':None, 'uniqComs':None, 'spread':None, 'levels':None}
  53.  
  54. def relca(_wanted, user, comlist):
  55. if _wanted == 'breply':
  56. longVars['breply'] = botReplyTop(user)
  57. elif _wanted == 'parentlist':
  58. print("STARTED THIS LONG ONE UGH")
  59. plist = []
  60. for pcom in comlist[:20]:
  61. try:
  62. if not pcom.is_root: plist.append(pcom.parent())
  63. except:
  64. print("ERROR")
  65. longVars['parentlist'] = plist
  66. longVars['repetitive'] = max([isRepetitive(user, comlist), isRepetitive(user, plist)])
  67. longVars['ldist'] = max(levDistPer(comlist), levDistPer(plist))
  68. print("ENDED THIS LONG ONE UGH")
  69. elif _wanted == 'lkarma':
  70. longVars['lkarma'] = len(comlist)/r.redditor(user).link_karma
  71. elif _wanted == 'nPosts':
  72. longVars['nPosts'] = fewPosts(user, len(comlist))
  73. elif _wanted == 'repetitive':
  74. pass # longVars['repetitive'] = max([isRepetitive(user, comlist), isRepetitive(user, parentlist)])
  75. elif _wanted == 'ldist':
  76. pass # longVars['ldist'] = max(levDistPer(comlist), levDistPer(parentlist))
  77. elif _wanted == 'uniqComs':
  78. longVars['uniqComs'] = uniqueComments(user, comlist)
  79. elif _wanted == 'spread':
  80. longVars['spread'] = getSpread(user, comlist)
  81. elif _wanted == 'levels':
  82. longVars['levels'] = getSameLevels(user, comlist)
  83. def gatherData(usr):
  84. start = time.time()
  85. for item in longVars: longVars[item] = None
  86. blacklisted = ['askouija', 'test', 'freekarma4you']
  87. clst = [x for x in r.redditor(usr).comments.new(limit=100) if x.distinguished == None and str(x.subreddit).lower() not in blacklisted]
  88.  
  89. choices = ['breply', 'parentlist', 'lkarma', 'nPosts', 'repetitive', 'ldist', 'uniqComs', 'spread', 'levels']
  90. thread_list = []
  91.  
  92. for x in choices:
  93. t = threading.Thread(target=relca, args=(x,usr,clst))
  94. t.daemon = True
  95. thread_list.append(t)
  96.  
  97. for x in thread_list:
  98. x.start()
  99.  
  100. for x in thread_list:
  101. x.join()
  102.  
  103. fin = time.time() - start
  104. print(f"Done in {fin} seconds.")
  105. return longVars['levels'], longVars['spread'], longVars['uniqComs'], longVars['ldist'], longVars['repetitive'], longVars['breply'], longVars['parentlist'], longVars['lkarma'], longVars['nPosts'], clst
  106.  
  107.  
  108. # NEW RULE !!!! IT MUST IGNORE OTHER LANGUAGES
  109.  
  110. # nltk.download('stopwords')
  111.  
  112.  
  113.  
  114.  
  115. # # I still think it would be interesting to train AI to recognize bots with data such as the name (bots names usually contain "bot"),
  116. # # the similarity between comments, the number of posts (generally low with bots), average time between comments, and presence of keywords
  117. # # ("bot", "source code", "feedback") in many comments
  118.  
  119.  
  120. # #OFFICIAL TRAITS (need at least 20 comments to analyze):
  121. # #1.) Name contains bot (true/false)
  122. # #2.) Non-standard words (i.e. not a, the, an) found in over 90% of comments (true/false) word in comment? append to dict & incrememnt num (isRepetitive)
  123. # #3.) Average time between comments < x (true/false)
  124. # #4.) Presence of keywords ("bot", "source code", "feedback", "FAQ") in over 90% of comments (true/false)
  125. # #5.) Number of posts <= 3 (true/false)
  126. # #6.) Standard deviation for average times between comments lower than X
  127. # #7.) Over 90% of comments are not of same variety?
  128.  
  129.  
  130. bots = sorted(list(set(['EvenWithContext_Bot', 'stabbot', 'RedditSilverRobot', 'ghostbot12', 'THANKS_OBOTMA', 'DupeBro', 'FirminoBot', 'UnknownVideosMod', 'andrethegiant', 'bot_defending_bots', 'haikubot-1911', 'interestung7', 'FriendlyDeinonychus', u'ayylmao2dongerbot-v2', u'supremeredditbot', u'topredditbot', u'shillhill666', 'MovieGuide', u'couldbeworsebot', u'botisbalanced', u'autourbanbot', u'politereminderbot', u'lol_reply_bot', u'cake_day_bot', u'anti-gif-bot', 'mentioned_Videos', u'__word_clouds__', u'unexpectfactorialbot', u'the69bot', u'copypastasearchbot', 'SandfordNeighborhood', u'thenthanmistakenoted', u'duty_bot', u'mediainformationbot', u'botwhothanksbots', u'astute_newt', 'BitcoinAllBot', 'phonebatterylevelbot', u'terriblejokebot', u'congress_bill_bot', u'trollabot', 'YesYouCould', '_youtubot_', 'Metric_Robot', u'nigelthornberry-bot', u'poshgit-', u'moviesbot', 'totesmessenger', u'grammarnazimachine2k', u'sploosh_bot', u'datafire_bot', u'thetopcommentbot', u'biglebowskibot', u'grootbot', u'jasonbournebot', u'armfixerbot', u'image_linker_bot', 'GoodBot_BadBot', 'TDTMMbot', u'linkexpanderbot', u'tubeunblockv1', u'topcommentoftheday', u'jargonbot', 'timezone_bot', u'linleylin', 'pinkguybot', u'camptownrobot', 'alotabot', u'cahbot', 'dav-bot', 'imguralbumbot', 'NotYaourtBot', 'Gyazo_Bot', u'trump_energy4', 'youtubehaikutimebot', u'ketchup_bot', u'should_have_listened', u'yourewelcome_bot', u'shrugfacebot', u'theswearbot', u'pm_me_your_bw_pics', u'texasfunfacts', u'decronym', u'alternatefactsbot', u'templatebot', u'checks_out_bot', u'healer_of_arms', u'thewallgrows', u'seriouslywhenishl3', u'gifv-bot', u'tubeunblock', u'lightningvlightening', 'thats_not_you', 'ImagesOfNetwork', 'wiki_cleanup_bot', u'alphabet_bot', 'tfwnogfbot', u'michaelscottbot', '_Definition_Bot_', 'wikitextbot', 'helperbot_', u'clueless_bot', 'OriginalPostSearcher', 'DrunkANimalFactBot', 'BankUSA', u'metric_robot', u'swearjar_bot', 'twinkiac', 'smallsubbot', u'yabbitbot', 'BundleMaker', u'_twssbot_', u'subredditmetadatabot', u'alot-of-bot', u'account_age_bot', u'makeswordcloudsagain', u'timestamp_bot', u'colorizebot', 'Upvote_Bot_3000', u'dailmail_bot', 'lawbot2016', u'thepicturedescribot', u'convertstometric', 'Capital_R_and_U_Bot', u'2018midtermelections', 'sneakpeekbot', u'-ecksdee-', u'pays_respect', u'mentioned_videos', u'gfycatofficialbot', u'payrespects-bot', u'you_get_cmv_delta', 'mortalitybot', 'could-of-bot', u'bee-bot', u'unrelatedcommentxxx', u'thatsprettygoodbot', u'smartifybot', u'prettynicebottest', 'DeceptiModerator', u'thelinkfixerbot', '__impearlfectron__', 'youtubefactsbot', u'no_context_bot', 'mirrorninja2', 'thank_mr_skeltal_bot', 'joebidenbot', 'botpaperscissors', 'amazedbot', 'jacksfilmsbot', 'have_bot', 'teleportsbehindu', 'Agrees_withyou', 'ludabot'])))
  131.  
  132.  
  133.  
  134. allInfo = dict()
  135.  
  136. # normalusers = list(set(['KolbStomp', 'Insxnity', 'Leben_', 'jgoodma3', 'glenbot', 'Izlandi', 'Pomnom', 'AuhsojSivart', 'NateTheGreat14', 'KOWguy', '13374L', 'youlostthewarwehrs', 'mjj1492', 'SundayNightExcursion', 'thespieler11', 'poisonminex555', 'BotsByLiam', 'BelowDecksWatch', 'The-Human-Caterpie', 'audobot', 'ShitpostBot4700', 'confirmSuspicions', 'Danny_Dorito1' ,'ClearlyCoder', 'g051051', 'CastleCorp', 'antiproton', 'Dynamiklol', 'BritishEnglishPolice', 'Adilliosz', 'Slow_motion_riot', 'DroidAG', 'tutelarsword', 'F1zzzzzzzzz', 'lizard81288', 'abe699', 'omnear', 'oVuhqz-', 'ThatsMyHoverboard', 'Jdude1', 'Maxrdt', '1tepa1', 'jboundfly', 'dimidunnit', 'Jeepwave13', 'rockiesfan4ever', 'theLAZYmd', '-en-', 'ShiningConcepts', 'AskWomen_SS', 'I_POO_ON_GOATS', 'badcompanygg', 'Cult7Choir', 'Zwierenga', 'A_FluteBoy', 'raijuJ', 'Eadwine_', 'deathviahype', 'vikmaychib', 'filij', 'JakeBurnsRed', 'Sevenvolts', 'Persbrandt', 'Yonaimy', 'black-trash-man', 'imashtro', 'PowerfullySimple', 'ergatory', 'SentineI', 'brandonhaas81', 'Cremacious', 'lazarini', 'noxnoctum', 'White_Null', 'lemonfur', 'Kramgunderson', 'twintowersrubble', 'LeProgressier', 'cork_dork', 'Paanduhb', 'UrgotOniichan', '_Hnnng_', 'DeetzLV', 'Vriess', 'angryclouds1', 'Madaman333', 'Joshgill123', '40splishsplash', 'davetenhave', 'Punisher1942', 'RealAdonis2', 'RoseM20', 'botd44', 'KellyfromLeedsUK', 'Officer_Lockstock95', 'djda9l', 'IOUAndSometimesWhy', 'almondbuttertoast', 'anecdot11', 'Mukhasim', 'Elock21', 'otherbard', 'RayceC', 'St_Schaf', 'Bshsjaksnsbshajakaks', 'poptart2nd', 'MethMouthMary', 'formeraide', 'Arksaw', 'nextgamegod', 'anotherdrink', 'AnotherProGamer', 'PurpleScorpio', 'aventedor', 'aeonicgnosis', 'wannabecameraguy', 'SmallUnitTaticsPlea', 'FoxieKat', 'Voltairinede', 'just_a_talking_head', 'therecordcorrected', 'PolarBearIcePop', 'audobot', 'The_blind_swordsman', 'num1eraser', 'SwallowRP3', 'GenAnton', 'wilderfulford', 'Olav_Grey', 'RonnieJamesDevo', 'NuggetBlazers', 'Ikniow', 'notheusernameiwanted', 'Chesterbb', 'SaintSayonara', 'RubyIsRight_', 'Skulldaeron', '_edge_case', 'jusbrowsin', 'DeadManFeeding', 'WhiteNoiseWhiteNoise', 'meowpass', 'stockingcummer', 'NovaInitia', 'alpacagnome', 'Killthebilly', 'cantkeepdickinpants', 'BlondishYataghan', 'stamatefilip', 'geldof_is_a_pox_too', 'Cowjoker', 'Gamer3427', 'Freeatlast112015', '2manyredditstalkers', 'ViGo76']))
  137. normalusers = sorted(list(set(['-en-', 'KatnissBot', 'i-make-robots', 'Zwierenga', 'RubyIsRight_', 'DeetzLV', 'lemonfur', 'JakeBurnsRed', 'lizard81288', 'jusbrowsin', 'SwallowRP3', 'davetenhave', 'Vriess', 'angryclouds1', 'Arksaw', 'imashtro', 'White_Null', 'DeadManFeeding', 'antiproton', 'brandonhaas81', 'RonnieJamesDevo', 'Jeepwave13', '_edge_case', 'jboundfly', 'KolbStomp', 'cantkeepdickinpants', 'num1eraser', 'Voltairinede', 'mjj1492', 'Officer_Lockstock95', 'BlondishYataghan', 'therecordcorrected', 'AskWomen_SS', 'g051051', 'AnotherProGamer', 'oVuhqz-', 'ViGo76', 'Sevenvolts', 'Paanduhb', 'Adilliosz', 'RayceC', 'KellyfromLeedsUK', 'djda9l', 'NovaInitia', 'Eadwine_', 'GenAnton', 'CastleCorp', 'Kramgunderson', 'Persbrandt', 'LeProgressier', 'Bshsjaksnsbshajakaks', 'thespieler11', 'botd44', 'abe699', 'Skulldaeron', 'Ikniow', '1tepa1', 'I_POO_ON_GOATS', 'poptart2nd', 'aventedor', 'Killthebilly', 'Elock21', 'SentineI', 'poisonminex555', 'Danny_Dorito1', 'dimidunnit', 'Madaman333', 'tutelarsword', 'aeonicgnosis', 'alpacagnome', 'RealAdonis2', 'Freeatlast112015', 'wilderfulford', 'Insxnity', 'vikmaychib', 'youlostthewarwehrs', 'The-Human-Caterpie', 'anecdot11', 'WhiteNoiseWhiteNoise', 'audobot', 'Punisher1942', 'lazarini', 'ShitpostBot4700', 'A_FluteBoy', 'AuhsojSivart', 'anotherdrink', 'PolarBearIcePop', 'Olav_Grey', 'Cowjoker', 'confirmSuspicions', 'twintowersrubble', 'Pomnom', 'nextgamegod', 'notheusernameiwanted', 'rockiesfan4ever', 'Mukhasim', 'Maxrdt', 'glenbot', '_Hnnng_', 'Leben_', 'DroidAG', 'UrgotOniichan', 'Joshgill123', 'BelowDecksWatch', 'ThatsMyHoverboard', 'KOWguy', 'ShiningConcepts', 'MethMouthMary', 'Slow_motion_riot', 'raijuJ', 'SundayNightExcursion', 'NuggetBlazers', 'jgoodma3', '13374L', 'omnear', 'Chesterbb', 'noxnoctum', '2manyredditstalkers', 'just_a_talking_head', 'RoseM20', 'PurpleScorpio', 'ergatory', 'otherbard', 'Cremacious', 'F1zzzzzzzzz', 'NateTheGreat14', 'The_blind_swordsman', 'Cult7Choir', 'almondbuttertoast', 'stamatefilip', 'Izlandi', 'SaintSayonara', 'St_Schaf', 'deathviahype', 'Jdude1', 'filij', 'Dynamiklol', '40splishsplash', 'wannabecameraguy', 'black-trash-man', 'geldof_is_a_pox_too', 'badcompanygg', 'stockingcummer', 'SmallUnitTaticsPlea', 'BritishEnglishPolice', 'BotsByLiam', 'Yonaimy', 'Gamer3427', 'PowerfullySimple', 'meowpass', 'IOUAndSometimesWhy', 'theLAZYmd', 'formeraide', 'cork_dork', 'jedberg', 'ketralnis', 'davean', 'noswad4', 'shadydentist', 'helm', 'Inri137', 'Aniridia', 'FlaviusValerius', 'Cliff254', 'bluecoconut', 'leaffall', 'nallen', 'kajarago', 'ImNotJesus', 'BugeyeContinuum', 'Surf_Science', 'MRIson', 'Silpion', 'iorgfeflkd', 'Jobediah', 'medstudent22', 'NonNonHeinous', 'Dr_Peach', 'paradoxical_reaction', 'jeargle', 'Soul_Rage', 'squidboots', 'Astrokiwi', 'Subgranules', 'Robo-Connery', 'waywardminer', 'troixetoiles', 'doggy_styles', 'ForgottenPhoenix', 'adoarns', 'Grep2grok', 'chrisbaird', 'DijonPepperberry', 'Former_FA', 'bellcrank', 'cdcox', 'xrelaht', 'Golden-Death', 'BunBun002', 'blufox', 'EagleFalconn', 'firedrops', 'FinalDoom', 'shadow1515', 'evrae', 'Wrathchilde', 'shalalam', 'Kursed_Valeth', 'S_D_B', 'jlozier', 'soccernamlak', 'brtw', 'crappysurfer', 'fhi08', 'sinenox', 'diazona', 'PapaMancer', 'LuklearFusion', 'organiker', 'Mizar83', 'Tetrazene', 'coldfrontin', 'HippocriteOfCos', 'futrawo', 'Neurokeen', 'LeChatelier', 'thearn4', 'XIllusions', 'vaderscoming', 'mattc286mod', 'feedmahfish', 'CyaNBlu3', 'glr123', 'Neko-sama', 'bass_voyeur', 'tindolos', 'MIBPJ', 'Scienceonyourface', 'cerlynn', 'melikeyguppy', 'ReginaldIII', 'Bioman35353', 'tvw', 'forest_fire', 'mmtrebuchet', 'ihateirony', 'nousernamesavailable', 'Justiceforallhobos', 'flutterfly28', 'FluorescentBug', 'medgno', 'just_shaun', 'Histidine', 'TheOriginalShummy', 'propargyl', '99trumpets', 'mobilehypo', 'IceBean', 'bheklilr', 'CompMolNeuro', 'Ariocabron', 'AGreatWind', 'dazosan', 'Banach-Tarski', 'Dolphlungegrin', 'ablindmansees', 'dinoparty', 'Aerothermal', 'BigSaggyWeenis', 'chrisms150', 'billnyesbowties', 'JoeCoder', 'ljvillanueva', 'kelvindegrees', 'Laughing_Chipmunk', 'MoreBeansAndRice', 'hobbycollector', 'ktbug1987', 'micromonas', 'msgbonehead', 'lightamanonfire', 'Kegnaught', 'bethisimo', 'danc1005', 'bopplegurp', 'bornNraisedNfrisco', 'avboden', 'SilverSnakes88', 'rhoffman12', 'Pandamonium888', 'SDH500', 'sasmon', 'Oogaman00', 'tigertealc', 'nucl_klaus', 'susscrofa', 'Yankee_Gunner', 'Rodbourn', 'nocaph', 'themeaningofhaste', 'protonbeam', 'TrevelyanISU', 'omnilynx', 'Providang', 'perpetualgroove', 'Originholder', 'PKThundr7', 'waterpew', 'Stangmeister', 'Tiyrava', 'panzerliger', 'ProfessorLional', 'Fishing-Bear', 'aznsk8s87', 'Fenring', 'RadicalEucalyptus', 'ratwhowouldbeking', 'manusmad', 'DrGar', 'xartemisx', 'Izawwlgood', 'heb0', 'Quoonit', 'GingerAnthropologist', 'jalees', 'Hindsight_DJ', 'TimeGrownOld', 'QComputers', 'DrRonnieC', 'bigleaguechyut', 'neubroscience', 'masayaanglibre', 'cge', 'AJistheGreatest', 'MentalMarketer', 'mdbrooks', 'dailyskeptic', 'whiteknight521', 'RooMagoo', 'NotoriousSIG', 'lysozymes', 'squarlox', 'hebug', 'thgibbs', 'cefpodoxime', 'ntlaxboy', 'ididnoteatyourcat', 'thatguydr', 'jad2121', 'Camerongilly', 'wighty', 'ahoff', 'onacloverifalive', 'SirT6', 'zlevine', 'WolfDoc', 'laziefred', 'MattTheGr8', 'reciprocalhokie', 'softmatter', 'krom0025', 'mjmed', 'Solfire', 'Psionx0', 'StonedPhysicist', 'risingyeast', 'biledemon85', 'tupper', 'twentyafterfour', 'unfallible', 'Jjameyson', 'club_med', 'ironicname', '_sword', 'ohsnapitsnathan', 'nero_sable', 'amaurer3210', 'Donjuanme', 'Clever-Username789', 'zell298', 'electrostaticrain', 'funknjam', 'naturenet', 'steyr911', 'Ronmeista', 'shlam16', 'karlrocks23', 'FenixAK', 'lugnut92', 'Magick-NL', 'coreymg', 'bradleyvoytek', 'k4ylr', 'PapaNachos', 'trebuday', 'ITwitchToo', 'grandweapon', 'Lancaster1983', 'angleglj', 'osprey413', 'Tweeeked', 'kaeli42', 'footcreamfin', 'elfofdoriath9', 'itsalldark', 'Frozenshades', 'theschwaa', 'DemonKingWart', 'Deightine', 'r_plantae', 'myrandomone', 'ar312', 'ecb29', 'WearMoreHats', 'AeroLightning', 'BearcatChemist', 'julio1990', 'punkgeek', 'persiansown', 'SpookyShyGhosty', 'DJBunBun', 'Tigeris', 'McFlare92', 'myersjustinc', 'mdz92', 'nastyasty', 'chulaire', 'MarlDaeSu', 'frankchn', 'BSinZoology_LOL', 'harkatmuld', 'carmacae', 'Cnp113', 'FeetSlashBirds', 'gimbb14', 'entrancedzeda', 'Bffls', 'Draco12333', 'korkow', 'kcripe', 'xhlmzr', 'gohanssb', 'txcotton', 'First_Child', 'yanminor', 'GnomeCzar', 'Todd_The_Sailor', 'cjbrigol', 'Vorticity', 'rigormorty', 'urides', 'FiringMechanism', 'reccos7', 'FizzedInMyPantz', 'uhkhu', 'der1n1t1ator', 'Fenzik', 'Belteshassar', 'ammzi', 'RectalTourist', 'Powgow', 'footiebuns', 'marleythebeagle', 'ttotheodd', 'ricecooking', 'saad93', 'idm04', 'ursusoso', 'Heartsong_', 'TheMuslinCrow', 'FogItNozzel', 'pjwally', 'tioguerra', 'KalterTod', 'likenedthus', 'lambonius', 'pyroaxis', 'Viros', 'rubicon_crossed', 'Meatballosaurus', 'Tenaciousgreen', 'st_aldems', '_Rocha', 'askantik', 'sopunny', 'the_mullet_fondler', 'wil3', '1nVu', 'IcarusFalls15', 'KrishP93', 'DrDaniRowles', 'Lihadrix', 'IAmVeryStupid', 'The_Benthic_Zone', 'EntropyXe', 'OldBoltonian', 'morgenzi', 'Sublyminality', 'olorwen', 'kevjohnson', 'GodoBird', 'Bagsdontgoinpipes', 'amenadiel', 'aliertugr', 'LazySamurai', 'godspeed413', 'WalkInLove', '0x12is18', 'Vaines', 'arwidcool', 'dr_stogie', 'gimpwiz', 'hennirl', 'whyamiupthislate', 'that_engineer', 'corner_case', 'cardboard_dinosaur', 'Podo13', 'occamsshavecream', 'Pennyw1se', 'p1percub', 'DJHellduck', 'wojx', 'jsto1886', 'kroxywuff', 'vini710', 'TheLabMix', 'RaoOfPhysics', 'Flazer', 'sup3r_hero', 'physicswizard', 'Mister_Bloodvessel', 'breakfast144', 'Give_Me_Cash', 'TyTAF', 'Milwo', 'compaqdrew', 'Amp4All', 'JHappyface', 'chemnerd123', 'KMKtwo-four', 'moistpantyhose', 'K04PB2B', 'Pluckerpluck', 'kerovon', 'Mercarcher', 'Algee', 'pkbowen', 'CampBenCh', 'ecopoesis', 'Finie', 'SirBaconPants', 'pants2422', 'Maxim_Makukov', 'Vic_n_Ven', 'Strife0322', 'frostickle', 'puckishfiend', 'danisnotfunny', 'Nerobus', 'jaldmn', 'LOOKITSADAM', 'QuantumFX', 'captainjon', 'puterTDI', 'sewerbass', 'fsmpastafarian', 'belvedere9', 'coolkid1717', 'shadowwork', 'Veruka_Salt', 'sherkaner', 'alok99', 'rasputine', 'slowlyslipping', 'Cletus_awreetus', 'phobiac', 'thisdude415', 'Pilipili', 'paradoc', 'Kaunigmna', 'Chawp', 'humblerodent', 'bijibijmak', 'azendel', 'ffiarpg', 'lacrosse1991', 'lasserith', 'Eltargrim', 'RayDeemer', 'groshh', 'perfekt_disguize', 'd4rch0n', 'price0416', 'icecreambones', 'Sadnot', 'PurplePotamus', 'BizCaus', 'TehFono', 'ShakesJr', 'galaxxus', 'purpletraitor69', '00malibubarbie00', 'downvote_vortex', 'lheritier1789', 'canekicker', 'Not_that_kind_of_DR', 'friendsanemones', 'allanbrokeit', 'fatfreemilkman', 'omega2four', 'Cobrajr', 'Ashewyn', 'pwr22', 'Ratmonger', 'Supersly1992', 'medigun', 'strongbob25', 'FoolsErrend', 'olhmr', 'crawlingfasta', 'marchaeus', 'Phrenchie', 'DemMangos', 'da6id', 'AdrianBlake', 'Athaza', 'The_Dark_Kniggit', 'drpeterfoster', 'owiseone23', 'invirtibrite', 'odsquad64', 'DanielSank', 'breathingcarbon', 'TheObservantPheasant', 'rdiaz022', 'swag_train', 'ZombieNurse', 'mziff', 'MotherProfessor', '3mpir3', 'AllHailScience', 'bea_bear', '_kb', 'Apollo506', 'ProfessorJNFrink', 'DrSta', 'aLightBraise', 'Ape1', 'limeflavoured', 'Evelyght', 'muz911', 'Slimy_turtles', 'ima_mo', 'darkPrince010', 'Frobeniu5', 'Goatsarebest', 'SilverSlothmaster', 'j_mcm', 'ZeroTo325', 'nj47', 'brandonjs', 'MoltenSlag', 'Skajadeh', 'shibbles_', 'Cicerho', 'pinksultana', 'goodtincture', 'neuro_neurd', 'girlborealis', 'WhatTheHorcrux', 'Ax3m4n', 'beachdriving', 'apostate_of_Poincare', 'indigoC', 'YouHadItComing', 'Scruffs', 'childpsych', 'zian', 'ComputerPlayerOne', 'shorterthantherest', 'Shion314', 'vstreva', 'Iron_Kosmonaut', 'woodsbookswater', 'gammadeltat', 'ma6ic', 'ACDCrocks14', 'Comoquit', 'BlackManonFIRE', 'Callif', 'connormxy', 'M1st3rYuk', 'DrDueSs', 'Paranemec', 'RealityApologist', 'mutatron', 'Fighting_EBV', 'Aarcc', 'Artymess', 'bonez656', 'Justtryme90', 'MartyMcSmartyPants', 'PlantedDerp', 'biocuriousgeorgie', 'Ptitlaby', 'saviourman', 'ncarducci', 'Gendibal', 'PM_ME_YOUR_DRUNK_PIC', 'LordQuagga', 'sifav6', 'Halloysite', 'dbarbera', 'Doomhammer458', 'Ceptyr', 'marsyred', 'violetdragonfly', 'Dennis_Langley', 'Typrix', 'thatisgrossman', 'AnonSocialist', 'am_i_wrong_dude', 'cronbachs_beta', 'engineerme9', 'PeruvianHeadshrinker', 'quickclickz', 'xtalicious', 'WallCatticus', 'matthew_green', 'ThePr1march', 'ookwrd', 'lisasaurusRex', 'raven12456', 'shenuhcide', 'poltyy', '_disguy', 'Optimoprimo', 'lablizard', 'rutiene', 'PHealthy', 'WaitingToTakeYouAway', 'bupps5', 'texaspsychosis', 'cortex0', 'bcain204', '96385', 'flyawaytoday', 'mherr77m', 'BeerDuh', 'Zarrah', 'dadrummond', 'skrenename4147', 'calling_you_dude', 'xmasjacksonflaxon', 'GhostofJeffGoldblum', 'MDmondays', 'JerkfaceMcGee', 'falstaf', 'nygreenguy', 'quattro', 'Entity420', 'AsAChemicalEngineer', 'catsofnewyork', 'GodlessScientist', 'Kativla', 'dukec', 'RespekKnuckles', 'shwag945', 'tendorphin', 'EpicTRC', 'supernova1992', 'Simkin-PhD', 'Farseli', 'rileyluck', 'Nodonn226', 'ABQPHvet', 'guttata', 'MrSquig', 'GentlemanGallimaufry', 'KakarotMaag', 'limbicslush', 'kaztrator', 'mishellular', 'gingerjojo', 'thelordplatypus', 'Quant_Liz_Lemon', 'anlumo', 'nedlinin', 'pensivebadger', 'slingbladerunner', 'dildormastiff', 'The21stPotato', 'MrPoppersPuffins', 'brom333', 'gm2', 'kblaney', 'toolatealreadyfapped', 'oneguy2008', 'gameoftomes', 'FridaG', 'clrokr', 'pasimako', 'joevector', 'BurkeyAcademy', 'helluvascientist', 'rs039', 'jimi_sanchez', 'forthewolfx6', 'IamPhoReal', 'kyew', 'catman2021', 'notinsanescientist', 'jlynnrd', 'Jmadman311', 'drjonesenberg', 'zjs', 'jasondossett', 'shiruken', 'uke_cupcake_cwon', 'SquirrelNoises', 'Strayphoenix6', 'funkiknight', 'Pavlovs_Mutt', 'shadowfu', 'WhereAmIGoingFrom', 'clavulanate', 'counters', 'Ruddeck', 'pcinvivo', 'xSacredLotus', 'boxkat', 'raywinray', 'niveknus', 'dsh1234', 'mrmojorisingi', 'subtly_irritated', 'nukedetectorCA94612', 'RhonaStuart', 'runlifteatsleep', 'duncanstibs', 'past_is_future', 'Anzerou', 'sckulp', 'doseid', 'hadesflames', 'trainwreck42', 'e_swartz', 'tlcooper2', 'TehSquid', 'Digging_For_Ostrich', '_Rooster_', 'THHUXLEY', 'NeedMoreCaffeine', 'Devidose', 'jjberg2', 'GTxCiviL', 'wickedsweetcake', 'will592', 'TheShawnAvery', 'asmi_kyle', 'jessegammons', 'klmarshall', 'rtphokie', 'Forsaken_Bulge', 'Genmutant', 'crustymech', 'cos', 'ttallwr', 'shlotchky', 'Hindu_Wardrobe', 'Kenley', 'paxmontis', 'KakoiKagakusha', 'bigmansam45', 'rseasmith', 'StringOfLights', 'honkeycorn', 'FatRatSatCatBat', 'pettervikman', 'SipTime', 'freevortex', 'JaredOnly', 'gupe', 'DragonFive', 'Yuki-no-Kage', 'ryanjgill2', 'DischordN8', 'jeffykins', 'trickyspaniard', 'sterben', 'StephanLewandowsky', 'Multigrain9867', 'femanonette', 'beastdoctor', 'mazca', 'juicebox_', 'ccoffrin', 'Twitch89', 'womanwithbrownhair', '1254', 'adenovato', 'sexybeastscotty', 'awinnerneedsawand', 'lovetoujours', 'Wiggly_Sparklez', 'acl5d', 'practically_sci', 'warwick607', 'hubris105', 'daboose', 'canoodle_me', 'ElGeek', 'WELLinTHIShouse', 'MockDeath', 'carljoseph', 'Beaun', 'rifenbug', 'TheSeventhCircle', 'kmarple1', 'jayco', 'godsenfrik', 'Alantha', 'hutima', 'Dannei', 'milias3303', 'bravo_bravos', 'Dr_T_Brucei', 'lucaxx85', 'rhiever', 'otasyn', 'B1ack0mega', 'SmiTe1988', 'michiexile', 'UnidanX', 'bongoherbert', 'invisiblewardog', 'drktmplr12', 'Mbando', 'Leena52', 'eigenvectorseven', 'Qwertysapiens', 'Zeliss', 'karptonite', 'neurobeegirl', 'willandbeyond', 'Kai_', 'tigerscomeatnight', 'nubcakefactoryy', 'Ace-of-Spades88', 'StigDoesntFart', 'CptSnowcone', 'kaleidoscopic_prism', 'RexScientiarum', 'kma181', 'aayush387', 'apjashley1', 'gingerlovingcat', 'Tripudelops', 'plorraine', 'pessimistic_chemist', 'qtx', 'askLubich', 'Glaselar', 'superhelical', 'Nostalgia00', 'thenaterator', 'Phobos1393', 'Corruptionss', 'USKira', 'IronMaiden0329', 'iRyanLV', 'jsawler', 'NanoChemist', 'ProfessorSoAndSo', 'jpgray', 'glr_mod', 'life-finds-a-way', 'kelminak', 'Carl_Sagan21', 'whatthefat', 'kamronb', 'subito_lucres', 'monkeydave', 'smbtuckma', 'flagrantfoul', 'avara88', 'fireking99', 'uber_poutine', 'BiologyIsHot', 'RedLeg13', 'tlubz', 'jolindbe', 'ksarma', 'Thats___Interesting', 'chad_brochill69', 'bob8436', 'VesperJDR', 'Grabthelifeyouwant', 'basilect', 'wljay', 'TheSuperSax', 'DrunkPanda', 'kfreed12', 'drsjsmith', 'ghjm', 'AladeenAlWadiya', 'wadss', 'BlazingB', 'Snowtsuku', 'sahelanthrope', 'duhnuhnuh_duhnuhnuh', 'thermos26', 'GaMe_PTY', 'mixedmath', 'Rather_Unfortunate', 'Rollow', 'erlendig', 'jadentearz', 'emsmale', 'learningtheflowers', 'TheSlaughterrr', 'DrShrime', 'fubar', 'Vogtster', 'bacardi_gold', 'jswhitten', 'IAmRadish', 'heidavey', 'midnyghtchilde', 'tonusbonus', 'AllButImpossible', 'lawdy_lawd', 'Lunares', 'valiantw', 'njggatron', 'IonicPenguin', 'Real_MikeCleary', 'firststop__svalbard', 'Shrinking-Nox', 'filolifts', 'DrIblis', 'DiscursiveMind', 'AltoidNerd', 'fantalemon', 'liamkun', 'Scrennscrandley', 'qwop271828', 'NicoleASUstudent', 'chriscpritchard', 'Jonstrocity', 'Kaell311', 'cleverlikeme', 'ponchoskunk420', 'equationsofmotion', 'ms_g_tx', 'FrothyWhenAgitated', 'Pergamum_', 'SCAtomika', 'Jv01', 'roatit', 'Heuronian', 'ukez', 'shiftt', 'kimonoko', 'LiveMaI', 'jaythespacehound', 'cjsed', 'David_Barros', 'kriegeson', 'elvin_estrada', 'bourbonandcoffee', '_chrisc_', 'Naturean', 'HeyLookJollyRanchers', 'MCsmalldick12', 'biohazmatt', 'Fear_ltself', 'Doowstados', 'DoggedlyDauntless', 'ndahlwilawina', 'Adeelinator', 'SergejButkovic', 'AlNejati', 'WRCousCous', 'theradek123', 'Chupacabrasaurus', 'prophet1022', 'msymeonides', 'jono199', 'PikminGod', '-pba', 'CU_Beaux', 'yutripn', 'DrCBob', 'donuts500', 'FarazR90', 'Royness', 'katydid15', 'VictorVenema', 'chamolibri', 'mofosyne', 'VeryLittle', 'PossumKing', 'natematias', 'cut_chemist_', 'soupvector', 'CD11cCD103', 'Icayna', 'DavidAJoyner', 'DNAhelicase', 'nate', 'Lewin4ever', 'EarwaxUK', 'DontReinventAspirin', 'CynicKitten', 'GrizzlyRhyme', 'immasciencit', 'AudiWanKenobi', 'm1l4droid', 'quinobequin', 'teekling', 'televoxy', 'thejacob5', 'EdaciousE', 'Sugarpeas', 'ecooevo', 'colditzjb', 'RogueJD', 'ThomasMarkov', 'NV_Geo', 'Jimbo762au', 'GodAImighty', 'Im_A_Ginger', 'BlackTieButtPlug', 'rustypete89', 'OSUCOWBOY1129', 'jamimmunology', 'MademoiselleEcarlate', 'PlanetGoneCyclingOn', 'swimfast58', 'JenniferColeRhuk', 'orangejulius', 'Forgott3n', 'herman3thousand', 'vinnyt16', 'FataOne', 'nosliwhtes', 'halfshellheroes', 'ncahill', 'EconMan', 'Jb191', 'FullHavoc', 'jetbent', 'TwinTipZ', 'fuzzymidget', 'LokiAir', 'rslake', 'VvermiciousknidD', 'Ltol', 'KrAzyDrummer', 'BecauseChemistry', 'evilvee', 'Elhehir', 'davedude82', 'Bull3t_Th3ory', 'Iamamanlymanlyman', 'tilman2015', 'crudent', 'piadista', 'Micro_M', 'MrRichyy', 'khaeen', 'papasmurf61', 'nyrangers30', 'polymorphicprism', 'with2as', 'gmbrown21', 'LeviathanLily', 'EpicScience', 'SomberForest', 'III-Nitrides', 'dr_ajc', 'OSUBrit', 'glasscasket', 'fabulasator', 'Andromedonian', 'askja', 'arsenalca', 'AmateurHero', 'SFRG', 'Rhodopsin_Less_Taken', 'cc_cyanotephra', 'Austion66', 'AlesioRFM', 'zach_255', 'AlexWIWA', 'Ksco', 'fokaimori', 'HeraticAssassin', 'curiousbuddha', 'tlee275', 'andumar', 'LoveOfProfit', 'Trolske', 'NikolaTwain', 'Nepluton', 'Lyucit', 'satan_loves_us', 'Bollaa', 'D-o-Double-B-s', 'blot101', 'funkmatician2014', 'Misoura', 'SummerInPhilly', 'jellymanisme', 'WKCLC', 't3hasiangod', 'gonefishn', 'tizzy62', 'mpcfuller', 'Sillocan', 'sadpeanut', 'biopsych', 'Syn-Xerro', 'jamnjustin', 'awrf', 'Sjonesej0', 'fasterbeef', 'ReMiiX', 'gotang', 'JupiterXX', 'BeSkepticalOfAll', 'qgomega', 'driscoll97', 'mattv8', 'Grantangry', 'halborn', 'kidcodiwise', 'DonQuesoDeLaVega', 'chendamoni', 'riptide13', 'QuantumKittydynamics', 'Nheea', 'TelemarketingEnigma', 'DalisCar', 'S0K4R', 'ohbyabbyjoy', 'synbiologist', 'Lord_Noble', 'medguyds', 'Shankovich', 'DuckHuntHotDog', 'Sexysilvia', 'ktm9292', 'green_scream', 'peterwc', 'RuhRuhRogerThat', 'imVINCE', 'greenging', 'DaKelster', 'simonsky', 'dtmtl', 'hilldr', 'MattEOates', 'rockjoc', 'Civ4ever', 'abloomquist', 'FriendlyYak', 'USModerate', 'BritishEnglishPolice', 'MilkyWitness', 'Dillonmedlock', 'roderikbraganca', 'silverpony24', 'cardmage7', 'Arthur233', 'danesgod', 'sierrafourteen', 'Eitoku_K', 'nathancurtis11', 'Grebuman', 'audma', 'fiafia127', 'ccesare', 'Ableo', 'mgrau', 'denzil_correa', 'StellaAthena', 'charmgoggles', 'superaub', 'raulf2012', 'sureshkari', 'oloaptacis', 'durpfursh', 'NylonStark', 'AnakinGabriel', 'aoifesuz', 'Nishymaniac', 'Badd_', 'artfuldawdg3r', 'morningsunbeer', 'GregoryEAllen', 'jayhigher', 'TheStevenZubinator', 'thisisallme', 'MagicWhistleca', 'kosanovskiy', 'jackalope3000', 'saluff', 'tyquig', 'skte1grt', 'VictorianPornStar', 'kougabro', 'Kopuk_Ucurtma', 'rootedVette', 'jay462', 'michaelrw10', 'DrZack', 'Young_Zaphod', 'Dizzy_Science', 'MrMango786', 'gobakhan', 'dmart030', 'english06', 'discofreak', 'divvyflax', 'mmm_toasty', 'Thermoelectric', 'viking_', 'WellAsk', 'TheHye', 'edcba54321', 'mandragara', 'SableProvidence', '_beeb', 'BokononI9', 'Willmono7', 'Hooch180', 'danthedad', 'IrishAmericanWhiskey', 'HerbziKal', 'Flat_prior', 'Poxdoc', 'vkells', 'mvea', 'Beake', 'I_am_Searching', 'twenafeesh', 'qjornt', 'jonathon481', 'daob_stats', 'Cqcmneem', 'prestatiedruk', 'moderatelyinspired', 'dorkula02', 'testdethomas', 'tragicmonsters', '_whatevs_', 'takes_joke_literally', 'edwinksl', 'slowandsteadylearner', 'squidonthebass', 'HeinzHeinzensen', 'petite-vest', 'amicitas', 'CaffeineViking', 'spacemoses', 'Flikmybik', 'Infectious_Pen', 'rainatur-rainehtion', 'bblum', 'wolfman29', 'Yawnn', 'mcorah', 'Penultima', 'nedolya', 'chweris', 'Destructopuppy', 'imobile_walrus', 'jbspivey', 'jvsanchez', 'aluin13', 'Music_Lady', 'Belsyre', 'JordanLewisBurke', 'spud1988', 'mermaidmel16', 'TheSilverSoap', 'kshelley', 'Heelincal', 'I_AM_A_SMURF', 'danneh02', 'waldoze', 'PrehistoricAcademic', 'jeriatrik', 'The_Real_Roberts', 'lumphie', 'priceless277', 'DroopyTitz', 'HNSUSN', 'karantza', 'MobRould', 'millenial_simulacra', 'Apex_Armadillo', 'ADD_MORE_BOOSTERS', 'hinomarucurrydisc', 'razoman', 'cg1bs', 'almightybob1', 'Communist0', 'plasTUSK', 'Unlikely_Explanation', 'jama211', 'orangesodasmurf', 'Lotete', 'Thedarkfly', 'OyeBenny', 'peacelovesquirrels', 'thecomputerscientist', 'imaBCBAima', 'AngeloUMD', 'Xeronate', 'Etroyer', 'penguinberg', 'Alionroars', 'Phenomenem', 'Rompalamp', 'LifesMellow', 'greenbeattle', 'contraman7', 'WontChupBru', 'raham135', 'Angryferret', 'binkpits', 'ncFoCo', 'dkadavarath', 'BlamBitchPudding', 'sainsburys', 'SametTheTurk', 'Karakanov', 'Prime-Ideal', 'Pegaman', 'dan-jer-ous', 'PvsNP_ZA', 'Ruq', 'd3v_nu11', 'dendiz', 'imlink1', 'omerc10696', 'Pituophis', 'Satanical_Mechanical', 'life_b4_death', 'jkotwa93', 'chrisamiller', 'linuxrogue', 'Russellonfire', 'ChaRules', 'ItmaybeADD', 'ThatNeonZebraAgain', 'joshuacampbell', 'ozenmacher', 'imnottechsupport', 'irishfan3124', 'OneAviatrix', 'bcpolander', 'BadMedStudent', 'gmwag73', 'th3sc13nt1st', 'ferngu11y', 'dreday8', 'DontchaKnoMeow', 'WackyWavyTube', 'Gehwartzen', 'Torandi', 'vestigialstructures', 'Mattyice128', 'Prof--G', 'Co60', 'At_least_im_Bacon', 'gu_doc', 'priyology', 'MelodicMuppet', 'Hirudinae', 'ppkhoa', 'Reallyhotshowers', 'TrueDylan', 'RomeRawr', 'boiler725', 'Weaselpanties', 'bodaciousbum', 'Evictus', 'DrWYSIWYG', 'Kvothealar', 'VallenderLabs', 'xeiss', 'Et_in_America_ego', 'pandasgorawr', 'Loudnthumpy', 'alwaystooupbeat', 'Kerwin15', 'ga_ramirez', '-fry-', 'pyrotechnicist', 'FillsYourNiche', 'mccavity', 'goodgeology', 'jramification', 'engine__Ear', 'ickynickie', 'ausernametoforget', 'bearxfoo', 'koalalegend', 'he_did_the_math', 'timyt01', 'snikks', 'sciteach44', 'Virian', 'pedroivo000', 'Razor1834', 'LarysaFabok', 'pseudocubic', 'Jake_Science', 'mso888', 'jddbeyondthesky', 'The_Old_Wise_One', 'haako40', 'KAW641', 'Hanmin147', 'optimalg', 'MtGroovius', 'eeeboo', 'Voltage917', 'davidjricardo', 'anonymous9998', 'AdamBermingham2916', 'XW_Unicorn', 'CHeLSeAr77', 'chilled2m', 'falcon5s', 'ThaBzKneez', 'redzin', 'EtTuLibri', 'Dont_Mess_With_Texas', 'Chemicalsockpuppet', 'amischbetschler', 'Zay2k', '_toboggan', '030503riff', 'painfulplumber', 'portiafimbriata', 'medictao', 'jperl1992', 'couchburner27', 'ehadoux', 'Itzwvvy', 'RedCheekedSalamander', 'PlasticWhisperer', 'diamagnet', 'jakbob', 'BCJ_Eng_Consulting', 'MissBee123', 'p00rleno', 'pophet', 'maximum_cats', 'Euriclea', 'Matt_Shatt', 'Tummy_Butter', 'drdre398', 'seaikh', 'mosquitoman45', 'christopherwrong', 'Petewoolley', 'bedrock_movements', 'HortemusSupreme', 'jsalas1', 'holdencawffle', 'KholdStare88', 'redditicus', 'thevandel', 'Cersad', 'sillysymposiums', 'arcata22', 'Atom612', 'asbruckman', 'hail_taco', 'NavSock', 'helicalslime', 'sourav93', 'philoscience', 'FakeyFaked', 'AEM74', 'n8henrie', 'Prof-', 'iguessimnacef', 'BounceBack-', 'Mishulo', 'rebels8040', 'Bloodlustftw', 'ikatono', 'MsKanta', 'poon-is-food', 'RayderTom', '__tdido__', 'gatech03'])))
  138.  
  139. all_ones = bots + normalusers
  140.  
  141. challenges = [11,2,3,5,25,3523,25,23,5,235,25]
  142.  
  143. blacklisted = ['askouija', 'test', 'freekarma4you']
  144.  
  145. def gatherLong(user, comlist):
  146. pass
  147.  
  148.  
  149.  
  150. class botSuspect():
  151. def __init__(self, user):
  152. levels, spread, uniqComs, ldist, repetitive, breply, parentlist, lkarma, nPosts, comlist = gatherData(user)
  153. self.length = len(comlist)
  154. if len(comlist) >= 15:
  155. print(parentlist)
  156. self.breply = breply
  157. self.lkarma = lkarma #high values are bad
  158. # self.age = age: DO NOT USE IN PRODUCTION
  159. self.botInName = botInName(user)
  160. self.repetitive = repetitive
  161. self.ldist = ldist
  162. self.uniqComments = uniqComs
  163. self.nPosts = nPosts
  164. self.spread = spread
  165. self.rootCheck = levels
  166. self.data = self.generateData()
  167. def generateData(self):
  168. return [self.breply, self.lkarma, self.botInName, self.repetitive, self.ldist, self.uniqComments, self.nPosts, self.spread, self.rootCheck]
  169.  
  170.  
  171. from termcolor import colored
  172. import random
  173. import numpy as np
  174.  
  175. def finalize(inpt):
  176. if inpt == 0.5:
  177. return 0
  178. else:
  179. return(round(inpt))
  180.  
  181. def work(comment):
  182. try:
  183. comment.refresh()
  184. except:
  185. print("Comment deleted! Skipping.")
  186. return
  187. for repl in list(comment.replies):
  188. try:
  189. if 'bot' in repl.body.lower():
  190. score_2.append(1)
  191. break
  192. except:
  193. pass
  194.  
  195.  
  196. def botReplyTop(user):
  197. top_using = [x for x in r2.redditor(user).comments.top(limit=10)][0:3] + [x for x in r3.redditor(user).comments.top(limit=10)][3:6] + [x for x in r4.redditor(user).comments.top(limit=10)][6:10]
  198. t_list = []
  199. global score_2
  200. score_2 = []
  201.  
  202. for j in top_using:
  203. t = threading.Thread(target=work, args=(j,))
  204. t.daemon = True
  205. t_list.append(t)
  206.  
  207. for x in t_list:
  208. x.start()
  209.  
  210. for x in t_list:
  211. x.join()
  212.  
  213.  
  214.  
  215. return len(score_2)
  216.  
  217.  
  218. levDists = []
  219.  
  220. def levDist(str1, str2):
  221. print("Here")
  222. print("Starting with {} and {}".format(len(str1), len(str2)))
  223. if len(str1) == 0: return len(str2)
  224. if len(str2) == 0: return len(str1)
  225.  
  226. levMat = np.zeros( (len(str1)+1, len(str2)+1) )
  227. levMat[:, 0] = [x for x in range(len(str1)+1)]
  228. levMat[0, :] = [x for x in range(len(str2)+1)]
  229.  
  230. for x in range(len(str1)):
  231. for j in range(len(str2)):
  232. if str2[j] == str1[x]: levMat[x+1, j+1] = levMat[x,j]
  233. else:
  234. levMat[x+1, j+1] = min(levMat[x, j+1], levMat[x+1, j], levMat[x, j]) + 1
  235.  
  236.  
  237. levDists.append(1.0 - float(levMat[-1, -1])/float(max(len(str1), len(str2))))
  238. print("End")
  239.  
  240. def levDistPer(comlist):
  241. for x in levDists: levDists.remove(x)
  242. flist = [j for j in comlist][:]
  243. lev_thread_list = []
  244. x = 0
  245. while x < len(flist)-1:
  246. t = threading.Thread(target=levDist, args=(('' if len(comlist[x].body) <= 300 else comlist[x].body.lower()[:150]) + comlist[x].body.lower()[-150 if len(comlist[x].body) > 300 else 0:], ('' if len(comlist[x+1].body) <= 300 else comlist[x+1].body.lower()[:150]) + comlist[x+1].body.lower()[-150 if len(comlist[x+1].body) > 300 else 0:], ))
  247. t.daemon = True
  248. lev_thread_list.append(t)
  249. x+=1
  250. for lev_t in lev_thread_list:
  251. lev_t.start()
  252. for lev_t in lev_thread_list:
  253. lev_t.join()
  254.  
  255. try:
  256. print(float(sum(levDists))/float(len(levDists)))
  257. return float(sum(levDists))/float(len(levDists))
  258. except:
  259. return 0
  260.  
  261.  
  262.  
  263.  
  264. def botInName(user):
  265. return 1 if 'bot' in str(user).lower() else 0.01
  266.  
  267.  
  268.  
  269. def getSameLevels(user, comlist):
  270. # print(user)
  271. total = 0
  272. tlevel = 0
  273. for comment in comlist:
  274. total += 1
  275. if comment.is_root:
  276. tlevel += 1
  277. pcount = float(tlevel)/float(total)
  278. return 0.01 if pcount == 0 else pcount
  279.  
  280.  
  281. def keyWordPres(user, comlist):
  282. tcount = 0
  283. hopeful = {"bot":0, "source code":0, "feedback":0, "FAQ":0, "*":0, "**":0, "^":0}
  284. for comment in comlist:
  285. tcount += 1
  286. for item in hopeful:
  287. if item in comment.body.lower():
  288. hopeful[item] += 1
  289. hopeful_sort = sorted(hopeful.items(), key=operator.itemgetter(1))
  290. return 0.01 if float(hopeful_sort[-1][1])/float(tcount) == 0 else float(hopeful_sort[-1][1])/float(tcount)
  291.  
  292.  
  293. def isRepetitive(user, comlist):
  294. if len(comlist) == 0:
  295. return 0
  296. x = 0
  297. uniqueComments = []
  298. flist = [j for j in comlist]
  299. flength = len(flist)
  300. freqDict = {}
  301. while x < len(flist):
  302. aldone = []
  303. bad = stopwords.words('english') + stopwords.words('spanish') + stopwords.words('portuguese') + list(string.punctuation)
  304. content = flist[x].body.replace("["," ").replace("]"," ")
  305. if content.lower() not in uniqueComments:
  306. uniqueComments.append(content.lower())
  307. for key in list(string.punctuation) + ['\n']:
  308. content = content.replace(key, '')
  309. words = [i for i in content.lower().split(' ') if i.replace("'s",'').replace("'nt",'').replace("'ve",'').replace("'ll",'').replace("'m",'') not in bad and i.strip("'`").strip('`') != '']
  310. for thing in words:
  311. if thing not in aldone:
  312. aldone.append(thing)
  313. try:
  314. freqDict[thing] += 1
  315. except:
  316. freqDict[thing] = 1
  317.  
  318. x += 1
  319. oDict = sorted(freqDict.items(), key=operator.itemgetter(1))
  320. # print('ODICT:', oDict[-1][1])
  321. return (float(oDict[-1][1])/float(flength) + float(oDict[-2][1])/float(flength))/2
  322.  
  323. def uniqueComments(user, comlist):
  324. x = 0
  325. uniqueComments = []
  326. flist = [j for j in comlist]
  327. flength = len(flist)
  328. freqDict = {}
  329. while x < len(flist):
  330. content = flist[x].body
  331. if content.lower() not in uniqueComments:
  332. uniqueComments.append(content.lower())
  333. x += 1
  334. return len(uniqueComments)/len(comlist)
  335.  
  336.  
  337. def avTime(user, comlist):
  338. x = 0
  339. totals = []
  340. flist = [j for j in comlist]
  341. while x < len(flist)-1:
  342. totals.append(flist[x].created_utc - flist[x+1].created_utc)
  343. x+=1
  344. # print(sum(totals))
  345. # print(len(totals))
  346. result = float(sum(totals))/float(len(totals))
  347. return result
  348.  
  349. def avTimeSTD(user, comlist):
  350. x = 0
  351. totals = []
  352. flist = [j for j in comlist]
  353. while x < len(flist)-1:
  354. totals.append(flist[x].created_utc - flist[x+1].created_utc)
  355. x+=1
  356. result = np.std(totals)/np.mean(totals)
  357. return result
  358.  
  359. def fewPosts(user, innum):
  360. tplist = [post for post in r.redditor(user).submissions.new(limit=100)]
  361. return 0.01 if len(tplist) == 0 else float(innum)/float(len(tplist))
  362.  
  363. #low scores are bad news -- divide (# comments / #subs)
  364. def getSpread(user, comlist):
  365. subsList = []
  366. for item in comlist:
  367. if str(item.subreddit) not in subsList:
  368. subsList.append(str(item.subreddit))
  369. # print(subsList)
  370. return 0.01 if float(len(comlist))/float(len(subsList)) == 0 else float(len(comlist))/float(len(subsList))
  371.  
  372.  
  373.  
  374. meanList = []
  375. stdList = []
  376.  
  377. def normalize(lists):
  378. newLists = []
  379. x = np.array(lists)
  380. for idx in range(len(lists[0])):
  381. y = np.array(x.T[idx])
  382. meanList.append(y.mean())
  383. stdList.append(y.std())
  384. print(y)
  385. print(len(meanList))
  386. print(len(stdList))
  387. new = (y-y.mean())/y.std()
  388. newLists.append(new.tolist())
  389. return np.array(newLists).T.tolist()
  390.  
  391. train = {'awkwardtheturtle':0, 'n00b_bot':1, 'spez':0, 'SnapshillBot':1, 'i-make-robots':0, 'katnissbot':0, 'TuneHD':0, 'scienceofficerspock':0, 'thiscatmightcheeryou':1, 'just2centsBot':1, 'teal_knight':0, '_locktrap_':0, 'MacrophageUK':0, 'audobot':0, 'jeopardyqbot':1, 'trexmatt':0, 'biohazard-flames':0, '67859295710582735625':0, 'roastedbagel':0, 'R4V3-0N':0, 'thefitadventure':0, 'edcraffleadmin':1, 'rynowill':0, 'infrequentcommentor':0, 'mafzz_99':0, 'BFair2Prez':1, 'whattocallmyself':0, 'the-blox':1, 'minati1':1, 'MudStank':0, 'transcribot':1}
  392.  
  393. # k=1
  394. # for item in train:
  395. # print(f"{item} is valued at {train[item]} in index {k}")
  396. # k+=1
  397. def csv_normal(rdm=False):
  398. if rdm:
  399. # random.shuffle(all_ones)
  400. bdata = []
  401. labels = []
  402. xn=0
  403. for thing in all_ones:
  404. xn+=1
  405. print(f"{xn}.) {thing}")
  406. try:
  407. ctest = botSuspect(thing)
  408. myList = ctest.generateData()
  409. print(myList)
  410. bdata.append(myList)
  411. labels.append([1] if thing in bots else [0])
  412. open("trainers.csv", "w").write("")
  413. with open("trainers.csv", "w") as f:
  414. writer = csv.writer(f)
  415. writer.writerows([labels[x] + bdata[x] for x in range(len(labels))])
  416. except Exception as e:
  417. print(str(e))
  418. continue
  419. print(bdata)
  420. bdata = normalize(bdata)
  421. for idx, thing in enumerate(bdata):
  422. print(thing)
  423. print(labels[idx])
  424. labels[idx] += thing
  425. labels = [meanList] + [stdList] + labels
  426. with open("trainers.csv", "w") as f:
  427. writer = csv.writer(f)
  428. writer.writerows(labels)
  429.  
  430.  
  431.  
  432. # x = botSuspect("ClearlyCoder")
  433. # print(x.data)
  434. # exit()
  435.  
  436. # _strt = time.time()
  437. # botSuspect('jacksfilmsbot')
  438. # botSuspect('spez')
  439. # botSuspect('sodypop')
  440. # print(time.time() - _strt)
  441.  
  442. # rf = open("botdata.csv", "r")
  443. # rr = csv.reader(rf)
  444. # rlist = list(rr)
  445. # [len(x) for x in rlist]
  446.  
  447. # rdata = normalize([[float(j) for j in x[1:]] for x in rlist])
  448. # rlabels = [[float(j) for j in x[:1]] for x in rlist]
  449.  
  450. # print(len([x for x in rdata]))
  451. # print(meanList)
  452. # print(stdList)
  453. # for idx, thing in enumerate(rdata):
  454. # rlabels[idx] += thing
  455. # rlabels = [meanList] + [stdList] + rlabels
  456. # print(rlabels)
  457. # with open("trainers.csv", "w") as f:
  458. # writer = csv.writer(f)
  459. # writer.writerows(rlabels)
  460.  
  461. # tstr = botSuspect(input())
  462. # print(tstr.generateData())
  463. # exit()
  464. # csv_normal(rdm=True)
  465.  
  466.  
  467. # for item in all_ones:
  468. # try:
  469. # print(f"https://www.reddit.com/user/{item}")
  470. # TT = botSuspect(item)
  471. # print(TT.repetitive)
  472. # print(TT.uniqComments)
  473. # x = input()
  474. # except Exception as e:
  475. # print(str(e))
  476. # print(item)
  477.  
  478. # exit()
  479.  
  480.  
  481. # for moderator in r.subreddit('science').moderator():
  482. # try:
  483. # print(str(moderator))
  484. # if 'bot' not in str(moderator).lower(): normalusers.append(str(moderator))
  485. # open('newsave.txt','w').write(str(normalusers))
  486. # except Exception as e:
  487. # print(str(e))
  488.  
  489. # print(len(normalusers))
  490. # csv_normal(rdm=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement