Working Version

This commit is contained in:
Alex Orid 2021-05-05 18:00:40 -04:00
parent 7365c2e3ee
commit 988f791a42
5 changed files with 146 additions and 50 deletions

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ credentials/
stream_sources/chyron.txt stream_sources/chyron.txt
stream_sources/brb.txt stream_sources/brb.txt
*.log *.log
timers/

View File

@ -26,17 +26,27 @@ class ChannelReward_Hydration(AbstractChannelRewards, metaclass=ABCMeta):
#print("sending:",user, 16, "!lights hydration") #print("sending:",user, 16, "!lights hydration")
try: try:
if self.is_ChannelReward_enabled: try:
thread_ = threading.Thread(target=self.send_Lights_Command, args=(user, 16, "!lights hydration", "")) if self.is_ChannelReward_enabled:
thread_.daemon = True thread_ = threading.Thread(target=self.send_Lights_Command, args=(user, 16, "!lights hydration", ""))
self.threads.append(thread_) thread_.daemon = True
thread_.start() self.threads.append(thread_)
if self.is_ChannelReward_enabled: thread_.start()
prompt_ = self.get_Phrase(rewardPrompt) except:
thread_ = threading.Thread(target=self.send_TTS, args=(user, prompt_)) if self.is_ChannelReward_enabled:
thread_.daemon = True thread_ = threading.Thread(target=self.send_TTS, args=("", "Silly Nerd Fix The Lights Module"))
self.threads.append(thread_) thread_.daemon = True
thread_.start() self.threads.append(thread_)
thread_.start()
try:
if self.is_ChannelReward_enabled:
prompt_ = self.get_Phrase(rewardPrompt)
thread_ = threading.Thread(target=self.send_TTS, args=(user, prompt_))
thread_.daemon = True
self.threads.append(thread_)
thread_.start()
except:
pass
except: except:
pass pass

View File

@ -16,7 +16,13 @@ from cooldowns import Cooldown_Module
import utilities_script as utility import utilities_script as utility
import chyron_module import chyron_module
import timers_module
import os
import praxis_logging
praxis_logger_obj = praxis_logging.praxis_logger()
praxis_logger_obj.init(os.path.basename(__file__))
praxis_logger_obj.log("\n -Starting Logs: " + os.path.basename(__file__))
api:Flask = Flask(__name__) api:Flask = Flask(__name__)
api.config["DEBUG"] = True api.config["DEBUG"] = True
@ -40,12 +46,20 @@ def textSource_tempText(file_name):
tempModule = tempText_Module.tempText_Module() tempModule = tempText_Module.tempText_Module()
return tempModule.getTempTextFile(file_name) return tempModule.getTempTextFile(file_name)
@api.route('/timer/<timer_name>/') @api.route('/timer/status/<timer_name>/')
def textSource_timers(timer_name): def textSource_timerStatus(timer_name):
#print("trying file: ", filename) tempModule = timers_module.Timers_Module()
#tempModule = tempText_Module.tempText_Module() result = tempModule.checkTimerStatus_fromFiles(timer_name)
#tempModule.getTempTextFile(filename) returnString = "Timer %s is %s" % (timer_name, result)
return "Coming Soon" return returnString
@api.route('/timer/time/<timer_name>/')
def textSource_timerTime(timer_name):
tempModule = timers_module.Timers_Module()
result = tempModule.checkTime_fromFiles(timer_name)
if result is None: result = ""
returnString = result
return returnString
if __name__ == "__main__": if __name__ == "__main__":
init() init()

View File

