fetch config directories

This commit is contained in:
deathbybandaid 2019-06-20 11:18:30 -04:00
parent ef4bd6078c
commit 55c5e32df9
7 changed files with 41 additions and 46 deletions

View File

@ -13,6 +13,7 @@ import aiml
from .Database import db as botdb from .Database import db as botdb
from .Config import config as botconfig from .Config import config as botconfig
from .Read import read as botread
import spicemanip import spicemanip
@ -59,16 +60,7 @@ class SpiceBot_AI():
self.save_brain() self.save_brain()
def load_brain(self): def load_brain(self):
import sopel_modules braindirs = botread.get_config_dirs("SpiceBot_AI")
braindirs = []
for plugin_dir in set(sopel_modules.__path__):
configsdir = os.path.join(plugin_dir, "SpiceBot_Configs")
aimldir = os.path.join(configsdir, "SpiceBot_AI")
braindirs.append(aimldir)
if len(botconfig.SpiceBot_AI.extra):
for extrabraindir in botconfig.SpiceBot_AI.extra:
braindirs.append(extrabraindir)
# learn directories # learn directories
self.learn(braindirs) self.learn(braindirs)

View File

@ -6,20 +6,14 @@ This is the SpiceBot JSON Commands system.
This Class stores commands in an easy to access manner This Class stores commands in an easy to access manner
""" """
import os
from sopel.config.types import StaticSection, ListAttribute from sopel.config.types import StaticSection, ListAttribute
import sopel_modules
from .Config import config as botconfig from .Config import config as botconfig
from .Read import read as botread from .Read import read as botread
from .Commands import commands as botcommands from .Commands import commands as botcommands
import spicemanip
import requests import requests
from fake_useragent import UserAgent from fake_useragent import UserAgent
from lxml import html
import urllib import urllib
@ -40,15 +34,7 @@ class BotJSONCommands():
"feeds", "search" "feeds", "search"
] ]
dir_to_scan = [] dir_to_scan = botread.get_config_dirs("SpiceBot_DictComs")
for plugin_dir in set(sopel_modules.__path__):
configsdir = os.path.join(plugin_dir, "SpiceBot_Configs")
gifcfgdir = os.path.join(configsdir, "SpiceBot_DictComs")
dir_to_scan.append(gifcfgdir)
if len(botconfig.SpiceBot_DictComs.extra):
for extragifcfgdir in botconfig.SpiceBot_DictComs.extra:
dir_to_scan.append(extragifcfgdir)
valid_dictcom_dict = botread.json_to_dict(dir_to_scan, "Dictionary Commands", "SpiceBot_DictComs") valid_dictcom_dict = botread.json_to_dict(dir_to_scan, "Dictionary Commands", "SpiceBot_DictComs")

View File

@ -3,7 +3,6 @@ from __future__ import unicode_literals, absolute_import, division, print_functi
"""How to handle gifs""" """How to handle gifs"""
from sopel.config.types import StaticSection, ValidatedAttribute, ListAttribute from sopel.config.types import StaticSection, ValidatedAttribute, ListAttribute
import sopel_modules
from .Config import config as botconfig from .Config import config as botconfig
from .Read import read as botread from .Read import read as botread
@ -11,7 +10,6 @@ from .Commands import commands as botcommands
import spicemanip import spicemanip
import os
from fake_useragent import UserAgent from fake_useragent import UserAgent
import urllib import urllib
import random import random
@ -36,15 +34,7 @@ class BotGif():
self.header = {'User-Agent': str(UserAgent().chrome)} self.header = {'User-Agent': str(UserAgent().chrome)}
self.valid_api = {} self.valid_api = {}
dir_to_scan = [] dir_to_scan = botread.get_config_dirs("SpiceBot_Gif")
for plugin_dir in set(sopel_modules.__path__):
configsdir = os.path.join(plugin_dir, "SpiceBot_Configs")
gifcfgdir = os.path.join(configsdir, "SpiceBot_Gif")
dir_to_scan.append(gifcfgdir)
if len(botconfig.SpiceBot_Gif.extra):
for extragifcfgdir in botconfig.SpiceBot_Gif.extra:
dir_to_scan.append(extragifcfgdir)
valid_gif_api_dict = botread.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")

View File

@ -17,15 +17,27 @@ class BotRead():
def get_config_dirs(self, config_dir_name): def get_config_dirs(self, config_dir_name):
dir_to_scan = [] dir_to_scan = []
# check config directory stored within this project
for plugin_dir in set(sopel_modules.__path__): for plugin_dir in set(sopel_modules.__path__):
configsdir = os.path.join(plugin_dir, "SpiceBot_Configs") configsdir = os.path.join(plugin_dir, "SpiceBot_Configs")
cfgdir = os.path.join(configsdir, config_dir_name) cfgdir = os.path.join(configsdir, config_dir_name)
dir_to_scan.append(cfgdir) if os.path.exists(cfgdir) and os.path.isdir(cfgdir):
if len(os.listdir(cfgdir)) > 0:
dir_to_scan.append(cfgdir)
extradir = eval("botconfig." + config_dir_name) # attempt to check for extra directories
try:
extradir = eval("botconfig." + config_dir_name + ".extra")
except Exception as e:
extradir = e
extradir = []
if len(extradir): if len(extradir):
for extracfgdir in extradir: for extracfgdir in extradir:
dir_to_scan.append(extracfgdir) if os.path.exists(extracfgdir) and os.path.isdir(extracfgdir):
if len(os.listdir(extracfgdir)) > 0:
dir_to_scan.append(extracfgdir)
return dir_to_scan return dir_to_scan
def json_to_dict(self, directories, configtypename="Config File", log_from='read_directory_json_to_dict', logging=True): def json_to_dict(self, directories, configtypename="Config File", log_from='read_directory_json_to_dict', logging=True):

