Refactored to load cfg in base class
This commit is contained in:
parent
e64ce4cadf
commit
700260ae3c
66
fedibot.py
66
fedibot.py
@ -20,39 +20,40 @@ import os
|
|||||||
from threading import Event
|
from threading import Event
|
||||||
from mastodon import Mastodon, MastodonIllegalArgumentError, MastodonVersionError
|
from mastodon import Mastodon, MastodonIllegalArgumentError, MastodonVersionError
|
||||||
|
|
||||||
|
def load_cfg(name):
|
||||||
|
try:
|
||||||
|
import importlib
|
||||||
|
return importlib.import_module(name)
|
||||||
|
except ImportError:
|
||||||
|
raise FailedToLoadCfg("Invalid config file: {}".format(name))
|
||||||
|
|
||||||
class YandereBot:
|
class YandereBot:
|
||||||
# From the threading library. Is responsible for putting the bot to sleep, and exiting when the user quits (Ctrl+C)
|
|
||||||
eventSleep = Event()
|
|
||||||
|
|
||||||
# The configuration module
|
|
||||||
cfg = None
|
|
||||||
|
|
||||||
# The below settings are required from the configuration module
|
|
||||||
settings = {
|
|
||||||
"settings_server": dict(),
|
|
||||||
"settings_behavior": dict(),
|
|
||||||
"settings_encrypt": dict()
|
|
||||||
}
|
|
||||||
|
|
||||||
# Class variables
|
|
||||||
mastodon_api = None
|
|
||||||
failed_uploads = 0
|
|
||||||
consecutive_failed_uploads = 0
|
|
||||||
currentSessionCount = 0
|
|
||||||
debug_mode = False
|
|
||||||
primed = False
|
|
||||||
decrypted = False
|
|
||||||
|
|
||||||
# YandereBot.__init__()
|
# YandereBot.__init__()
|
||||||
# @param cfg A dynamically loaded python module. See yanlib.module_load() for an example
|
# @param cfg Name of configuration file
|
||||||
# @param keyfile Keyfile to decrypt settings_post
|
# @param keyfile Keyfile to decrypt settings_post
|
||||||
# @param debug_mode Should the bot run in debug mode (do not sign in or post to Pleroma)
|
# @param debug_mode Should the bot run in debug mode (do not sign in or post to Pleroma)
|
||||||
def __init__(self, cfg, keyfile=None, debug_mode=False):
|
def __init__(self, cfg, keyfile=None, debug_mode=False):
|
||||||
settings = self.settings
|
# From the threading library. Is responsible for putting the bot to sleep, and exiting when the user quits (Ctrl+C)
|
||||||
self.cfg = cfg
|
self.eventSleep = Event()
|
||||||
self.load_settings(self.cfg)
|
|
||||||
self.debug_mode = debug_mode or settings["settings_behavior"]["debug"]
|
# The below settings are required from the configuration module
|
||||||
settings["settings_encrypt"]["keyfile"] = keyfile or settings["settings_encrypt"]["keyfile"]
|
self.settings = dict()
|
||||||
|
|
||||||
|
# The configuration module
|
||||||
|
self.cfg = load_cfg(cfg)
|
||||||
|
self.load_settings(["settings_server", "settings_behavior", "settings_encrypt"])
|
||||||
|
|
||||||
|
# Class variables
|
||||||
|
self.mastodon_api = None
|
||||||
|
self.failed_uploads = 0
|
||||||
|
self.consecutive_failed_uploads = 0
|
||||||
|
self.currentSessionCount = 0
|
||||||
|
self.primed = False
|
||||||
|
self.decrypted = False
|
||||||
|
self.debug_mode = debug_mode or self.settings["settings_behavior"]["debug"]
|
||||||
|
|
||||||
|
self.settings["settings_encrypt"]["keyfile"] = keyfile or self.settings["settings_encrypt"]["keyfile"]
|
||||||
|
|
||||||
|
|
||||||
# Setup Exit Calls
|
# Setup Exit Calls
|
||||||
def exit(self):
|
def exit(self):
|
||||||
@ -60,10 +61,10 @@ class YandereBot:
|
|||||||
|
|
||||||
# Decryption settings
|
# Decryption settings
|
||||||
# Used to set class attributes with the same name to the value specified in the config file.
|
# Used to set class attributes with the same name to the value specified in the config file.
|
||||||
def load_settings(self, cfg):
|
def load_settings(self, keys):
|
||||||
try:
|
try:
|
||||||
for key in self.settings:
|
for key in keys:
|
||||||
self.settings[key] = getattr(cfg, key)
|
self.settings[key] = getattr(self.cfg, key)
|
||||||
|
|
||||||
except AttributeError as e:
|
except AttributeError as e:
|
||||||
print(e)
|
print(e)
|
||||||
@ -263,5 +264,6 @@ class FailedLogin(Exception):
|
|||||||
class BadCfgFile(Exception):
|
class BadCfgFile(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class FailedToLoadCfg(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user