385 lines
8.0 KiB
Python
385 lines
8.0 KiB
Python
from . import utils
|
|
from . import config
|
|
|
|
# Time
|
|
def time(unit, value):
|
|
content = ''
|
|
|
|
if unit == 'timeiso':
|
|
data = utils.dt('isoloc', value)
|
|
else:
|
|
data = utils.dt('stamploc', value)
|
|
|
|
# Hour
|
|
if config.kodi.meri != '/':
|
|
content += str(int(data.strftime('%I')))
|
|
else:
|
|
content += str(int(data.strftime('%H')))
|
|
|
|
# Minute
|
|
if unit.startswith('time'):
|
|
content += data.strftime(':%M')
|
|
|
|
# Meri
|
|
if config.kodi.meri != '/':
|
|
content += data.strftime('%p')
|
|
|
|
return content
|
|
|
|
# Temperature
|
|
def tempconv(value, unit, kodi=False):
|
|
if value is not False:
|
|
value = float(value)
|
|
|
|
if unit == '°F':
|
|
v = value * 1.8 + 32
|
|
elif unit == 'K':
|
|
v = value + 273.15
|
|
elif unit == '°Ré':
|
|
v = value * 0.8
|
|
elif unit == '°Ra':
|
|
v = value * 1.8 + 491.67
|
|
elif unit == '°Rø':
|
|
v = value * 0.525 + 7.5
|
|
elif unit == '°D':
|
|
v = value / -0.667 + 150
|
|
elif unit == '°N':
|
|
v = value * 0.33
|
|
else:
|
|
v = value
|
|
|
|
if config.addon.tempdp == '0' or kodi is True:
|
|
return round(v)
|
|
else:
|
|
if config.addon.unitsep == ',':
|
|
return str(round(v,int(config.addon.tempdp))).replace('.',',')
|
|
else:
|
|
return round(v,int(config.addon.tempdp))
|
|
|
|
else:
|
|
|
|
if unit == '°F':
|
|
v = '°F'
|
|
elif unit == 'K':
|
|
v = 'K'
|
|
elif unit == '°Ré':
|
|
v = '°Ré'
|
|
elif unit == '°Ra':
|
|
v = '°Ra'
|
|
elif unit == '°Rø':
|
|
v = '°Rø'
|
|
elif unit == '°D':
|
|
v = '°D'
|
|
elif unit == '°N':
|
|
v = '°N'
|
|
else:
|
|
v = '°C'
|
|
|
|
return v
|
|
|
|
def temp(value=False, kodi=False):
|
|
|
|
if config.addon.temp == 'app' or kodi is True:
|
|
return tempconv(value, config.kodi.temp, kodi)
|
|
else:
|
|
return tempconv(value, config.addon.temp)
|
|
|
|
# Speed
|
|
def beaufort(value):
|
|
value = int(value)
|
|
|
|
if (value < 1.0):
|
|
v = '0'
|
|
elif (value >= 1.0) and (value < 5.6):
|
|
v = '1'
|
|
elif (value >= 5.6) and (value < 12.0):
|
|
v = '2'
|
|
elif (value >= 12.0) and (value < 20.0):
|
|
v = '3'
|
|
elif (value >= 20.0) and (value < 29.0):
|
|
v = '4'
|
|
elif (value >= 29.0) and (value < 39.0):
|
|
v = '5'
|
|
elif (value >= 39.0) and (value < 50.0):
|
|
v = '6'
|
|
elif (value >= 50.0) and (value < 62.0):
|
|
v = '7'
|
|
elif (value >= 62.0) and (value < 75.0):
|
|
v = '8'
|
|
elif (value >= 75.0) and (value < 89.0):
|
|
v = '9'
|
|
elif (value >= 89.0) and (value < 103.0):
|
|
v = '10'
|
|
elif (value >= 103.0) and (value < 118.0):
|
|
v = '11'
|
|
elif (value >= 118.0):
|
|
v = '12'
|
|
else:
|
|
v = ''
|
|
|
|
return v
|
|
|
|
def speedconv(value, unit):
|
|
if value is not False:
|
|
value = float(value)
|
|
|
|
if unit == 'mph':
|
|
v = value / 1.609344
|
|
elif unit == 'm/min':
|
|
v = value * 16,667
|
|
elif unit == 'm/s':
|
|
v = value / 3.6
|
|
elif unit == 'ft/h':
|
|
v = value * 3281
|
|
elif unit == 'ft/min':
|
|
v = value * 54.681
|
|
elif unit == 'ft/s':
|
|
v = value / 1.0971
|
|
elif unit == 'kts':
|
|
v = value / 1.852
|
|
elif unit == 'beaufort':
|
|
v = beaufort(value)
|
|
elif unit == 'inch/s':
|
|
v = value * 10.936
|
|
elif unit == 'yard/s':
|
|
v = value / 3.292
|
|
elif unit == 'Furlong/Fortnight':
|
|
v = value * 1670
|
|
else:
|
|
v = value
|
|
|
|
if config.addon.speeddp == '0':
|
|
return round(v)
|
|
else:
|
|
if config.addon.unitsep == ',':
|
|
return str(round(v,int(config.addon.speeddp))).replace('.',',')
|
|
else:
|
|
return round(v,int(config.addon.speeddp))
|
|
|
|
else:
|
|
|
|
if unit == 'mph':
|
|
v = 'mph'
|
|
elif unit == 'm/min':
|
|
v = 'm/min'
|
|
elif unit == 'm/s':
|
|
v = 'm/s'
|
|
elif unit == 'ft/h':
|
|
v = 'ft/h'
|
|
elif unit == 'ft/min':
|
|
v = 'ft/min'
|
|
elif unit == 'ft/s':
|
|
v = 'ft/s'
|
|
elif unit == 'kts':
|
|
v = 'kts'
|
|
elif unit == 'beaufort':
|
|
v = 'beaufort'
|
|
elif unit == 'inch/s':
|
|
v = 'inch/s'
|
|
elif unit == 'yard/s':
|
|
v = 'yard/s'
|
|
elif unit == 'Furlong/Fortnight':
|
|
v = 'Furlong/Fortnight'
|
|
else:
|
|
v = 'km/h'
|
|
|
|
return v
|
|
|
|
def speed(value=False, kodi=False):
|
|
|
|
if config.addon.speed == 'app' or kodi is True:
|
|
return speedconv(value, config.kodi.speed)
|
|
else:
|
|
return speedconv(value, config.addon.speed)
|
|
|
|
# Direction
|
|
def direction(deg):
|
|
if deg >= 349 or deg <= 11:
|
|
return utils.loc(71)
|
|
elif deg >= 12 and deg <= 33:
|
|
return utils.loc(72)
|
|
elif deg >= 34 and deg <= 56:
|
|
return utils.loc(73)
|
|
elif deg >= 57 and deg <= 78:
|
|
return utils.loc(74)
|
|
elif deg >= 79 and deg <= 101:
|
|
return utils.loc(75)
|
|
elif deg >= 102 and deg <= 123:
|
|
return utils.loc(76)
|
|
elif deg >= 124 and deg <= 146:
|
|
return utils.loc(77)
|
|
elif deg >= 147 and deg <= 168:
|
|
return utils.loc(78)
|
|
elif deg >= 169 and deg <= 191:
|
|
return utils.loc(79)
|
|
elif deg >= 192 and deg <= 213:
|
|
return utils.loc(80)
|
|
elif deg >= 214 and deg <= 236:
|
|
return utils.loc(81)
|
|
elif deg >= 237 and deg <= 258:
|
|
return utils.loc(82)
|
|
elif deg >= 259 and deg <= 281:
|
|
return utils.loc(83)
|
|
elif deg >= 282 and deg <= 303:
|
|
return utils.loc(84)
|
|
elif deg >= 304 and deg <= 326:
|
|
return utils.loc(85)
|
|
elif deg >= 327 and deg <= 348:
|
|
return utils.loc(86)
|
|
|
|
# Distance
|
|
def distanceconv(value, unit):
|
|
if value is not False:
|
|
value = float(value)
|
|
|
|
if unit == 'km':
|
|
v = value / 1000
|
|
elif unit == 'mi':
|
|
v = value / 1609
|
|
else:
|
|
v = value
|
|
|
|
if config.addon.distancedp == '0':
|
|
return round(v)
|
|
else:
|
|
if config.addon.unitsep == ',':
|
|
return str(round(v,int(config.addon.distancedp))).replace('.',',')
|
|
else:
|
|
return round(v,int(config.addon.distancedp))
|
|
|
|
else:
|
|
|
|
if unit == 'km':
|
|
v = 'km'
|
|
elif unit == 'mi':
|
|
v = 'mi'
|
|
else:
|
|
v = 'm'
|
|
|
|
return v
|
|
|
|
def distance(value=False):
|
|
return distanceconv(value, config.addon.distance)
|
|
|
|
# Precipitation
|
|
def precipconv(value, unit):
|
|
if value is not False:
|
|
value = float(value)
|
|
|
|
if unit == 'in':
|
|
v = value * 0.039
|
|
else:
|
|
v = value
|
|
|
|
if config.addon.precipdp == '0':
|
|
return round(v)
|
|
else:
|
|
if config.addon.unitsep == ',':
|
|
return str(round(v,int(config.addon.precipdp))).replace('.',',')
|
|
else:
|
|
return round(v,int(config.addon.precipdp))
|
|
|
|
else:
|
|
|
|
if unit == 'in':
|
|
v = 'in'
|
|
else:
|
|
v = 'mm'
|
|
|
|
return v
|
|
|
|
def precip(value=False):
|
|
return precipconv(value, config.addon.precip)
|
|
|
|
# Pressure
|
|
def pressureconv(value, unit):
|
|
if value is not False:
|
|
value = float(value)
|
|
|
|
if unit == 'kPa':
|
|
v = value * 0.1
|
|
elif unit == 'mmHg':
|
|
v = value * 0.7500637554
|
|
elif unit == 'inHg':
|
|
v = value * 0.02953
|
|
elif unit == 'psi':
|
|
v = value * 0.0145037738
|
|
else:
|
|
v = value
|
|
|
|
if config.addon.pressuredp == '0':
|
|
return round(v)
|
|
else:
|
|
if config.addon.unitsep == ',':
|
|
return str(round(v,int(config.addon.pressuredp))).replace('.',',')
|
|
else:
|
|
return round(v,int(config.addon.pressuredp))
|
|
|
|
else:
|
|
|
|
if unit == 'kPa':
|
|
v = 'kPa'
|
|
elif unit == 'mmHg':
|
|
v = 'mmHg'
|
|
elif unit == 'inHg':
|
|
v = 'inHg'
|
|
elif unit == 'psi':
|
|
v = 'psi'
|
|
else:
|
|
v = 'hPa'
|
|
|
|
return v
|
|
|
|
def pressure(value=False):
|
|
return pressureconv(value, config.addon.pressure)
|
|
|
|
# Decimal places
|
|
def dp(value, setting):
|
|
value = float(value)
|
|
|
|
if setting == '0':
|
|
return round(value)
|
|
else:
|
|
if config.addon.unitsep == ',':
|
|
return str(round(value, int(setting))).replace('.',',')
|
|
else:
|
|
return round(value, int(setting))
|
|
|
|
# Moonphase
|
|
def moonphase(deg):
|
|
if deg == 358 or deg == 359 or deg == 0 or deg == 1 or deg == 2:
|
|
return utils.locaddon(32440)
|
|
elif deg >= 3 and deg <= 87:
|
|
return utils.locaddon(32441)
|
|
elif deg == 88 or deg == 89 or deg == 90 or deg == 91 or deg == 92:
|
|
return utils.locaddon(32442)
|
|
elif deg >= 93 and deg <= 177:
|
|
return utils.locaddon(32443)
|
|
elif deg == 178 or deg == 179 or deg == 180 or deg == 181 or deg == 182:
|
|
return utils.locaddon(32444)
|
|
elif deg >= 183 and deg <= 267:
|
|
return utils.locaddon(32445)
|
|
elif deg == 268 or deg == 269 or deg == 270 or deg == 271 or deg == 272:
|
|
return utils.locaddon(32446)
|
|
elif deg >= 273 and deg <= 357:
|
|
return utils.locaddon(32447)
|
|
|
|
def moonphaseimage(deg):
|
|
if deg == 358 or deg == 359 or deg == 0 or deg == 1 or deg == 2:
|
|
return '0.png'
|
|
elif deg >= 3 and deg <= 87:
|
|
return '1.png'
|
|
elif deg == 88 or deg == 89 or deg == 90 or deg == 91 or deg == 92:
|
|
return '2.png'
|
|
elif deg >= 93 and deg <= 177:
|
|
return '3.png'
|
|
elif deg == 178 or deg == 179 or deg == 180 or deg == 181 or deg == 182:
|
|
return '4.png'
|
|
elif deg >= 183 and deg <= 267:
|
|
return '5.png'
|
|
elif deg == 268 or deg == 269 or deg == 270 or deg == 271 or deg == 272:
|
|
return '6.png'
|
|
elif deg >= 273 and deg <= 357:
|
|
return '7.png'
|
|
|