Files
DevOps/Kodi/Lenovo/addons/weather.openmeteo/lib/service.py
2025-10-25 13:21:06 +02:00

76 lines
1.8 KiB
Python

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