Merge pull request #7 from GWES-EAS-Relay-Network/main

Small updates, nothing major.
This commit is contained in:
April Wormwood
2022-11-26 15:33:10 -07:00
committed by GitHub
3 changed files with 55 additions and 106 deletions

View File

@ -20,9 +20,9 @@ This software handles data collection and processing for The Weather Channel's I
- [ ] WMRecord - Marine Forecast
# Usage instructions
[Download a release](https://github.com/the5dcrew/i2MessageEncoder-Rewrite/releases) for the most stable version, or clone the repository.
[Download a release](https://github.com/Open-Telecom/i2MessageEncoder-Rewrite/releases) for the most stable version, or clone the repository.
``git clone https://github.com/the5dcrew/i2MessageEncoder-Rewrite``
``git clone https://github.com/Open-Telecom/i2MessageEncoder-Rewrite``
*(If downloading this as a zip, extract to the directory of your choosing.)*

View File

@ -4,28 +4,22 @@ from radar import TWCRadarCollector
from datetime import datetime
""" This houses the tasks needed to update the data records concurrently
I have no idea if this is a messy way to do things, but it will be worked upon if it is.
"""
async def updateMosaicTask():
mosaicUpdateIntervals = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]
mosaicUpdateIntervals = [i+1 for i in range(0, 60, 5)]
while True:
# Server takes ~15 - 35 seconds to fully generate a frame, so use 40 seconds to ensure it's fully generated.
if datetime.now().minute in mosaicUpdateIntervals and datetime.now().second == 40:
# Mosaic intervals are 5+1 minutes, so instead of waiting 40 seconds and running "Datetime.now()" twice, We run it once and wait for 60.
if datetime.now().minute in mosaicUpdateIntervals:
await TWCRadarCollector.collect("radarmosaic")
await asyncio.sleep(1)
async def updateSatradTask():
satradUpdateIntervals = [0, 10, 20, 30, 40, 50]
satradUpdateIntervals = [i+1 for i in range(0, 60, 10)]
while True:
# Server takes ~15 - 35 seconds to fully generate a frame, so use 40 seconds to ensure it's fully generated.
if datetime.now().minute in satradUpdateIntervals and datetime.now().second == 40:
#Satrad intervals are 10+1 minutes, so instead of waiting 40 seconds and running "Datetime.now()" twice, We run it once and wait for 60.
if datetime.now().minute in satradUpdateIntervals:
await TWCRadarCollector.collect("satrad")
await asyncio.sleep(1)
@ -94,4 +88,4 @@ async def tTask():
async def wnTask():
while True:
await WateringNeeds.makeRecord()
await asyncio.sleep(60 * 60)
await asyncio.sleep(60 * 60)

137
lo8s.py
View File

@ -1,42 +1,21 @@
import py2Lib.bit as bit
import time
from datetime import datetime,timedelta
import random
import secrets
theNow = datetime.now()
currentHour = theNow.strftime('%H')
from time import sleep
from datetime import datetime, timedelta
from random import choice
def runLo8s(flavor, duration, LDL, logo = None, LDLColor = None, EmergencyLFCancel = None):
Id = ''.join(random.choice('ABCDEF0123456789') for i in range(16))
nowUTC = datetime.utcnow()
now = datetime.now()
currentHour = nowUTC.strftime('%H')
friendlyRunTime = now + timedelta(seconds=30)
friendlyRunTime = now + timedelta(seconds=30).strftime('%m/%d/%Y %I:%M:%S %p')
runTime = nowUTC + timedelta(seconds=30)
runTimeLDL = nowUTC + timedelta(seconds=30)
ldlCancelTime = runTimeLDL.strftime('%m/%d/%Y %H:%M:%S'+':02')
lo8sRunTime = runTime.strftime('%m/%d/%Y %H:%M:%S'+':00')
friendlyLo8sRunTime = friendlyRunTime.strftime('%m/%d/%Y %I:%M:%S %p')
ldlCancelTime = runTime.strftime('%m/%d/%Y %H:%M:%S:02')
lo8sRunTime = runTime.strftime('%m/%d/%Y %H:%M:%S:00')
if flavor == 'Z':
nextLDLRunTime = runTime + timedelta(seconds=91)
else:
nextLDLRunTime = runTime + timedelta(seconds=65)
nextLDLRun = nextLDLRunTime.strftime('%m/%d/%Y %H:%M:%S'+':02')
nextLDLRun = nextLDLRunTime.strftime('%m/%d/%Y %H:%M:%S:02')
if duration == '60':
duration = '1800'
elif duration == '65':
@ -46,66 +25,45 @@ def runLo8s(flavor, duration, LDL, logo = None, LDLColor = None, EmergencyLFCanc
elif duration == '120':
duration = '3600'
else:
print('Invalid Duration specified. Please specifiy length of the local forecast in seconds. 60 for 1 minute, 65 for 1 minute 5 seconds, 90 for 1 minute 30 seconds, 120 for 2 minutes.\n\nScript will now terminate...')
print('Invalid Duration specified. Please specifiy length of the local forecast in seconds.\n60 for 1 minute, 65 for 1 minute 5 seconds, 90 for 1 minute 30 seconds, 120 for 2 minutes.\n\nScript will now terminate...')
exit()
nextLDLRun = nextLDLRunTime.strftime('%m/%d/%Y %H:%M:%S'+':02')
if EmergencyLFCancel == 1:
print('Emergency Local On The 8s Kill Switch is Activated. No Local On The 8s Will Air. Maybe b3atdropp3r Hacked An i2 Again???\n' + friendlyLo8sRunTime)
time.sleep(27)
print(f'Emergency Local On The 8s Kill Switch is Activated. No Local On The 8s Will Air. Maybe b3atdropp3r Hacked An i2 Again???\n{friendlyLo8sRunTime}')
sleep(27)
elif logo != '':
print('Sending Load Command To All Stars. The Local On The 8s is expected to start at ' + friendlyLo8sRunTime + ' ...')
bit.sendCommand(['<MSG><Exec workRequest="loadPres(File={0},VideoBehind=000,Logo=domesticAds/TAG'+ logo +',Flavor=domestic/'+flavor+',Duration='+duration+',PresentationId='+Id+')" /></MSG>'], 1)
time.sleep(27)
print(f'Sending Load Command To All Stars. The Local On The 8s is expected to start at {friendlyLo8sRunTime} ...')
bit.sendCommand([f'<MSG><Exec workRequest="loadPres(File={0},VideoBehind=000,Logo=domesticAds/TAG{logo},Flavor=domestic/{flavor},Duration={duration},PresentationId={Id})" /></MSG>'], 1)
sleep(27)
else:
print('Sending Load Command To All Stars. The Local On The 8s is expected to start at ' + friendlyLo8sRunTime + ' ...')
bit.sendCommand(['<MSG><Exec workRequest="loadPres(File={0},VideoBehind=000,Flavor=domestic/'+flavor+',Duration='+duration+',PresentationId='+Id+')" /></MSG>'], 1)
time.sleep(27)
#Cancel LDL
print(f'Sending Load Command To All Stars. The Local On The 8s is expected to start at {friendlyLo8sRunTime} ...')
bit.sendCommand([f'<MSG><Exec workRequest="loadPres(File={0},VideoBehind=000,Flavor=domestic/{flavor},Duration={duration},PresentationId={Id})" /></MSG>'], 1)
sleep(27)
print('\nCanceling LDL...')
bit.sendCommand(['<MSG><Exec workRequest="cancelPres(File={0},PresentationId=LDL,StartTime='+ldlCancelTime+')" /></MSG>'], 1)
#time.sleep(1)
bit.sendCommand([f'<MSG><Exec workRequest="cancelPres(File={0},PresentationId=LDL,StartTime={ldlCancelTime})" /></MSG>'], 1)
if EmergencyLFCancel == 1:
print('Not Airing Local On The 8s Due To Kill Switch Activated. Will Reload LDL After National DBS Forecast Finishes...')
time.sleep(53)
sleep(53)
else:
#Run Local On The 8s
print('\nSending The Run Command. Stand By For Your Local Forecast...')
bit.sendCommand(['<MSG><Exec workRequest="runPres(File={0},PresentationId='+Id+',StartTime='+lo8sRunTime+')" /></MSG>'], 1)
time.sleep(53)
bit.sendCommand([f'<MSG><Exec workRequest="runPres(File={0},PresentationId={Id},StartTime={lo8sRunTime})" /></MSG>'], 1)
sleep(53)
if EmergencyLFCancel == 1:
#color = None
#if LDLColor == 0:
#color = 'E'
#elif LDLColor == 1:
#color = 'F'
#else:
#color = 'E'
print("\nGetting The LDL Ready So It'll Cue After The National DBS Local Forecast")
bit.sendCommand(['<MSG><Exec workRequest="loadPres(File={0},Flavor=domestic/ldl'+LDLColor+',Duration=72000,PresentationId=LDL1)" /></MSG>'], 1)
bit.sendCommand([f'<MSG><Exec workRequest="loadPres(File={0},Flavor=domestic/ldl{LDLColor},Duration=72000,PresentationId=LDL1)" /></MSG>'], 1)
time.sleep(10)
print("\nSending The Run Command For The LDL...")
bit.sendCommand(['<MSG><Exec workRequest="runPres(File={0},PresentationId=LDL1,StartTime='+nextLDLRun+')" /></MSG>'], 1)
bit.sendCommand([f'<MSG><Exec workRequest="runPres(File={0},PresentationId=LDL1,StartTime={nextLDLRun})" /></MSG>'], 1)
elif LDL == 1:
#color = None
#if LDLColor == 0:
#color = 'E'
#elif LDLColor == 1:
#color = 'F'
#else:
#color = 'E'
#Load LDL
print("\nGetting The LDL Ready So It'll Cue After This Local Forecast...")
bit.sendCommand(['<MSG><Exec workRequest="loadPres(File={0},Flavor=domestic/ldl'+LDLColor+',PresentationId=LDL1)" /></MSG>'], 1)
bit.sendCommand([f'<MSG><Exec workRequest="loadPres(File={0},Flavor=domestic/ldl{LDLColor},PresentationId=LDL1)" /></MSG>'], 1)
time.sleep(10)
#Run LDL
print('''\nSending The Run Command For The LDL. As Dave Schwartz Would Say... "That's a Wrap!"''')
bit.sendCommand(['<MSG><Exec workRequest="runPres(File={0},PresentationId=LDL1,StartTime='+nextLDLRun+')" /></MSG>'], 1)
print('\nSending The Run Command For The LDL. As Dave Schwartz Would Say... "That\'s a Wrap!"')
bit.sendCommand([f'<MSG><Exec workRequest="runPres(File={0},PresentationId=LDL1,StartTime={nextLDLRun})" /></MSG>'], 1)
else:
time.sleep(10)
print('''That's It Folks. As Dave Schwartz Would Say... "That's a Wrap!"''')
print('That\'s It Folks. As Dave Schwartz Would Say... "That\'s a Wrap!"')
#----- SET BACKGROUNDS HERE ----------------------#
BGCatastrophic = ['3094', '3095', '3103', '3115']
@ -114,8 +72,6 @@ BGAlert = ['3094', '3095', '3103', '3115']
#BGNight = ['3091', '3092', '3102', '3114', '3191']
BGNorm = ['3091', '3092', '3102', '3114']
#------------------------------------------------------------------------
#------ BG RULES SECTION ------------------------#
if BGCatastrophic:
@ -137,29 +93,28 @@ else:
brandedNormal = ''
#----------------------------------------------
i = 0
while i == 0:
mode = input('\nPlease specify mode. 1 for "Normal", 2 for "Alert", 3 for "Storm Mode", 4 for "Catastrophic", 5 for "Tag" or 0 for "Unbranded"\n')
if mode == '5':
ad = input('Please specify Tag Number.\n')
flavor = input("Flavor Overide? Default is 'V'.\nEnter flavor letter or enter to bypass...")
while True:
mode = input('Please specify mode.\n0 - "Unbranded"\n1 - "Normal"\n2 - "Alert"\n3 - "Storm Mode"\n4 - "Catastrophic"\n5 - "Tag"\n9 - Exit LOT8\n==>')
if mode == '0':
runLo8s('V', '65', 1, '', 'E')
elif mode == '1':
runLo8s('V', '65', 1, brandedNormal, 'E')
elif mode == '2':
runLo8s('V', '65', 1, brandedAlert, 'E')
elif mode == '3':
runLo8s('V1', '65', 1, brandedStorm, 'STORM')
elif mode == '4':
runLo8s('V2', '65', 1, brandedCatastrophic, 'F')
elif mode == '5':
ad = input('Please specify Tag Number.\n==>')
flavor = input("Flavor Overide? Default is 'V'.\nEnter flavor letter, or press enter to bypass.\n==>")
if flavor == '':
runLo8s('V', '65', 1, ad, 'E')
else:
runLo8s(flavor, '65', 1, ad, 'E')
elif mode == '4':
runLo8s('V2', '65', 1, brandedCatastrophic, 'F')
elif mode == '3':
runLo8s('V1', '65', 1, brandedStorm, 'STORM')
elif mode == '2':
runLo8s('V', '65', 1, brandedAlert, 'E')
elif mode == '1':
runLo8s('V', '65', 1, brandedNormal, 'E')
elif mode == '0':
runLo8s('V', '65', 1, '', 'E')
elif mode == '9':
print("\n\nGoodbye.\n\n")
exit()
else:
print("An invalid mode was specified. This is not allowed! Will now shutdown...\n")
time.sleep(5)
i = 1
#runLo8s('V', '65', 1, brandedNormal, 'E')
print("Not a valid selection.\n\n")
time.sleep(1)