From 43474810867c7a987e0dc0073f934fd7fc533656 Mon Sep 17 00:00:00 2001 From: Thor Harald Johansen Date: Sun, 1 Aug 2021 09:40:38 +0200 Subject: [PATCH] Bugfixes, test mode --- portbot.py | 51 +++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/portbot.py b/portbot.py index 54a778e..d05c205 100644 --- a/portbot.py +++ b/portbot.py @@ -11,6 +11,7 @@ from mastodon import Mastodon, MastodonNotFoundError from fedbot.bot import Bot, BotClient POST_INTERVAL = timedelta(seconds = 15) +TEST = False def next_dt(): dt = datetime.now(timezone.utc) @@ -52,19 +53,20 @@ class WordMaker: print("Loading dictionaries") with open ("mhyph.txt", "r", encoding = "mac-roman") as f: lines = [line.strip() for line in f.readlines()] - lines = filter(lambda word: len(word) > 0 and not re.search(r'[- A-Z]', word), lines) + lines = filter(lambda w: len(w) > 0 and not re.search(r'[- A-Z]', w), lines) words = [line.split("•") for line in lines] words = sorted(words, key = lambda w: len(w), reverse = True) self.words = words - self.first_words = list(filter(lambda word: not is_suffixed(word), words)) - self.plain_words = ["".join(word) for word in words] + self.first_words = list(filter(lambda w: not is_suffixed(w), words)) + self.plain_words = ["".join(w).lower() for w in words] with open("porthyph.txt", "r") as f: lines = [line.strip() for line in f.readlines()] + lines = filter(lambda l: len(l) > 0, lines) words = [line.split("=") for line in lines] words = sorted(words, key = lambda w: len(w), reverse = True) self.alt_words = words - self.plain_words.append(["".join(word) for word in words]) + self.plain_words.extend(["".join(w).lower() for w in words]) def get_one_word(self, words): weights = [int(100.0 * (x + 1.0) / len(words)) for x in range(0, len(words))] @@ -72,7 +74,7 @@ class WordMaker: def get_second_word(self, first_word): first_word = list(first_word) - first_end = first_word[-1].lower() + first_end = first_word[-1] if random.randint(0, 100) < 50: second_dict = self.alt_words @@ -80,20 +82,18 @@ class WordMaker: second_dict = self.words if random.randint(0, 100) < 50: - second_iter = filter(lambda w: w[0].lower().startswith(first_end) or first_end.startswith(w[0].lower()), second_dict) + second_iter = filter(lambda w: w[0].lower().startswith(first_end.lower()) or first_end.lower().startswith(w[0].lower()), second_dict) else: - second_iter = filter(lambda w: w[0].lower().startswith(first_end), second_dict) + second_iter = filter(lambda w: w[0].lower().startswith(first_end.lower()), second_dict) second_words = list(second_iter) - #if len(second_words) < 8: - # return None - while len(second_words) > 0: second_word_orig = self.get_one_word(second_words) - second_word = [s.lower() for s in second_word_orig] second_words.remove(second_word_orig) + second_word = [s.lower() for s in second_word_orig] + word = [*first_word[:-1], *second_word] - if not "".join(word) in self.plain_words: + if not "".join(word).lower() in self.plain_words: return word return None @@ -109,20 +109,16 @@ class WordMaker: while True: word = self.get_one_word(words) - end = word[-1] - times = target_times while times > 0: next_word = self.get_second_word(word) if next_word is None: break - else: - word = next_word - times -= 1 - - if times > 0: - continue - else: + + word = next_word + times -= 1 + + if times == 0: break word_str = "".join(word) @@ -180,11 +176,15 @@ def post(): else: visibility = "unlisted" - client.api.status_post("\n".join(words), visibility = visibility) + if not TEST: + client.api.status_post("\n".join(words), visibility = visibility) dt = next_dt() print("Scheduling at", dt) - scheduler.enterabs(dt.timestamp(), 1, post) + if TEST: + scheduler.enter(1, 1, post) + else: + scheduler.enterabs(dt.timestamp(), 1, post) wm = WordMaker() scheduler = sched.scheduler(timefunc = time.time, delayfunc = time.sleep) @@ -197,5 +197,8 @@ print("Running") dt = next_dt() print("Scheduling at", dt) -scheduler.enterabs(dt.timestamp(), 1, post) +if TEST: + scheduler.enter(1, 1, post) +else: + scheduler.enterabs(dt.timestamp(), 1, post) scheduler.run()