@ -1,8 +1,13 @@
import os import os
import json import json
from praxis_logging import praxis_logger
import time import time
import datetime import datetime
import utilities_script as utility import utilities_script as utility
import importlib
import importlib.util
import sys
import inspect
class timer(): class timer():
def __init__(self, def __init__(self,
@ -11,39 +16,55 @@ class timer():
endTime = datetime.datetime.now, endTime = datetime.datetime.now,
trigger = "", trigger = "",
trigger_exec = "", trigger_exec = "",
timerFormat = "%Y-%m-%d %H:%M:%S.%f",
tempTimer = True): tempTimer = True):
self.name = name self.name = name
self.startTime = startTime self.startTime = startTime
self.endTime = endTime self.endTime = endTime
self.trigger = trigger self.trigger = trigger
self.trigger_exec = trigger_exec self.trigger_exec = trigger_exec
self.timerFormat = timerFormat
self.tempTimer = tempTimer # If enabled this will cause the Timer to be deleted upon shutdown or startup self.tempTimer = tempTimer # If enabled this will cause the Timer to be deleted upon shutdown or startup
class Timers_Module(): class Timers_Module():
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.timersList = [] self.timersList = {}
def main(self): def main(self):
self.createTimer("test_timer", seconds=30) self.createTimer("test_timer", seconds=15)
#self.createTimer("mega_test_timer", hours=20, seconds=10)
#self.updateTimersList() #self.updateTimersList()
#for t in self.timersList:
#print(t)
#while True:
#for t in self.timersList:
#print(t)
#print(self.checkTimerStatus_fromFiles("test_timer"))
#print(self.checkTimerStatus_fromFiles("test_timer_2"))
#time.sleep(0.5)
def updateTimersList(self): def updateTimersList(self):
self.compile_and_load()
def compile_and_load(self):
dic = {} dic = {}
implementations = self.get_implementations_dir() implementations = self.get_implementations_dir()
for dirName, subdirList, fileList in os.walk(implementations): for dirName, subdirList, fileList in os.walk(implementations):
for file in fileList: for file in fileList:
name, startTime, endTime, trigger, trigger_exec, tempTimer = self.readFile(file) print(file)
newTimer = timer(name, startTime, endTime, trigger, trigger_exec, tempTimer) name, startTime, endTime, trigger, trigger_exec, timerFormat, tempTimer = self.readFile(file)
newTimer = timer(
name,
datetime.datetime.strptime(startTime, timerFormat),
datetime.datetime.strptime(endTime, timerFormat),
trigger,
trigger_exec,
utility.strToBool(tempTimer))
dic[newTimer.name] = newTimer self.timersList[newTimer.name] = newTimer
self.timersList.append(self.timersList)
break
return dic return dic
def get_base_dir(self) -> str: def get_base_dir(self) -> str:
cwd = os.getcwd() cwd = os.getcwd()
split = os.path.split(cwd) split = os.path.split(cwd)
@ -64,25 +85,67 @@ class Timers_Module():
os.mkdir(path, 0x777) os.mkdir(path, 0x777)
return path return path
def createTimer(self, name, days=0, hours=0, minutes=0, seconds=0, microseconds=0, trigger="", trigger_exec="", tempTimer=True): def createTimer(self, name, days=0, hours=0, minutes=0, seconds=0, microseconds=0, trigger="", trigger_exec="", timerFormat='%Y-%m-%d %H:%M:%S.%f', tempTimer=True):
startTime = datetime.datetime.now() startTime = datetime.datetime.now()
targetTime = startTime + datetime.timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds, microseconds=microseconds) targetTime = startTime + datetime.timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds, microseconds=microseconds)
newTimer= timer(name, startTime, targetTime, trigger, trigger_exec, tempTimer) newTimer= timer(name, startTime, targetTime, trigger, trigger_exec, timerFormat, tempTimer)
self.timersList.append(newTimer) self.timersList[newTimer.name] = newTimer
self.makeFile(newTimer) self.makeFile(newTimer)
def checkTimer(self, name): def checkTimerStatus_fromFiles(self, name):
try:
if name is not None:
name, startTime, endTime, trigger, trigger_exec, timerFormat, tempTimer = self.readFile(name+".json")
if datetime.datetime.strptime(endTime, timerFormat) < datetime.datetime.now():
#print("do timer thing")
#self.TIMER_EXEC(name, datetime.datetime.strptime(startTime, '%Y-%m-%d %H:%M:%S.%f'), datetime.datetime.strptime(endTime, '%Y-%m-%d %H:%M:%S.%f'), trigger, trigger_exec, utility.strToBool(tempTimer))
return True
else:
return False
else:
return False
except:
return None
name, startTime, endTime, trigger, trigger_exec, tempTimer = self.readFile(name) def checkTime_fromFiles(self, name):
if endTime < datetime.datetime.now(): try:
print("do timer thing") name, startTime, endTime, trigger, trigger_exec, timerFormat, tempTimer = self.readFile(name+".json")
self.TIMER_EXEC(name, startTime, endTime, trigger, trigger_exec, tempTimer) if name is not None:
endT = datetime.datetime.strptime(endTime, '%Y-%m-%d %H:%M:%S.%f')
if endT.timestamp() < datetime.datetime.now().timestamp():
print("do timer thing")
endT = datetime.datetime.strptime(endTime, '%Y-%m-%d %H:%M:%S.%f')
curTime = datetime.datetime.now()
#curTime = datetime.datetime.strptime(curTime, '%Y-%m-%d %H:%M:%S.%f')
result = endT - datetime.timedelta(days=curTime.day, hours=curTime.hour, minutes=curTime.minute, seconds=curTime.second, microseconds=curTime.microsecond)
print(type(result))
#self.TIMER_EXEC(name, datetime.datetime.strptime(startTime, '%Y-%m-%d %H:%M:%S.%f'), datetime.datetime.strptime(endTime, '%Y-%m-%d %H:%M:%S.%f'), trigger, trigger_exec, utility.strToBool(tempTimer))
fixedEndTime = datetime.datetime.strftime(result, '%M:%S')
return str("Did a thing")
else:
endT = datetime.datetime.strptime(endTime, '%Y-%m-%d %H:%M:%S.%f')
curTime = str(datetime.datetime.now())
curTime = datetime.datetime.strptime(curTime, '%Y-%m-%d %H:%M:%S.%f')
result = endT - datetime.timedelta(days=curTime.day, hours=curTime.hour, minutes=curTime.minute, seconds=curTime.second, microseconds=curTime.microsecond)
fixedEndTime = datetime.datetime.strftime(result, '%M:%S')
#fixedTimeDelta = fixedEndTime - fixedCurTime
#praxis_logger.log(str(timeDelta))
return str(fixedEndTime)
else:
return None
except:
return None
def deleteTimer(self, name): def deleteTimer(self, name):
self.deleteFile(name) try:
self.deleteFile(name+".json")
except:
print("Deletion Error")
self.timersList.pop(name)
def TIMER_EXEC(self, name, startTime, endTime, trigger, trigger_exec, tempTimer): def TIMER_EXEC(self, name, startTime, endTime, trigger, trigger_exec, tempTimer):
@ -97,26 +160,27 @@ class Timers_Module():
dir = utility.get_dir("timers") dir = utility.get_dir("timers")
script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in
relative_path = timer_obj.name + ".json" relative_path = timer_obj.name + ".json"
real_file_path = os.path.join(script_dir, relative_path) real_file_path = os.path.join(script_dir, dir, relative_path)
with open(real_file_path, 'r+') as cred_r:
data = json.load(timer_obj)
data['name'] = timer_obj.name
data['startTime'] = timer_obj.startTime
data['endTime'] = timer_obj.endTime
data['trigger'] = timer_obj.trigger
data['trigger_exec'] = timer_obj.trigger_exec
data['tempTimer'] = timer_obj.tempTimer
with open(real_file_path, 'w') as cred_w: with open(real_file_path, 'w') as cred_w:
json.dump(data, cred_w, indent=2) #data = json.load(timer_obj)
dic = {}
dic['name'] = timer_obj.name
dic['startTime'] = str(timer_obj.startTime)
dic['endTime'] = str(timer_obj.endTime)
dic['trigger'] = timer_obj.trigger
dic['trigger_exec'] = timer_obj.trigger_exec
dic['timerFormat'] = timer_obj.timerFormat
dic['tempTimer'] = str(timer_obj.tempTimer)
json.dump(dic, cred_w, indent=2)
def readFile(self, name): def readFile(self, name):
dir = utility.get_dir("timers") dir = utility.get_dir("timers")
script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in
relative_path = name #+ ".json" relative_path = name #+ ".json"
real_file_path = os.path.join(script_dir, relative_path) real_file_path = os.path.join(script_dir, dir, relative_path)
startTime, endTime, trigger, tempTimer = None
with open(real_file_path, 'r') as cred_r: with open(real_file_path, 'r') as cred_r:
data = json.load(cred_r) data = json.load(cred_r)
name = data['name'] name = data['name']
@ -124,14 +188,15 @@ class Timers_Module():
endTime = data['endTime'] endTime = data['endTime']
trigger = data['trigger'] trigger = data['trigger']
trigger_exec = data['trigger_exec'] trigger_exec = data['trigger_exec']
timerFormat = data['timerFormat']
tempTimer = data['tempTimer'] tempTimer = data['tempTimer']
return name, startTime, endTime, trigger, trigger_exec, tempTimer return name, startTime, endTime, trigger, trigger_exec, timerFormat, tempTimer
def deleteFile(self, name): def deleteFile(self, name):
dir = utility.get_dir("timers") dir = utility.get_dir("timers")
script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in
relative_path = name #+ ".json" relative_path = name #+ ".json"
real_file_path = os.path.join(script_dir, relative_path) real_file_path = os.path.join(script_dir, dir, relative_path)
os.remove(real_file_path) os.remove(real_file_path)

View File

@ -40,6 +40,12 @@ def rescale_value(value, min, max):
#print("got ", returnValue) #print("got ", returnValue)
return returnValue return returnValue
def strToBool(stringToTest):
if stringToTest == "True":
return True
else:
return False
def get_dir(selected_dir): def get_dir(selected_dir):
""" """
Checks for the tts directory, and will create it if it does not exist Checks for the tts directory, and will create it if it does not exist