2ec45b9138
Restructures the install so users run ONE command. The fork's newinstaller.sh clones this repo (instead of upstream Nachtzuster) and runs BirdNET-Pi's installer. install_services.sh symlinks the avian/ overlay into the Caddy site root, so http://birdnet.local/avian/ comes up after reboot with no Caddy config needed. Reviewer-flagged fixes: Frontend (avian/frontend/apt.js) - Switch all API paths from /api/*.json (which didn't route) to relative action-based URLs (./api/birdnet-api.php?action=recent etc.). - Fetch ./masks.json + ./dims.json relatively (were /avian/*.json). - Replace every innerHTML user-content sink with createElement + textContent + setAttribute — species labels are user-editable in BirdNET-Pi, so untrusted. - Add esc() helper for the few remaining innerHTML attribute contexts. - fetchJson throws on non-200 (was silently parsing 404 HTML as JSON). - Defensive null-check in loadMask if MASKS hasn't loaded. Backend (avian/api/*.php) - birdnet-api.php now derives DB_PATH from dirname(__DIR__, 3) so any BirdNET-Pi install user works (no hardcoded /home/birdnet). - recording/spectrogram/cutout use getenv('HOME') for the same reason. - cutout.php reworked as the canonical image resolver: bundled illustration → bundled cutout → cached rembg → fresh Wikipedia+rembg, with the binomial regex guard and atomic rename on cache write. Wikipedia URL host pinned to wikimedia.org / wikipedia.org to block SSRF. - Stale 'X-BirdNET-Proxy-Token' auth claims removed everywhere. Pregen (avian/scripts/pregen.py) - Gemini key moved from URL query to x-goog-api-key header. - Model bumped to gemini-2.5-flash-image-preview. - Bounded retry on 429 + 5xx with Retry-After honoured. - Default --sleep raised from 1s to 4s (under free-tier RPM). - Unified parser handles |/_/comma in all three input modes. - responseModalities now [TEXT, IMAGE] (was IMAGE-only). - --poses validated against POSES keys. - ASCII [ok]/[fail] markers (was ✓/✗ — Windows console crash). - Surfaces finishReason + blockReason on safety blocks. Prompt template - 'Two placeholders' typo → three. - 'warm paper' / 'transparent background' contradiction resolved. Forwarding - mqtt-bridge.py: paho-mqtt 2.x CallbackAPIVersion compat shim. - avian-mqtt.service: dropped broken %i, set User=birdnet + %h path. - forwarding/README.md uses the actual action-based URLs. README - One-line install via curl … newinstaller.sh. - No more 'install BirdNET-Pi separately' step (our fork does it). - License section uses absolute github.com links. - bird.onethreenine.net replaces the not-yet-existent project writeup. - docs/thumb.png replaced with the 24-bird Twitter capture. Removed - avian/caddy/ and avian/scripts/install.sh — no longer needed; the overlay symlink in install_services.sh handles everything.
43 lines
1.7 KiB
Markdown
43 lines
1.7 KiB
Markdown
# Bird illustration prompt
|
|
|
|
This is the prompt sent to Gemini for every bird illustration. Edit it
|
|
to change the style — the entire visual feel of the collage flows
|
|
through this template.
|
|
|
|
Three placeholders get replaced per request:
|
|
|
|
- `{sci_name}` — the binomial Latin name, e.g. `Calypte anna`
|
|
- `{com_name}` — the English common name, e.g. `Anna's Hummingbird`
|
|
- `{pose}` — either `perched` (pose 1) or `in flight with wings spread` (pose 2)
|
|
|
|
The default style below is **kachō-e** — Edo-period Japanese
|
|
flower-and-bird woodblock prints, rendered in ink and watercolor.
|
|
Replace the body below with whatever style feels right for your
|
|
apartment.
|
|
|
|
---
|
|
|
|
## Prompt
|
|
|
|
Generate a {pose} {com_name} ({sci_name}) in the style of an Edo-period
|
|
Japanese kachō-e woodblock print. Confident sumi-e ink linework with
|
|
soft watercolor washes. Earthy, restrained palette — burnt umber,
|
|
ochre, indigo, vermillion, muted greens. Plumage details rendered with
|
|
short directional brush strokes; eye, beak, and feet drawn with crisp
|
|
ink. The bird should be the only subject — NO background, NO branch
|
|
unless the pose requires it (a single sparse twig is fine for
|
|
perched), NO border or frame, NO text or signature.
|
|
|
|
Anatomy must be biologically accurate for the named species:
|
|
|
|
- Exactly two wings. Two legs. One head. One beak. One tail.
|
|
- Posture and feather pattern matching {com_name} field-guide
|
|
references — color, markings, and body proportions must match the
|
|
real bird.
|
|
- For perched poses: one wing folded against the body, the other
|
|
tucked behind. For flight: both wings extended in a natural flapping
|
|
position.
|
|
|
|
Render at high resolution on a fully transparent background. The bird
|
|
must be cut out cleanly — no shadow, no paper texture, no caption.
|