This commit is contained in:
deathbybandaid 2022-02-10 12:02:47 -05:00
parent a3ee9cd038
commit 1af2da8523
2 changed files with 0 additions and 129 deletions

View File

@ -1,6 +1,5 @@
from .interface.config import Config from .interface.config import Config
from .interface.scheduler import Scheduler
from .interface.versions import Versions from .interface.versions import Versions
from .interface.logger import Logger from .interface.logger import Logger
from .interface.database import Database from .interface.database import Database
@ -19,10 +18,6 @@ class SpiceBotCore_OBJ():
self.logger = Logger() self.logger = Logger()
self.logger.info("SpiceBot Logging Interface Setup Complete.") self.logger.info("SpiceBot Logging Interface Setup Complete.")
# Allow SpiceBot to interact with Sopel Scheduler
self.scheduler = Scheduler(self.logger)
self.logger.info("SpiceBot Scheduler Interface Setup Complete.")
# Allow Spicebot to mimic Sopel Config # Allow Spicebot to mimic Sopel Config
self.config = Config(script_dir) self.config = Config(script_dir)
self.logger.info("SpiceBot Config Interface Setup Complete.") self.logger.info("SpiceBot Config Interface Setup Complete.")

View File

@ -1,124 +0,0 @@
import functools
import threading
import schedule
import time
def humanized_time(countdownseconds):
time = float(countdownseconds)
if time == 0:
return "just now"
year = time // (365 * 24 * 3600)
time = time % (365 * 24 * 3600)
day = time // (24 * 3600)
time = time % (24 * 3600)
time = time % (24 * 3600)
hour = time // 3600
time %= 3600
minute = time // 60
time %= 60
second = time
displaymsg = None
timearray = ['year', 'day', 'hour', 'minute', 'second']
for x in timearray:
currenttimevar = eval(x)
if currenttimevar >= 1:
timetype = x
if currenttimevar > 1:
timetype = str(x+"s")
if displaymsg:
displaymsg = "%s %s %s" % (displaymsg, int(currenttimevar), timetype)
else:
displaymsg = "%s %s" % (int(currenttimevar), timetype)
if not displaymsg:
return "just now"
return displaymsg
# just for ignoring a pep error
year, day, hour, minute, second
class Scheduler():
"""
SpiceBot Scheduling events system.
"""
def __init__(self, logger):
self.logger = logger
self.schedule = schedule
# This decorator can be applied to any job function
def job_wrapper(self, func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
job_name = func.__name__
start_timestamp = time.time()
self.logger.debug('Running job: %s' % job_name)
result = func(*args, **kwargs)
total_time = humanized_time(time.time() - start_timestamp)
self.logger.debug('Job %s completed in %s' % (job_name, total_time))
return result
return wrapper
def remove(self, remtag):
joblist = self.jobs
for job_item in joblist:
if len(list(job_item.tags)):
if remtag in list(job_item.tags):
self.schedule.cancel_job(job_item)
def list_tags(self):
tagslist = []
joblist = self.jobs
for job_item in joblist:
if len(list(job_item.tags)):
tagslist.extend(list(job_item.tags))
return tagslist
def list_jobs(self):
jobsdicts = []
joblist = self.jobs
for job_item in joblist:
if len(list(job_item.tags)):
jobsdicts.append({
"name": list(job_item.tags)[0],
"last_run": job_item.last_run,
"next_run": job_item.next_run
})
return jobsdicts
def run_from_tag(self, runtag):
joblist = self.jobs
for job_item in joblist:
if len(list(job_item.tags)):
if runtag in list(job_item.tags):
self.logger.debug("Job %s was triggered to run." % list(job_item.tags)[0])
job_item.run()
def run(self):
"""
Run all scheduled tasks.
"""
# Start a thread to run the events
t = threading.Thread(target=self.thread_worker, args=())
t.start()
def thread_worker(self):
while True:
self.schedule.run_pending()
time.sleep(1)
def __getattr__(self, name):
"""
Quick and dirty shortcuts. Will only get called for undefined attributes.
"""
if hasattr(self.schedule, name):
return eval("self.schedule.%s" % name)