View File

@ -2,27 +2,28 @@
from __future__ import unicode_literals, absolute_import, division, print_function from __future__ import unicode_literals, absolute_import, division, print_function
"""A way to search google""" """A way to search google"""
import sopel_modules from sopel.config.types import StaticSection, ListAttribute
from .Read import read as botread from .Read import read as botread
from .Config import config as botconfig
import os
from fake_useragent import UserAgent from fake_useragent import UserAgent
import requests import requests
import time import time
class SpiceBot_Sherlock_MainSection(StaticSection):
extra = ListAttribute('extra')
class Sherlock(): class Sherlock():
def __init__(self): def __init__(self):
self.setup_sherlock()
self.header = {'User-Agent': str(UserAgent().chrome)} self.header = {'User-Agent': str(UserAgent().chrome)}
self.dict = {} self.dict = {}
dir_to_scan = [] dir_to_scan = botread.get_config_dirs("SpiceBot_Sherlock")
for plugin_dir in set(sopel_modules.__path__):
configsdir = os.path.join(plugin_dir, "SpiceBot_Configs")
usercfgdir = os.path.join(configsdir, "SpiceBot_Sherlock")
dir_to_scan.append(usercfgdir)
valid_usernames_dict = botread.json_to_dict(dir_to_scan, "Sherlock", "SpiceBot_Sherlock") valid_usernames_dict = botread.json_to_dict(dir_to_scan, "Sherlock", "SpiceBot_Sherlock")
@ -30,6 +31,9 @@ class Sherlock():
self.dict[social_network] = valid_usernames_dict[social_network] self.dict[social_network] = valid_usernames_dict[social_network]
self.dict[social_network]["cache"] = dict() self.dict[social_network]["cache"] = dict()
def setup_sherlock(self):
botconfig.define_section("SpiceBot_Sherlock", SpiceBot_Sherlock_MainSection, validate=False)
def check_network(self, username, social_network): def check_network(self, username, social_network):
username = str(username).lower() username = str(username).lower()

View File

@ -10,6 +10,7 @@ from .Update import SpiceBot_Update_MainSection
from .Gif import SpiceBot_Gif_MainSection from .Gif import SpiceBot_Gif_MainSection
from .DictComs import SpiceBot_DictComs_MainSection from .DictComs import SpiceBot_DictComs_MainSection
from .Reddit import SpiceBot_Reddit_MainSection from .Reddit import SpiceBot_Reddit_MainSection
from .Sherlock import SpiceBot_Sherlock_MainSection
from .Kick import SpiceBot_Kick from .Kick import SpiceBot_Kick
from .osd import SpiceBot_OSD from .osd import SpiceBot_OSD
@ -58,3 +59,6 @@ def configure(config):
config.define_section("SpiceBot_DictComs", SpiceBot_DictComs_MainSection, validate=False) config.define_section("SpiceBot_DictComs", SpiceBot_DictComs_MainSection, validate=False)
config.SpiceBot_DictComs.configure_setting('extra', 'SpiceBot_DictComs API Extra directory') config.SpiceBot_DictComs.configure_setting('extra', 'SpiceBot_DictComs API Extra directory')
config.define_section("SpiceBot_Sherlock", SpiceBot_Sherlock_MainSection, validate=False)
config.SpiceBot_Sherlock.configure_setting('extra', 'SpiceBot_Sherlock API Extra directory')

View File

@ -20,6 +20,7 @@ from .osd import SopelWrapperOSD, ToolsOSD, SopelOSD, SpiceBot_OSD
from .Kick import SopelWrapperKICK, SopelKICK, SpiceBot_Kick from .Kick import SopelWrapperKICK, SopelKICK, SpiceBot_Kick
from .Gif import SpiceBot_Gif_MainSection from .Gif import SpiceBot_Gif_MainSection
from .DictComs import SpiceBot_DictComs_MainSection from .DictComs import SpiceBot_DictComs_MainSection
from .Sherlock import SpiceBot_Sherlock_MainSection
from .AI import SpiceBot_AI_MainSection from .AI import SpiceBot_AI_MainSection
@ -61,6 +62,8 @@ def setup(bot):
setup_dictcoms(bot) setup_dictcoms(bot)
setup_sherlock(bot)
def setup_config(bot): def setup_config(bot):
logs.log('SpiceBot_Config', "Setting Up Configuration") logs.log('SpiceBot_Config', "Setting Up Configuration")
@ -159,3 +162,7 @@ def setup_reddit(bot):
def setup_dictcoms(bot): def setup_dictcoms(bot):
bot.config.define_section("SpiceBot_DictComs", SpiceBot_DictComs_MainSection, validate=False) bot.config.define_section("SpiceBot_DictComs", SpiceBot_DictComs_MainSection, validate=False)
def setup_sherlock(bot):
bot.config.define_section("SpiceBot_Sherlock", SpiceBot_Sherlock_MainSection, validate=False)