This commit is contained in:
b3yond 2017-06-25 21:52:11 +02:00
commit 8ad4696179
5 changed files with 47 additions and 45 deletions

View file

@ -1,6 +1,8 @@
kontrolle kontroll?e
konti konti
db db
vgn
vag
zivil zivil
sicherheit sicherheit
uniform uniform
@ -11,12 +13,5 @@ tram
linie linie
nuernberg nuernberg
nürnberg nürnberg
s1 s\d
s2 u\d\d?
s3
u1
u2
u3
s4
u21
u11

View file

@ -191,10 +191,9 @@ if __name__ == "__main__":
trigger = trigger.Trigger(config) trigger = trigger.Trigger(config)
bot = RetweetBot(trigger, config) bot = RetweetBot(trigger, config)
while True: try:
bot.flow() while True:
try: bot.flow()
pass sleep(3)
except: except:
bot.shutdown() bot.shutdown()
sleep(3)

View file

@ -10,13 +10,17 @@ server = 'yourmastodoninstance'
consumer_key = "yourconsumerkey" consumer_key = "yourconsumerkey"
consumer_secret = yourconsumersecret" consumer_secret = yourconsumersecret"
# shutdown_contact_userid = 012345
# shutdown_contact_screen_name = 'yourscreenname'
[tuser] [tuser]
access_token_key = "youraccesstokenkey" access_token_key = "youraccesstokenkey"
access_token_secret = "youraccesstokensecret" access_token_secret = "youraccesstokensecret"
# shutdown_contact_userid = 012345
# shutdown_contact_screen_name = 'yourscreenname'
# [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

@ -20,7 +20,7 @@ if __name__ == '__main__':
statuses = [] statuses = []
while True: while True:
statuses = mbot.retoot(statuses) statuses = mbot.retoot(statuses)
statuses = tbot.flow(statuses) # XXX not implemented in RetweetBot statuses = tbot.flow(statuses)
time.sleep(1) time.sleep(1)
except: except:
tbot.shutdown() tbot.shutdown()

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__":