NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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