Finger server, serving weather forcast
An ascii version of Yr.no's meteogram https://www.yr.no/en/forecast/graph/1-72837/Norway/Oslo/Oslo/Oslo
If you just want to use the service, type: finger oslo@graph.no (replace oslo with your city). Finger is supported on all major platforms (Linux, BSDs, Android, Windows, MacOS, ...).
If you don't have finger available, but have some standard shell tools, try one of the following:
echo oslo|nc graph.no 79
telnet graph.no 79 (and then type oslo)
If you want to run the server yourself, read on below.
$ finger oslo@graph.no
-= Meteogram for norway/oslo/oslo/oslo =-
'C Rain
9 ---------
8 =-----
7
6 =--
5 ---
4=-- ---
3
2 ------ ---
1 --------- ------
0 ---------
21 22 23 00 01 02 03 04 05 06_07_08_09_10_11_12_13_14_15_16_17_18 Hour
N NE SE SE SE S S SE SE SE SE S SW SW S SW SW SW SW SW S SE Wind dir.
3 2 2 2 2 1 1 1 0 1 1 1 1 1 2 2 2 2 2 2 2 2 Wind(mps)
Legend left axis: - Sunny ^ Scattered = Clouded =V= Thunder # Fog
Legend right axis: | Rain ! Sleet * Snow
- Python
- geopy for location look-up via nominatim
- metno-locationforecast as met.no API lib https://github.com/Rory-Sullivan/metno-locationforecast/
- redis for caching location lookups
- pysolar for sun location
Contributions from:
Using uv (recommended for development):
- Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh - Install dependencies:
uv sync - Start redis:
docker run -it --rm --network host redis - Run fingr:
uv run python fingr.py
Using Docker (recommended for prod):
- With docker compose:
docker compose up - With distroless image (recommended):
docker build -t fingr . && docker run -it --rm fingr - With Ubuntu-based image:
docker build -t fingr -f Dockerfile.ubuntu . && docker run -it --rm fingr
Or using pip:
- Start redis:
docker run -it --rm --network host redis - Install:
pip install -e . - Start fingr.py
If you don't see real IPs in the log, you may need to set this in /etc/docker/daemon.json:
{
"userland-proxy": false
}
- Install uv: `curl -LsSf https://astral.sh/uv/install.sh | sh`
- Run `uv run tox`
Or with pip:
- Install: `pip install -e .[dev]`
- Run: `tox`
- Previous version: https://github.com/ways/pyyrascii
- Scan dockerfile:
docker run --rm -it -v ./:/mnt aquasec/trivy fs --exit-code 1 --scanners vuln,secret,license,misconfig /mnt/Dockerfile