change goodlist to regex patterns

This commit is contained in:
Thomas L 2017-06-25 21:12:26 +02:00
parent ca07f70aa6
commit 93fbedadd5
3 changed files with 35 additions and 36 deletions

View file

@ -1,6 +1,4 @@
kontrolle kontroll?e
fahrscheinkontrolle
kontrolleur
konti konti
db db
vgn vgn
@ -15,12 +13,5 @@ tram
linie linie
nuernberg nuernberg
nürnberg nürnberg
s1 s\d
s2 u\d\d?
s3
s4
u1
u2
u3
u21
u11

View file

@ -18,5 +18,9 @@ access_token_key = "youraccesstokenkey"
access_token_secret = "youraccesstokensecret" access_token_secret = "youraccesstokensecret"
# [trigger] # [trigger]
# goodlists are one regex per line.
# badlists are one badword per line.
# a message musst match at least one regex in goodlist and contain none of the badwords.
# goodlist_path = 'goodlists' # goodlist_path = 'goodlists'
# blacklist_path = 'blacklists' # blacklist_path = 'blacklists'

View file

@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
import os
import pytoml as toml import pytoml as toml
import os
import re
class Trigger(object): class Trigger(object):
@ -11,33 +12,32 @@ class Trigger(object):
self.config = config self.config = config
try: try:
self.goodlistpath = config['trigger']['goodlist_path'] goodlistpath = config['trigger']['goodlist_path']
except KeyError: except KeyError:
self.goodlistpath = 'goodlists' goodlistpath = 'goodlists'
self.goodlist = self.get_lists(self.goodlistpath)
# load goodlists
self.goodlist = []
for filename in os.listdir(goodlistpath):
with open(os.path.join(goodlistpath, filename), "r+") as listfile:
for pattern in listfile:
pattern = pattern.strip()
if pattern:
self.goodlist.append(re.compile(pattern))
try: try:
self.blacklistpath = config['trigger']['blacklist_path'] blacklistpath = config['trigger']['blacklist_path']
except KeyError: except KeyError:
self.blacklistpath = 'blacklists' blacklistpath = 'blacklists'
self.blacklist = self.get_lists(self.blacklistpath)
def get_lists(self, path): # load blacklists
""" self.blacklist = set()
pass a folder with text files in it. each line in the files becomes a for filename in os.listdir(blacklistpath):
filter word. with open(os.path.join(blacklistpath, filename), "r+") as listfile:
:param path: path to folder whose files shall be added to the set
:return: set of trigger words.
"""
trigger_words = set()
for filename in os.listdir(path):
with open(os.path.join(path, filename), "r+") as listfile:
for word in listfile: for word in listfile:
word = word.strip() word = word.strip()
if word: if word:
trigger_words.add(word) self.blacklist.add(word)
return trigger_words
def is_ok(self, message): def is_ok(self, message):
""" """
@ -46,13 +46,17 @@ class Trigger(object):
:param message: A given string. Tweet or Toot, cleaned from html. :param message: A given string. Tweet or Toot, cleaned from html.
:return: If the string passes the test :return: If the string passes the test
""" """
ret = False for pattern in self.goodlist:
if pattern.match(message):
break
else:
# no pattern matched
return False
for word in message.lower().split(): for word in message.lower().split():
if word in self.goodlist:
ret = True
if word in self.blacklist: if word in self.blacklist:
return False return False
return ret return True
if __name__ == "__main__": if __name__ == "__main__":