From 0fe8f7dbf383e50d008395e8d88ddf0948cd9886 Mon Sep 17 00:00:00 2001 From: deathbybandaid Date: Thu, 20 Jun 2019 09:45:21 -0400 Subject: [PATCH] begin usage of read class --- sopel_modules/SpiceBot/DictComs.py | 4 +- sopel_modules/SpiceBot/Gif.py | 4 +- sopel_modules/SpiceBot/Read.py | 59 ++++++++++++++++++++++++++++++ sopel_modules/SpiceBot/Sherlock.py | 4 +- sopel_modules/SpiceBot/Tools.py | 58 ----------------------------- sopel_modules/SpiceBot/__init__.py | 1 + 6 files changed, 66 insertions(+), 64 deletions(-) diff --git a/sopel_modules/SpiceBot/DictComs.py b/sopel_modules/SpiceBot/DictComs.py index df0c145..d5325d7 100644 --- a/sopel_modules/SpiceBot/DictComs.py +++ b/sopel_modules/SpiceBot/DictComs.py @@ -12,7 +12,7 @@ from sopel.config.types import StaticSection, ListAttribute import sopel_modules from .Config import config as botconfig -from .Tools import read_directory_json_to_dict +from .Read import read as botread from .Commands import commands as botcommands import spicemanip @@ -50,7 +50,7 @@ class BotJSONCommands(): for extragifcfgdir in botconfig.SpiceBot_DictComs.extra: dir_to_scan.append(extragifcfgdir) - valid_dictcom_dict = read_directory_json_to_dict(dir_to_scan, "Dictionary Commands", "SpiceBot_DictComs") + valid_dictcom_dict = botread.json_to_dict(dir_to_scan, "Dictionary Commands", "SpiceBot_DictComs") for dict_from_file in list(valid_dictcom_dict.keys()): diff --git a/sopel_modules/SpiceBot/Gif.py b/sopel_modules/SpiceBot/Gif.py index b596a8c..231462f 100644 --- a/sopel_modules/SpiceBot/Gif.py +++ b/sopel_modules/SpiceBot/Gif.py @@ -6,7 +6,7 @@ from sopel.config.types import StaticSection, ValidatedAttribute, ListAttribute import sopel_modules from .Config import config as botconfig -from .Tools import read_directory_json_to_dict +from .Read import read as botread from .Commands import commands as botcommands import spicemanip @@ -46,7 +46,7 @@ class BotGif(): for extragifcfgdir in botconfig.SpiceBot_Gif.extra: dir_to_scan.append(extragifcfgdir) - valid_gif_api_dict = read_directory_json_to_dict(dir_to_scan, "Gif API", "SpiceBot_Gif") + valid_gif_api_dict = botread.json_to_dict(dir_to_scan, "Gif API", "SpiceBot_Gif") for gif_api in list(valid_gif_api_dict.keys()): botconfig.define_section(gif_api, GifAPISection, validate=False) diff --git a/sopel_modules/SpiceBot/Read.py b/sopel_modules/SpiceBot/Read.py index 277e09b..3a29b74 100644 --- a/sopel_modules/SpiceBot/Read.py +++ b/sopel_modules/SpiceBot/Read.py @@ -4,6 +4,11 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel_modules +import os +import codecs + +from .Logs import logs + class BotRead(): @@ -13,5 +18,59 @@ class BotRead(): def config_dir(self): return + def json_to_dict(directories, configtypename="Config File", log_from='read_directory_json_to_dict', logging=True): + + if not isinstance(directories, list): + directories = [directories] + + configs_dict = {} + filesprocess, fileopenfail, filecount = [], 0, 0 + for directory in directories: + if os.path.exists(directory) and os.path.isdir(directory): + if len(os.listdir(directory)) > 0: + for file in os.listdir(directory): + filepath = os.path.join(directory, file) + if os.path.isfile(filepath) and filepath.endswith('.json'): + filesprocess.append(filepath) + + for filepath in filesprocess: + + # Read dictionary from file, if not, enable an empty dict + filereadgood = True + inf = codecs.open(filepath, "r", encoding='utf-8') + infread = inf.read() + try: + dict_from_file = eval(infread) + except Exception as e: + filereadgood = False + if logging: + logs.log(log_from, "Error loading %s: %s (%s)" % (configtypename, e, filepath)) + dict_from_file = dict() + # Close File + inf.close() + + # gather file stats + slashsplit = str(filepath).split("/") + filename = slashsplit[-1] + filename_base = os.path.basename(filename).rsplit('.', 1)[0] + + if not filereadgood or not isinstance(dict_from_file, dict): + fileopenfail += 1 + else: + filecount += 1 + dict_from_file["filepath"] = str(filepath) + dict_from_file["filename"] = str(filename_base) + configs_dict[filename_base] = dict_from_file + + if filecount: + if logging: + logs.log(log_from, 'Registered %d %s dict files,' % (filecount, configtypename)) + logs.log(log_from, '%d %s dict files failed to load' % (fileopenfail, configtypename), True) + else: + if logging: + logs.log(log_from, "Warning: Couldn't load any %s dict files" % (configtypename)) + + return configs_dict + read = BotRead() diff --git a/sopel_modules/SpiceBot/Sherlock.py b/sopel_modules/SpiceBot/Sherlock.py index 2c85e4e..2ae66ed 100644 --- a/sopel_modules/SpiceBot/Sherlock.py +++ b/sopel_modules/SpiceBot/Sherlock.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals, absolute_import, division, print_functi import sopel_modules -from .Tools import read_directory_json_to_dict +from .Read import read as botread import os from fake_useragent import UserAgent @@ -24,7 +24,7 @@ class Sherlock(): usercfgdir = os.path.join(configsdir, "SpiceBot_Sherlock") dir_to_scan.append(usercfgdir) - valid_usernames_dict = read_directory_json_to_dict(dir_to_scan, "Sherlock", "SpiceBot_Sherlock") + valid_usernames_dict = botread.json_to_dict(dir_to_scan, "Sherlock", "SpiceBot_Sherlock") for social_network in list(valid_usernames_dict.keys()): self.dict[social_network] = valid_usernames_dict[social_network] diff --git a/sopel_modules/SpiceBot/Tools.py b/sopel_modules/SpiceBot/Tools.py index 185241c..84464e6 100644 --- a/sopel_modules/SpiceBot/Tools.py +++ b/sopel_modules/SpiceBot/Tools.py @@ -316,61 +316,3 @@ def service_manip(servicename, dowhat, log_from='service_manip'): os.system("sudo service " + str(servicename) + " " + str(dowhat)) except Exception as e: logs.log(log_from, str(dowhat).title() + "ing " + str(servicename) + ".service Failed: " + str(e)) - - -"""Config Reading Functions""" - - -def read_directory_json_to_dict(directories, configtypename="Config File", log_from='read_directory_json_to_dict', logging=True): - - if not isinstance(directories, list): - directories = [directories] - - configs_dict = {} - filesprocess, fileopenfail, filecount = [], 0, 0 - for directory in directories: - if os.path.exists(directory) and os.path.isdir(directory): - if len(os.listdir(directory)) > 0: - for file in os.listdir(directory): - filepath = os.path.join(directory, file) - if os.path.isfile(filepath) and filepath.endswith('.json'): - filesprocess.append(filepath) - - for filepath in filesprocess: - - # Read dictionary from file, if not, enable an empty dict - filereadgood = True - inf = codecs.open(filepath, "r", encoding='utf-8') - infread = inf.read() - try: - dict_from_file = eval(infread) - except Exception as e: - filereadgood = False - if logging: - logs.log(log_from, "Error loading %s: %s (%s)" % (configtypename, e, filepath)) - dict_from_file = dict() - # Close File - inf.close() - - # gather file stats - slashsplit = str(filepath).split("/") - filename = slashsplit[-1] - filename_base = os.path.basename(filename).rsplit('.', 1)[0] - - if not filereadgood or not isinstance(dict_from_file, dict): - fileopenfail += 1 - else: - filecount += 1 - dict_from_file["filepath"] = str(filepath) - dict_from_file["filename"] = str(filename_base) - configs_dict[filename_base] = dict_from_file - - if filecount: - if logging: - logs.log(log_from, 'Registered %d %s dict files,' % (filecount, configtypename)) - logs.log(log_from, '%d %s dict files failed to load' % (fileopenfail, configtypename), True) - else: - if logging: - logs.log(log_from, "Warning: Couldn't load any %s dict files" % (configtypename)) - - return configs_dict diff --git a/sopel_modules/SpiceBot/__init__.py b/sopel_modules/SpiceBot/__init__.py index 03d0ca4..f051b6c 100644 --- a/sopel_modules/SpiceBot/__init__.py +++ b/sopel_modules/SpiceBot/__init__.py @@ -27,6 +27,7 @@ from .Gif import * from .Sherlock import * from .Reddit import * # from .DictComs import * +from .Read import * from .configure import *