spam.py (1371B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\chatutil\spam.py 2 import re 3 from itertools import izip, imap 4 from caching.memoize import Memoize 5 _tfrom = u'1370,-_*+=^~@\u263b\u3002\u03bc\u03bf\u043c\u043e\u0441' 6 _tto = u'leto...........momoc' 7 _spamTrans = dict(izip(imap(ord, _tfrom), _tto)) 8 for ordinal in [u' ', 9 u'\\', 10 u'|', 11 u'/', 12 u'!', 13 u'(', 14 u')', 15 u'[', 16 u']', 17 u'{', 18 u'}', 19 u'<', 20 u'>', 21 u'"', 22 u"'", 23 u'`', 24 u'\xb4']: 25 _spamTrans[ord(ordinal)] = None 26 27 _dotsubst = re.compile('\\.{2,}') 28 29 def NormalizeForSpam(s): 30 return _dotsubst.sub('.', unicode(s).lower().translate(_spamTrans).replace('dot', '.')) 31 32 33 @Memoize 34 def GetTaboos(): 35 bannedPhrasesInChat = sm.GetService('sites').GetBannedInChatList() 36 return map(NormalizeForSpam, bannedPhrasesInChat) 37 38 39 def IsSpam(text): 40 normtext = NormalizeForSpam(text) 41 for taboo in GetTaboos(): 42 if taboo in normtext: 43 foundSpam = True 44 idx = text.find(taboo) 45 if idx > 0: 46 foundSpam = False 47 while idx > 0: 48 if text[idx - 1].isalnum(): 49 idx = text.find(taboo, idx + 1) 50 else: 51 foundSpam = True 52 break 53 54 return foundSpam 55 return True 56 else: 57 return False