Final Fantasy XIV weather & time tools.
Project description
EorzeaEnv
Installation
pip install eorzeaenv
Usage
from EorzeaEnv import EorzeaLang, EorzeaTime, EorzeaWeather, EorzeaPlaceName
Eorzea Language enum
support_langs = [
EorzeaLang.EN,
EorzeaLang.JA,
EorzeaLang.DE,
EorzeaLang.FR,
EorzeaLang.ZH_SC,
EorzeaLang.KO,
]
Eorzea Time
>>> EorzeaTime.now()
'EorzeaTime(Sixth Embral Moon, 11, 21, 56, Phase:0.50, Althyk)'
>>> EorzeaTime.now().moon
'Sixth Embral Moon'
>>> EorzeaTime.now().sun
11
>>> EorzeaTime.now().hour
21
>>> EorzeaTime.now().minute
56
>>> EorzeaTime.now().phase
0.50
>>> EorzeaTime.now().guardian
'Althyk'
- Get the unix timestamp (int not float)
>>> EorzeaTime.now().get_unix_time()
1661114514
- Get the eorzea timestamp (int not float)
>>> EorzeaTime.now().get_eorzea_time()
34177649220
Weather Forecast
- Using period as tuple or list
# defalut step value is 5
# This method return a generator if you need to re-use it save the values as `tuple` or `list`.
t = tuple(EorzeaTime.weather_period(step=3))
# Use EorzeaPlaceName to ensure the place is valid or
# you can directly pass the place string to forecast.
place_name = EorzeaPlaceName('Eureka Pyros')
# Defalut lang is 'en'
# Defalut strict is `True` for strict mode `False` for fuzzy mode.
# eg. `eurekaa puros` is valid in fuzzy mode.
# In fuzzy mode, you can set the cutoff score to prevent unexpected place name to be passed.
# default value is 80. (100 >= value >= 0)
EorzeaWeather.set_fuzzy_cutoff(95)
weather_en = EorzeaWeather.forecast(place_name, t, strict=True)
weather_ja = EorzeaWeather.forecast(place_name, t, lang=EorzeaLang.JA, strict=True)
weather_de = EorzeaWeather.forecast(place_name, t, lang=EorzeaLang.DE, strict=True)
weather_fr = EorzeaWeather.forecast(place_name, t, lang=EorzeaLang.FR, strict=True)
>>> print(weather_en)
['Thunder', 'Snow', 'Blizzards']
>>> print(weather_ja)
['雷', '雪', '吹雪']
>>> print(weather_de)
['Gewittrig', 'Schnee', 'Schneesturm']
>>> print(weather_fr)
['Orages', 'Neige', 'Blizzard']
- Using period in for-loop
weather_en = []
for t in EorzeaTime.weather_period(step=3):
w = EorzeaWeather.forecast('Eureka Pyros', t)
weather_en.append(w)
>>> print(weather_en)
['Thunder', 'Snow', 'Blizzards']
- Provide a desired base time to calculate.
for t in EorzeaTime.weather_period(step=3, from_=datetime(2025, 10, 25).timestamp()):
w = EorzeaWeather.forecast('Eureka Pyros', t)
print(w)
- Using period generator directly
weathers = EorzeaWeather.forecast('Eureka Pyros', EorzeaTime.weather_period(step=3))
>>> print(weathers)
['Thunder', 'Snow', 'Blizzards']
Eorzea place name
An instance of EorzeaPlaceName would be always a valid place name in this pacakge.
An invalid place name will raises InvalidEorzeaPlaceName
error.
place_name = EorzeaPlaceName(
'The Ruby Sea',
# `False` to fuzzy mode, default is `True`
strict=True,
# Stricted scope for validation of place name.
# default is all supports locale.
locale_scopes=[
EorzeaLang.EN,
EorzeaLang.JA,
EorzeaLang.FR,
EorzeaLang.DE],
# Used in fuzzy mode to cut-off the result under the score.
# default is `80`.
fuzzy_cutoff=80
)
>>> place_name
EorrzeaPlaceName('The Ruby Sea')
>>> print(place_name)
'The Ruby Sea`
Belowings are valid place names in strict mode with full locale scopes (default settings).
EorzeaPlaceName('The Ruby Sea') # valid `The Ruby Sea`
EorzeaPlaceName('the ruby sea') # valid `The Ruby Sea`
EorzeaPlaceName('ruby sea') # valid `The Ruby Sea`
EorzeaPlaceName('rubinsee') # valid `Rubinsee`
EorzeaPlaceName('紅玉海') # valid `紅玉海`
With stricted scopes.
scopes = [EorzeaLang.JA, EorzeaLang.DE]
EorzeaPlaceName('The Ruby Sea', locale_scopes=scopes) # raises error
EorzeaPlaceName('the ruby sea', locale_scopes=scopes) # raises error
EorzeaPlaceName('ruby sea', locale_scopes=scopes) # raises error
EorzeaPlaceName('rubinsee', locale_scopes=scopes) # valid `Rubinsee`
EorzeaPlaceName('紅玉海', locale_scopes=scopes) # valid `紅玉海`
In fuzzy mode.
EorzeaPlaceName('the ruby see', strict=False) # valid `The Ruby Sea`
EorzeaPlaceName('ruby see', strict=False) # valid `The Ruby Sea`
EorzeaPlaceName('rubisee', strict=False) # valid `Rubinsee`
EorzeaPlaceName('紅玉貝', strict=False) # raises error
EorzeaPlaceName('紅玉貝', strict=False, fuzzy_cutoff=66) # valid `紅玉海`
Eorzea rainbow predict
Use EorzeaRainbow to predict when will the rainbow appears.
from datetime import datetime
from EorzeaEnv import EorzeaPlaceName, EorzeaRainbow, EorzeaTime, EorzeaWeather
rainbow_times: list[datetime] = []
place = EorzeaPlaceName("東ラノシア")
the_rainbow = EorzeaRainbow(place_name=place)
for t in EorzeaTime.weather_period(step='inf'):
the_rainbow.append(t, EorzeaWeather.forecast(place, t, raw=True))
if the_rainbow.is_appear:
rainbow_times.append(datetime.fromtimestamp(t))
if len(rainbow_times) == 20:
break
print(rainbow_times)
Errors
from EorzeaEnv.errors import \
EorzeaEnvError, \
InvalidEorzeaPlaceName, \
WeatherRateDataError
Exception
|- EorzeaEnvError
|- InvalidEorzeaPlaceName
|- WeatherRateDataError
Thanks
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
eorzeaenv-2.2.11.tar.gz
(67.5 kB
view details)
Built Distribution
File details
Details for the file eorzeaenv-2.2.11.tar.gz
.
File metadata
- Download URL: eorzeaenv-2.2.11.tar.gz
- Upload date:
- Size: 67.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.5 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c7502ecbe14568c7fb6ce6d7f8dbdad20e5d8e2807c1bd6a795557d00f27c5b |
|
MD5 | 32ada5e2ff667f6a2129db2635187030 |
|
BLAKE2b-256 | 64d950a2d01d38e1f235f4d06fd86a8dea000d2ac599fc3c29ba48ab5c704a4b |
File details
Details for the file eorzeaenv-2.2.11-py3-none-any.whl
.
File metadata
- Download URL: eorzeaenv-2.2.11-py3-none-any.whl
- Upload date:
- Size: 72.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.5 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c55b07b0a08588e24f546b978adb0e918958d7639a931b43cbc8a2cb622ddc0 |
|
MD5 | 1fb47590bc4c3c1548f632995fd4b78d |
|
BLAKE2b-256 | 99e07d39871fe59aefca43f59f1206959f803842d76e4b12174f59cdfa86df95 |