268 lines
10 KiB
Markdown
268 lines
10 KiB
Markdown
# API keys
|
||
|
||
GitHub releases contain default API keys of the project that make all weather sources work by default (until API limits are reached).
|
||
|
||
If you want to self-build, you can add your own API keys in `local.properties` for sources to be configured by default in the build:
|
||
```properties
|
||
breezy.accu.portal=developer
|
||
breezy.accu.key=myapikey
|
||
breezy.accu.days=15
|
||
breezy.accu.hours=120
|
||
breezy.atmoaura.key=myapikey
|
||
breezy.atmofrance.key=myapikey
|
||
breezy.atmograndest.key=myapikey
|
||
breezy.atmohdf.key=myapikey
|
||
breezy.atmosud.key=myapikey
|
||
breezy.baiduip.key=myapikey
|
||
breezy.eccc.key=myapikey
|
||
breezy.geonames.key=myapikey
|
||
breezy.here.key=myapikey
|
||
breezy.mf.jwtKey=myapikey
|
||
breezy.mf.key=myapikey
|
||
breezy.openweather.key=myapikey
|
||
breezy.pirateweather.key=myapikey
|
||
```
|
||
|
||
You can omit any of the following properties to let the user configure their own API key in the settings, or only use API-key-less sources (such as Open-Meteo).
|
||
|
||
|
||
# Release management
|
||
|
||
*Instructions for members of the organization.*
|
||
|
||
1) Test your debug build.
|
||
2) Run tests `./gradlew testBasicDebugUnitTest` and `./gradlew testDebugUnitTest`.
|
||
3) Try to assemble a release `./gradlew assembleBasicRelease`.
|
||
4) Update versionCode and versionName in `app/build.gradle`.
|
||
5) Write changelog in `CHANGELOG.md`.
|
||
6) Commit all changes.
|
||
7) Tag version beginning with a `v` (example: `git tag v6.0.12 -m "Version 6.0.12"`).
|
||
8) Push with `git push --tags`
|
||
9) GitHub action will run and sign the release.
|
||
10) Update GitHub release notes draft and publish.
|
||
11) Update GitHub templates in `.github/` to show the new latest version.
|
||
|
||
|
||
# Adding a new source
|
||
|
||
After merging a new source, the following things need to be done:
|
||
1) Update `CHANGELOG.md`
|
||
2) Update `docs/SOURCES.md`
|
||
3) Update `docs/COVERAGE.md`
|
||
4) Update `fastlane/metadata/android/{en-US,fr,it}/full_description.txt`
|
||
|
||
|
||
# Decode crash logs from users
|
||
|
||
1) Save crash log in a text file `stacktrace.txt` and remove things like `2023-08-14 21:28:58.229 12804-12804 View org.breezyweather.debug` if they are present.
|
||
2) From the release page, download mapping-vX.Y.Z-standard.tar.gz or mapping-vX.Y.Z-freenet.tar.gz depending on the flavor used by the user.
|
||
3) Unzip `mapping.txt`.
|
||
4) `~/Android/Sdk/cmdline-tools/latest/bin/retrace mapping.txt stacktrace.txt`
|
||
|
||
|
||
# Translations
|
||
|
||
## Updated translations
|
||
|
||
When translations are updated from Weblate, if there are new contributors, add them in `app/src/main/java/org/breezyweather/settings/activities/AboutActivity.kt`.
|
||
|
||
|
||
## Added translations
|
||
|
||
When a translation is added, add the CLDR data for this locale in the weather-unit library.
|
||
|
||
|
||
# Dependencies
|
||
|
||
## Update Gradle
|
||
|
||
Gradle must always be updated that way (replace with new version number):
|
||
```
|
||
./gradlew wrapper --gradle-version=9.2.0 --gradle-distribution-sha256-sum=df67a32e86e3276d011735facb1535f64d0d88df84fa87521e90becc2d735444
|
||
```
|
||
|
||
You can find the newer checksum of the binary-only (-bin) ZIP on https://gradle.org/release-checksums/
|
||
|
||
|
||
# Dropping support for an Android version
|
||
|
||
1. In `org.breezyweather.background.updater.AppUpdateChecker`, uncomment the relevant lines to trigger a notification on the unsupported Android versions
|
||
2. In `org.breezyweather.background.weather.WeatherUpdateJob`, uncomment the relevant lines to always enable “check for update” on these unsupported Android versions, to ensure that `freenet` users and users who disabled update check correctly receive the notification. No actual update check will be performed, so it’s safe to force it enabled.
|
||
|
||
|
||
# Adding a new Material Icon
|
||
|
||
You can find [many Material Symbols and Icons here](https://fonts.google.com/icons).
|
||
|
||
|
||
____
|
||
|
||
# Weather sources API
|
||
|
||
Weather sources API can change: some versions may become deprecated, new endpoints may be added, new countries may be supported (when documented, we filter countries in app to avoid unnecessary calls on unsupported countries).
|
||
|
||
This section keep track of endpoints and when they were last checked.
|
||
|
||
## Open-Meteo
|
||
|
||
*Last checked: 2024-04-16*
|
||
|
||
| Endpoint | Version | Notes |
|
||
|---------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||
| Geocoding — Search | v1 | Partial support for Postal code, see [open-meteo/geocoding-api#8](https://github.com/open-meteo/geocoding-api/issues/8), missing admin codes, see [open-meteo/open-meteo#355](https://github.com/open-meteo/open-meteo/issues/355) |
|
||
| Weather — Forecast | v1 | |
|
||
| Air quality | v1 | |
|
||
|
||
Future additional endpoints/improvements for existing endpoints:
|
||
- Reverse geocoding, see [open-meteo/geocoding-api#6](https://github.com/open-meteo/geocoding-api/issues/6)
|
||
- Alerts, see [open-meteo/open-meteo#351](https://github.com/open-meteo/open-meteo/issues/351)
|
||
- Moon rise, set and phases, see [open-meteo/open-meteo#87](https://github.com/open-meteo/open-meteo/issues/87)
|
||
- Normals, see [open-meteo/open-meteo#361](https://github.com/open-meteo/open-meteo/issues/361)
|
||
|
||
|
||
## AccuWeather
|
||
|
||
*Last checked: 2024-04-16*
|
||
|
||
https://apidev.accuweather.com/developers/
|
||
|
||
| Endpoint | Version | Notes |
|
||
|------------------------|---------|------------------------------------------------------------|
|
||
| Location — Translate | v1 | |
|
||
| Location — Geoposition | v1 | |
|
||
| Current conditions | v1 | |
|
||
| Daily | v1 | Up to 45 days, but useless |
|
||
| Hourly | v1 | Up to 240 hours |
|
||
| Minutely | v1 | 1 minute precision |
|
||
| Alerts by geoposition | v1 | |
|
||
| Alerts by location | v1 | |
|
||
| Air quality | v2 | Up to 96 hours. TODO: Observational endpoint for SK and CN |
|
||
| Climo | v1 | |
|
||
|
||
|
||
## MET Norway
|
||
|
||
*Last checked: 2024-04-16*
|
||
|
||
https://api.met.no/
|
||
|
||
| Endpoint | Version | Notes |
|
||
|-------------------|---------|-----------------------------------------------------------------------------------------------------------|
|
||
| Location forecast | 2.0 | |
|
||
| Sunrise | 3.0 | It is technically feasible to retrieve data for future days, but requires two calls for each, so we avoid |
|
||
| Nowcast | 2.0 | Norway, Sweden, Finland and Denmark only |
|
||
| Air quality | 0.1 | Norway only |
|
||
|
||
Not yet implemented in app:
|
||
|
||
| Endpoint | Version | Notes |
|
||
|-------------|---------|----------------------------------------------------------------------------|
|
||
| MET alerts | 1.1 | Norway only by country code, wait for v2.0 in May to get alerts by lat,lon |
|
||
|
||
No location search endpoint exists, it uses Open-Meteo instead.
|
||
|
||
|
||
## OpenWeather
|
||
|
||
*Last checked: 2024-04-16*
|
||
|
||
https://openweathermap.org/api
|
||
|
||
| Endpoint | Version |
|
||
|-------------------------|---------|
|
||
| Current | 2.5 |
|
||
| 5 Day / 3 Hour Forecast | 2.5 |
|
||
| Air Pollution | 2.5 |
|
||
|
||
|
||
## Pirate Weather
|
||
|
||
*Last checked: 2025-10-30*
|
||
|
||
https://github.com/Pirate-Weather/pirateweather
|
||
|
||
| Endpoint | Version | Notes |
|
||
|----------|----------|------------------------|
|
||
| Forecast | v2.7.11 | V2.8 is in pre-release |
|
||
|
||
We should check regularly for additional fields we could use. Latest version checked is written above, everything more recent requires to check changelog.
|
||
|
||
|
||
## Météo-France
|
||
|
||
*Last checked: 2024-02-13*
|
||
|
||
| Endpoint | Version |
|
||
|-------------|---------|
|
||
| Forecast | v2 |
|
||
| Observation | v2 |
|
||
| Nowcast | v3 |
|
||
| Ephemeris | None |
|
||
| Warning | v3 |
|
||
|
||
Not used:
|
||
|
||
| Endpoint | Version | Notes |
|
||
|----------|---------|--------------------------------------------------------------------------------------|
|
||
| Places | V2 | Doesn’t have mandatory timezone field, miss many data on countries other than France |
|
||
|
||
Uses Open-Meteo for location search.
|
||
|
||
|
||
## DMI
|
||
|
||
*To be documented*
|
||
|
||
|
||
## China
|
||
|
||
*Legacy source, undocumented*
|
||
|
||
|
||
## National Weather Service (NWS)
|
||
|
||
*To be documented*
|
||
|
||
|
||
## GeoSphere Austria
|
||
|
||
*To be documented*
|
||
|
||
|
||
## Bright Sky
|
||
|
||
*Last checked: 2024-04-16*
|
||
|
||
| Endpoint | Version |
|
||
|-----------------|---------|
|
||
| Weather | v2.1 |
|
||
| Current weather | v2.1 |
|
||
| Alerts | v2.1 |
|
||
|
||
|
||
## ECCC
|
||
|
||
*Last checked: 2024-01-26*
|
||
|
||
| Endpoint | Version |
|
||
|-------------|---------|
|
||
| Location | v2 |
|
||
|
||
|
||
## Israel Meteorological Service
|
||
|
||
*To be documented*
|
||
|
||
|
||
## SMHI
|
||
|
||
*Last checked: 2024-01-26*
|
||
|
||
| Endpoint | Version |
|
||
|----------|---------|
|
||
| Weather | 2 |
|
||
|
||
|
||
## MET Éireann
|
||
|
||
*To be documented*
|