mirror of
https://codeberg.org/vlw/misskey-microblogger.git
synced 2025-09-13 19:03:41 +02:00
This PR adds scripts for generating random users, and generating random relationships between these users. This PR also refactors config file loading and writing into a class. Reviewed-on: https://codeberg.org/vlw/misskey-microblogger/pulls/1 Co-authored-by: Victor Westerlund <victor.vesterlund@gmail.com> Co-committed-by: Victor Westerlund <victor.vesterlund@gmail.com>
40 lines
No EOL
1.5 KiB
Python
40 lines
No EOL
1.5 KiB
Python
import typing
|
|
|
|
from .Dictionary import Dictionary
|
|
from ..Enums import Dictionaries, NoteTones, NoteMoods, NoteTypes
|
|
|
|
class DictionaryParser(Dictionary):
|
|
def __init__(self, note: dict):
|
|
super().__init__()
|
|
|
|
# Split note text by spaces and coerce into a set
|
|
self.tokens = self._parse_tokens_from_note(note)
|
|
|
|
# Parse tokens from text in note
|
|
@staticmethod
|
|
def _parse_tokens_from_note(note: dict) -> set:
|
|
tokens = [token.lower() for token in note["text"].split(" ")]
|
|
return set(tokens)
|
|
|
|
def get_tone(self) -> NoteTones | None:
|
|
words = self.get_words(Dictionaries.CONTROL)["tone"]
|
|
|
|
if (self.tokens & set(words[NoteTones.INFORMAL.value])): return NoteTones.INFORMAL
|
|
elif (self.tokens & set(words[NoteTones.FORMAL.value])): return NoteTones.FORMAL
|
|
return None
|
|
|
|
def get_mood(self) -> NoteMoods | None:
|
|
words = self.get_words(Dictionaries.CONTROL)["mood"]
|
|
|
|
if (self.tokens & set(words[NoteMoods.FUNNY.value])): return NoteMoods.FUNNY
|
|
elif (self.tokens & set(words[NoteMoods.DECENT.value])): return NoteMoods.DECENT
|
|
elif (self.tokens & set(words[NoteMoods.ANNOYED.value])): return NoteMoods.ANNOYED
|
|
return None
|
|
|
|
def get_type(self) -> NoteTypes | None:
|
|
words = self.get_words(Dictionaries.CONTROL)["type"]
|
|
|
|
if (self.tokens & set(words[NoteTypes.QUESTION.value])): return NoteTypes.QUESTION
|
|
elif (self.tokens & set(words[NoteTypes.EXAGGERATED.value])): return NoteTypes.EXAGGERATED
|
|
elif (self.tokens & set(words[NoteTypes.STATEMENT.value])): return NoteTypes.STATEMENT
|
|
return None |