-
This commit is contained in:
75
Kodi/Lenovo/addons/weather.openmeteo/lib/service.py
Normal file
75
Kodi/Lenovo/addons/weather.openmeteo/lib/service.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import os
|
||||
|
||||
from . import weather
|
||||
from . import config
|
||||
from . import utils
|
||||
from . import api
|
||||
|
||||
def Main():
|
||||
startup = True
|
||||
utils.log(f'Starting service ...')
|
||||
utils.log(config.addon_info, 3)
|
||||
|
||||
# Geolocation
|
||||
if not utils.setting('geoip') and not utils.setting('loc1'):
|
||||
utils.setsetting('geoip', 'true')
|
||||
utils.setsetting('service', 'running')
|
||||
weather.Main('1', mode='geoip')
|
||||
weather.Main('1', mode='download')
|
||||
utils.setsetting('service', 'idle')
|
||||
|
||||
# Service
|
||||
while not utils.monitor.abortRequested():
|
||||
utils.setsetting('service', 'running')
|
||||
|
||||
# Init
|
||||
if utils.settingrpc('weather.addon') == 'weather.openmeteo':
|
||||
utils.log(f'Running service ...', 3)
|
||||
|
||||
if not startup:
|
||||
config.init(cache=True)
|
||||
|
||||
start = utils.time.time()
|
||||
current = utils.settingrpc("weather.currentlocation")
|
||||
|
||||
# Download
|
||||
for locid in range(1, config.addon.maxlocs):
|
||||
if utils.setting(f'loc{locid}'):
|
||||
weather.Main(str(locid), mode='download')
|
||||
|
||||
# Update
|
||||
weather.Main(str(current), mode='update')
|
||||
utils.setsetting('service', 'idle')
|
||||
|
||||
# Notification
|
||||
if startup or utils.lastupdate('alert_notification') >= utils.setting('alert_interval', 'int') * 60:
|
||||
utils.setupdate('alert_notification')
|
||||
|
||||
# Queue
|
||||
for locid in range(1, config.addon.maxlocs):
|
||||
if utils.setting(f'loc{locid}') and utils.setting(f'loc{locid}alert', 'bool'):
|
||||
weather.Main(str(locid), mode='msgqueue')
|
||||
|
||||
# Send
|
||||
weather.Main(str(current), mode='msgsend')
|
||||
|
||||
# Finish
|
||||
utils.log(f'Finished ({round(utils.time.time() - start, 3)} sec)', 3)
|
||||
|
||||
else:
|
||||
utils.log('Addon not enabled ...', 4)
|
||||
utils.setsetting('service', 'idle')
|
||||
|
||||
# Sleep
|
||||
startup = False
|
||||
utils.monitor.waitForAbort(300)
|
||||
|
||||
utils.log(f'Stopping service ...')
|
||||
api.s.close()
|
||||
|
||||
# Workaround KODI issue (v0.9.5)
|
||||
try:
|
||||
utils.setsetting('service', 'stopped')
|
||||
except:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user