ticketfrei/trigger.py

51 lines
1.6 KiB
Python
Raw Normal View History

#!/usr/bin/env python
2017-06-17 22:35:34 +00:00
__encoding__ = "utf-8"
class Trigger(object):
"""
This class provides a filter to test a string against.
"""
def __init__(self, goodlistpath="goodlist", badlistpath="badlist"):
self.goodlistpath = goodlistpath
with open(goodlistpath, "r+") as f:
self.goodlist = [s.strip() for s in f.readlines()]
self.badlistpath = badlistpath
with open(badlistpath, "r+") as f:
self.badlist = [s.strip() for s in f.readlines()]
def check_string(self, string):
"""
checks if a string contains no bad words and at least 1 good word.
:param string: A given string. Tweet or Toot, cleaned from html.
:return: If the string passes the test
"""
2017-06-17 22:35:34 +00:00
string = unicode.decode(string)
for triggerword in self.goodlist:
2017-06-17 22:35:34 +00:00
if string.lower().find(triggerword) != -1:
for triggerword in self.badlist:
2017-06-17 22:35:34 +00:00
if string.lower().find(triggerword) != -1:
return False
return True
return False
def update_list(self, word, whichlist):
"""
:param word: a string of a word which should be appended to one of the lists
:param boolean whichlist: 0 : goodlist, 1 : badlist.
"""
if whichlist:
path = self.goodlistpath
else:
path = self.badlistpath
with open(path, "w") as f:
old = f.readlines()
old.append(word)
f.writelines(old)
2017-06-17 20:32:20 +00:00
if __name__ == "__main__":
pass