Vogelalbum 1.0.0

Eine Kamera am Vogelhaus, ein Rechner der erkennt wer da war — und eine
Sammlung, die sich von allein fuellt.

Zwei neuronale Netze: eines findet den Vogel im Bild, eines bestimmt die
Art. 148 heimische Arten, auf Deutschland eingeschraenkt und neu normiert —
ohne diese Einschraenkung wird aus einer Kohlmeise eine nordamerikanische
Schwesterart. Daraus entsteht ein Sammelalbum: nummerierte Seiten,
gefundene Arten in Farbe, fehlende als Schatten, dazu Erstfang, Punkte,
Stufen und 15 Abzeichen.

Laeuft vollstaendig auf eigener Hardware. Kein Cloud-Dienst, kein Konto,
keine Telemetrie; die Bilder verlassen das eigene Netz nicht.

Zwei getrennt deploybare Teile: die Sammlung als Django-Anwendung, die
Erkennung als eigener Dienst. Der Erkennungs-Dienst fragt selbst an und
braucht deshalb weder eine erreichbare Adresse noch einen offenen Port —
er laeuft hinter einem gewoehnlichen Router.

Dabei: Firmware fuer Raspberry Pi und ESP32-S3, Anbindung an Home
Assistant ueber MQTT, Oberflaeche auf Deutsch und Englisch, Einstellungen
je Kamera aus dem Browser, und ein Weg fuer Fotos von unterwegs.

AGPL-3.0.
This commit is contained in:
christian committed 2026-10-14 18:55:23 +00:00
commit cc9e0786c2
189 files changed
+29792

No files matched your search

+38
View File
@@ -0,0 +1,38 @@
"""Steckbriefe für die erweiterten Arten, nach Gruppen aufgeteilt.
Eine einzige Datei mit 104 Einträgen wäre unwartbar. Die Aufteilung folgt
nicht der Systematik, sondern der Frage, wie wahrscheinlich eine Art vor der
Kamera landet:
* ``gaeste`` — Gartenvögel und alles, was über den Garten fliegt
* ``land`` — Singvögel, Greifvögel, Eulen und Exoten des Landes
* ``wasser`` — Wat-, Wasser- und Meeresvögel
Doppelte Schlüssel sind ein Fehler und werden beim Import gemeldet, nicht
stillschweigend überschrieben — sonst gewinnt zufällig die zuletzt geladene
Datei.
"""
from __future__ import annotations
from .basis import Zusatz
from . import gaeste, land, wasser
_MODULE = (gaeste, land, wasser)
INFO_EXTRA: dict[str, Zusatz] = {}
_doppelt: dict[str, list[str]] = {}
for _modul in _MODULE:
for _slug, _eintrag in _modul.PROFILE.items():
if _slug in INFO_EXTRA:
_doppelt.setdefault(_slug, []).append(_modul.__name__)
INFO_EXTRA[_slug] = _eintrag
if _doppelt:
raise ImportError(
"Steckbriefe doppelt vergeben: "
+ ", ".join(f"{k} ({', '.join(v)})" for k, v in _doppelt.items())
)
__all__ = ["INFO_EXTRA", "Zusatz"]
+25
View File
@@ -0,0 +1,25 @@
"""Gemeinsame Struktur der Steckbriefe.
Deutsch und Englisch stehen in einem Datensatz, weil sie zusammen geschrieben
werden — nicht übersetzt. Eine wörtliche Übertragung liest sich in beiden
Richtungen schlecht: „Streuobstwiese" hat kein Gegenstück, und „Stormcock"
ist im Deutschen kein Begriff.
"""
from __future__ import annotations
from dataclasses import dataclass
@dataclass(frozen=True)
class Zusatz:
kategorie: str
nahrung: str
lebensraum: str
stimme: str
text: str
kategorie_en: str
nahrung_en: str
lebensraum_en: str
stimme_en: str
text_en: str
+906
View File
@@ -0,0 +1,906 @@
"""Steckbriefe: Gäste, die realistisch ins Bild geraten.
Gartenvögel aus der Erweiterung und alles, was über den Garten **fliegt** —
ein Rotmilan landet nie am Futterhaus, steht aber sehr wohl irgendwann im
Bild. Dasselbe gilt für Kranichzug, Graureiher, Kormoran, Weißstorch.
"""
from __future__ import annotations
from .basis import Zusatz
# fmt: off
PROFILE: dict[str, Zusatz] = {
"bergfink": Zusatz(
kategorie="Der Wintergast aus dem Norden",
nahrung="Bucheckern, Sämereien, im Sommer Insekten",
lebensraum="Buchenwälder und Futterhäuser — bei uns nur im Winter",
stimme="Ein nasales, gezogenes „chääh“, klagender als der Buchfink",
text=(
"Wie ein Buchfink, aber wärmer: orangebraune Brust und Schulter, weißer "
"Bürzel, der im Auffliegen aufblitzt. Im Winter ist der Kopf des Männchens "
"grau gescheckt, im Frühjahr wird er tiefschwarz."
"\n\n"
"Er brütet in Skandinavien und kommt nur zum Überwintern. Wie viele kommen, "
"hängt an der Bucheckernernte: In guten Mastjahren sammeln sich in "
"Mitteleuropa Schlafgesellschaften von Millionen Vögeln an einem einzigen "
"Ort — die größten Vogelansammlungen, die es in Europa gibt."
),
kategorie_en="The Winter Guest from the North",
nahrung_en="Beech mast and seeds, insects in summer",
lebensraum_en="Beech woodland and feeders — a winter bird here",
stimme_en="A nasal, drawn-out “tsweek”, more plaintive than a Chaffinch",
text_en=(
"Like a Chaffinch but warmer: an orange breast and shoulder, and a white "
"rump that flashes as it takes off. In winter the male's head is mottled "
"grey; by spring it turns jet black."
"\n\n"
"It breeds in Scandinavia and only comes here to winter. How many arrive "
"depends on the beech mast crop: in a good year, roosts of several million "
"birds gather at a single site in central Europe — the largest "
"concentrations of any bird in Europe."
),
),
"seidenschwanz": Zusatz(
kategorie="Der Beerenräuber mit Haube",
nahrung="Beeren, vor allem Eberesche und Weißdorn",
lebensraum="Beerensträucher in Siedlungen — unregelmäßiger Wintergast",
stimme="Ein feines, klingelndes Trillern wie eine winzige Glocke",
text=(
"Ein rosabeiger Vogel mit aufstellbarer Haube, schwarzer Kehle und roten "
"Siegellackpunkten auf den Flügeln. Wer ihn einmal gesehen hat, verwechselt "
"ihn nie wieder."
"\n\n"
"Er brütet in der Taiga und erscheint bei uns nur in manchen Wintern, dann "
"aber in Trupps, die einen Ebereschenbaum in Stunden abernten. Ein "
"einzelner Vogel frisst am Tag ein Vielfaches seines Körpergewichts an "
"Beeren. Weil vergorene Früchte Alkohol enthalten, gibt es tatsächlich "
"beschwipste Seidenschwänze — mancherorts stellt man Auffangkörbe unter "
"die Bäume."
),
kategorie_en="The Berry Raider with a Crest",
nahrung_en="Berries, above all rowan and hawthorn",
lebensraum_en="Berry bushes in settlements — an irregular winter visitor",
stimme_en="A fine ringing trill, like a tiny bell",
text_en=(
"A pinkish-buff bird with a raisable crest, a black throat and red "
"sealing-wax spots on the wing. Seen once, never mistaken again."
"\n\n"
"It breeds in the taiga and appears here only in some winters — but then in "
"flocks that strip a rowan tree within hours. A single bird eats several "
"times its own body weight in berries per day. Because fermented fruit "
"contains alcohol, tipsy Waxwings are a genuine phenomenon; in some places "
"people put out baskets to catch the fallers."
),
),
"strassentaube": Zusatz(
kategorie="Die verwilderte Haustaube",
nahrung="Sämereien, Brot, alles Essbare",
lebensraum="Städte, Bahnhöfe, Plätze — überall, wo Menschen essen",
stimme="Das bekannte gurrende „ruh-kuh-ruh“",
text=(
"Kein wilder Vogel, sondern die verwilderte Nachfahrin der Haustaube, die "
"wiederum von der Felsentaube abstammt. Deshalb ist keine wie die andere: "
"grau, schwarz, weiß gescheckt, rotbraun — alles kommt vor."
"\n\n"
"Häuserschluchten sind für sie das, wofür ihre Vorfahren gebaut sind: "
"Felswände. Sie findet über das Magnetfeld der Erde nach Hause, und wer "
"Brieftauben kennt, weiß wie gut das funktioniert. Am Futterhaus ist sie "
"eher unbeliebt, weil sie in Gruppen kommt und alles wegräumt."
),
kategorie_en="The Feral Pigeon",
nahrung_en="Seeds, bread, anything edible",
lebensraum_en="Cities, stations and squares — wherever people eat",
stimme_en="The familiar cooing “oo-roo-coo”",
text_en=(
"Not a wild bird but the feral descendant of the domestic pigeon, itself "
"descended from the Rock Dove. That is why no two look alike: grey, black, "
"pied, chestnut — anything goes."
"\n\n"
"Streets lined with buildings are exactly what its ancestors were built "
"for: cliff faces. It navigates home using the Earth's magnetic field, and "
"anyone who knows racing pigeons knows how well that works. At a feeder it "
"is rarely welcome, since it arrives in groups and clears the table."
),
),
"kernbeisser": Zusatz(
kategorie="Der Nussknacker",
nahrung="Kirschkerne, Bucheckern, harte Samen",
lebensraum="Laubwälder und Parks mit alten Bäumen",
stimme="Ein hartes, metallisches „zicks“, oft aus der Baumkrone",
text=(
"Ein wuchtiger Fink mit übergroßem, silbrigem Schnabel und Stiernacken. "
"Kastanienbraun mit grauem Nacken und schwarzem Kinnlatz."
"\n\n"
"Sein Schnabel bringt über fünfzig Kilogramm Druck auf — genug, um "
"Kirschkerne und Pflaumensteine zu knacken, an denen jeder andere heimische "
"Vogel scheitert. Trotz seiner Größe ist er scheu und bleibt gern in der "
"Krone; man hört ihn viel öfter, als man ihn sieht."
),
kategorie_en="The Nutcracker",
nahrung_en="Cherry stones, beech mast, hard seeds",
lebensraum_en="Broadleaf woodland and parks with mature trees",
stimme_en="A hard metallic “tzick”, usually from high in a tree",
text_en=(
"A bull-necked finch with an outsized silvery bill. Chestnut-brown with a "
"grey nape and a black bib."
"\n\n"
"That bill exerts over fifty kilograms of force — enough to crack cherry "
"and plum stones that defeat every other bird here. For all its bulk it is "
"shy and stays in the canopy; you hear it far more often than you see it."
),
),
"bluthaenfling": Zusatz(
kategorie="Der Rotbrüstige vom Feldrand",
nahrung="Kleine Samen von Kräutern, besonders Kreuzblütler",
lebensraum="Hecken, Brachen, Feldränder",
stimme="Ein zwitscherndes Geplauder, weich und schwatzhaft",
text=(
"Das Männchen trägt im Frühjahr eine karminrote Stirn und Brust, den Rest "
"des Jahres ist es unauffällig braun gestrichelt. Weibchen bleiben immer "
"schlicht."
"\n\n"
"Er war einmal ein häufiger Feldvogel und ist heute auf der Roten Liste. "
"Der Grund ist banal und bitter: Er lebt fast ausschließlich von Wildkräuter"
"samen, und Felder ohne Wildkräuter sind für ihn leer. Wer eine ungemähte "
"Ecke im Garten stehen lässt, tut mehr für ihn als jedes Futterhaus."
),
kategorie_en="The Red-breasted One from the Field Edge",
nahrung_en="Small seeds of wild herbs, especially crucifers",
lebensraum_en="Hedges, fallow ground, field margins",
stimme_en="A soft, chattering twitter",
text_en=(
"In spring the male wears a crimson forehead and breast; the rest of the "
"year it is plain streaky brown. Females stay plain throughout."
"\n\n"
"It was once a common farmland bird and is now red-listed. The reason is "
"mundane and bitter: it lives almost entirely on the seeds of wild herbs, "
"and a field without weeds is an empty field to it. Leaving one unmown "
"corner of a garden does more for it than any feeder."
),
),
"wintergoldhaehnchen": Zusatz(
kategorie="Der kleinste Vogel Europas",
nahrung="Winzige Insekten und Spinnen aus Nadelzweigen",
lebensraum="Fichten und Tannen, im Winter auch Gärten",
stimme="Ein extrem hohes „sisisi“ — viele Erwachsene hören es nicht mehr",
text=(
"Fünfeinhalb Gramm, kleiner als ein Zaunkönig, mit einem gelben Scheitel"
"streifen und großen dunklen Augen in einem hellen Gesicht. Der kleinste "
"Vogel Europas."
"\n\n"
"Sein Ruf liegt so hoch, dass viele Menschen ihn ab dem mittleren "
"Lebensalter nicht mehr wahrnehmen — Vogelkundler merken daran, dass ihr "
"Gehör nachlässt. Im Winter muss ein Goldhähnchen praktisch ununterbrochen "
"fressen; eine einzige zu kalte Nacht ohne volle Reserven überlebt es nicht."
),
kategorie_en="Europe's Smallest Bird",
nahrung_en="Tiny insects and spiders from conifer needles",
lebensraum_en="Spruce and fir, gardens in winter",
stimme_en="An extremely high “see-see-see” — many adults can no longer hear it",
text_en=(
"Five and a half grams, smaller than a Wren, with a yellow crown stripe and "
"large dark eyes in a pale face. The smallest bird in Europe."
"\n\n"
"Its call sits so high that many people stop hearing it in middle age — "
"birders use it to notice their own hearing fading. In winter a Goldcrest "
"must feed almost without pause; one cold night on empty reserves is enough "
"to kill it."
),
),
"sommergoldhaehnchen": Zusatz(
kategorie="Der mit dem Augenstreif",
nahrung="Kleinstinsekten, bevorzugt aus Laub- und Mischwald",
lebensraum="Misch- und Nadelwald, Parks mit Eiben",
stimme="Ein hohes Zirpen, etwas tiefer und rhythmischer als beim Wintergoldhähnchen",
text=(
"Fast identisch mit dem Wintergoldhähnchen und genauso winzig. Der "
"Unterschied steht im Gesicht: ein deutlicher weißer Überaugenstreif und "
"ein schwarzer Strich durchs Auge. Das Wintergoldhähnchen hat ein "
"ausdrucksloses helles Gesicht."
"\n\n"
"Es ist die südlichere der beiden Arten und breitet sich mit den wärmeren "
"Wintern nach Norden aus. Beide Arten leben oft im selben Baum, nutzen aber "
"unterschiedliche Zweigbereiche — so kommen sie sich beim Futter nicht in "
"die Quere."
),
kategorie_en="The One With the Eyebrow",
nahrung_en="Tiny insects, mostly in mixed woodland",
lebensraum_en="Mixed and conifer woodland, parks with yew",
stimme_en="A high chirping, slightly lower and more rhythmic than a Goldcrest",
text_en=(
"Almost identical to the Goldcrest and just as tiny. The difference is in "
"the face: a clear white eyebrow and a black line through the eye. The "
"Goldcrest has a blank pale face."
"\n\n"
"It is the more southerly of the two and is spreading north as winters "
"warm. Both species often share a tree but work different parts of the "
"branches, which keeps them out of each other's way."
),
),
"misteldrossel": Zusatz(
kategorie="Die Sturmdrossel",
nahrung="Beeren, besonders Misteln, dazu Würmer und Insekten",
lebensraum="Lichte Wälder, Parks, Streuobst",
stimme="Ein hartes, schnarrendes Rätschen, wie eine Ratsche",
text=(
"Die größte heimische Drossel, deutlich größer als eine Singdrossel, mit "
"grauerem Ton, runden statt pfeilförmigen Flecken und weißen Schwanzecken "
"im Flug."
"\n\n"
"Sie singt bei Sturm und Regen von der höchsten Baumspitze, wenn alles "
"andere schweigt — im Englischen heißt sie deshalb Stormcock. Im Winter "
"verteidigt ein einzelner Vogel einen ganzen Mistel- oder Ebereschenbaum "
"gegen alle Rivalen und lebt wochenlang von diesem einen Vorrat."
),
kategorie_en="The Stormcock",
nahrung_en="Berries, mistletoe above all, plus worms and insects",
lebensraum_en="Open woodland, parks, old orchards",
stimme_en="A hard, rasping rattle, like a football rattle",
text_en=(
"The largest thrush here, clearly bigger than a Song Thrush, greyer in "
"tone, with round rather than arrowhead spots and white tail corners in "
"flight."
"\n\n"
"It sings from the highest treetop in wind and rain when everything else "
"has fallen silent — hence the old English name Stormcock. In winter a "
"single bird will defend an entire mistletoe or rowan tree against all "
"comers and live off that one larder for weeks."
),
),
"dorngrasmuecke": Zusatz(
kategorie="Die aus der Brombeerhecke",
nahrung="Insekten, im Spätsommer Beeren",
lebensraum="Dornhecken, Brombeergestrüpp, verbuschte Brachen",
stimme="Ein hastiges, kratziges Geplapper, oft im steilen Singflug",
text=(
"Grauer Kopf, rostbraune Flügel, weiße Kehle, die bei Erregung aufgeplustert "
"wird. Sie sitzt selten offen, sondern schimpft aus dem Dickicht."
"\n\n"
"Ihr Bestand brach in den 1970ern europaweit ein — die Ursache lag nicht "
"hier, sondern in der Sahelzone, wo eine mehrjährige Dürre die "
"Winterquartiere austrocknete. Ein Lehrstück darüber, dass Vogelschutz an "
"der Landesgrenze nicht endet."
),
kategorie_en="The One in the Bramble",
nahrung_en="Insects, berries in late summer",
lebensraum_en="Thorn hedges, bramble thickets, scrubby fallow ground",
stimme_en="A hurried, scratchy chatter, often in a bouncing song flight",
text_en=(
"A grey head, rusty wings and a white throat that puffs out when it is "
"agitated. It rarely sits in the open, preferring to scold from cover."
"\n\n"
"Its numbers crashed across Europe in the 1970s — the cause was not here "
"but in the Sahel, where a multi-year drought dried out its wintering "
"grounds. A lesson in how bird conservation does not stop at a border."
),
),
"nebelkraehe": Zusatz(
kategorie="Die Krähe mit der Weste",
nahrung="Allesfresser wie die Rabenkrähe",
lebensraum="Offene Landschaft und Siedlungen östlich der Elbe",
stimme="Wie die Rabenkrähe, ein raues „krah“",
text=(
"Dieselbe Art wie die Rabenkrähe in allem außer der Farbe: grauer Rumpf, "
"schwarzer Kopf, schwarze Flügel. Wie eine Krähe mit Weste."
"\n\n"
"Die beiden Formen treffen sich in einem schmalen Streifen entlang der "
"Elbe, wo sie sich mischen und fruchtbare Nachkommen bekommen. Warum die "
"Zone trotzdem seit Jahrzehnten schmal bleibt, statt sich zu verwischen, "
"ist eine der schöneren offenen Fragen der Evolutionsbiologie."
),
kategorie_en="The Crow in a Waistcoat",
nahrung_en="An omnivore, like the Carrion Crow",
lebensraum_en="Open country and settlements east of the Elbe",
stimme_en="Like a Carrion Crow, a harsh “caw”",
text_en=(
"The same species as the Carrion Crow in everything but colour: a grey "
"body with a black head and wings. A crow in a waistcoat."
"\n\n"
"The two forms meet in a narrow band along the river Elbe, where they "
"interbreed and produce fertile young. Why that zone has nonetheless "
"stayed narrow for decades instead of blurring away is one of the more "
"enjoyable open questions in evolutionary biology."
),
),
"saatkraehe": Zusatz(
kategorie="Die Gesellige",
nahrung="Regenwürmer, Larven, Getreide",
lebensraum="Ackerland und Stadtparks — brütet in lauten Kolonien",
stimme="Ein höheres, gequetschteres „kaah“ als bei der Rabenkrähe",
text=(
"Schwarz mit violettem Glanz und einem hellen, unbefiederten Schnabelgrund "
"— das ist das sichere Kennzeichen gegenüber der Rabenkrähe. Jungvögel "
"haben es noch nicht."
"\n\n"
"Anders als die Rabenkrähe brütet sie in Kolonien von oft hunderten "
"Nestern, was ihr in Städten wenig Freunde macht. Sie war lange verfolgt "
"und ist seit den 1980ern wieder häufiger. Ihr Schnabel ist ein "
"Bodenwerkzeug: Sie stochert damit tief nach Larven, wofür der befiederte "
"Ansatz nur im Weg wäre."
),
kategorie_en="The Sociable One",
nahrung_en="Earthworms, grubs, grain",
lebensraum_en="Farmland and city parks — breeds in noisy colonies",
stimme_en="A higher, more strangled “caah” than a Carrion Crow",
text_en=(
"Black with a purple gloss and a pale bare patch at the base of the bill — "
"the reliable mark against a Carrion Crow. Juveniles do not have it yet."
"\n\n"
"Unlike the Carrion Crow it breeds in colonies of often hundreds of nests, "
"which wins it few friends in towns. Long persecuted, it has been "
"recovering since the 1980s. That bill is a ground tool: it probes deep for "
"grubs, and feathering at the base would only get in the way."
),
),
"turteltaube": Zusatz(
kategorie="Die Zierlichste",
nahrung="Samen von Wildkräutern, Getreide",
lebensraum="Feldgehölze, Waldränder, Streuobst",
stimme="Ein schnurrendes, rollendes „turr-turr“ — daher der Name",
text=(
"Die kleinste und zierlichste heimische Taube: rostbraun geschuppte "
"Flügel, ein schwarzweiß gestreifter Halsfleck, rosa Brust."
"\n\n"
"Sie ist unser einziger Langstreckenzieher unter den Tauben und "
"überwintert südlich der Sahara. In Europa ist ihr Bestand seit 1980 um "
"rund achtzig Prozent eingebrochen — sie ist eine der am schnellsten "
"verschwindenden Vogelarten des Kontinents. Wer sie noch hört, sollte "
"hinhören."
),
kategorie_en="The Most Delicate",
nahrung_en="Seeds of wild herbs, grain",
lebensraum_en="Copses, woodland edges, old orchards",
stimme_en="A purring, rolling “turr-turr” — the source of its name",
text_en=(
"The smallest and most delicate pigeon here: rust-scalloped wings, a "
"black-and-white striped neck patch and a pink breast."
"\n\n"
"It is our only long-distance migrant among the pigeons, wintering south "
"of the Sahara. Its European population has fallen by around eighty per "
"cent since 1980, making it one of the fastest-disappearing birds on the "
"continent. If you can still hear one, listen."
),
),
"feldlerche": Zusatz(
kategorie="Die Sängerin über dem Acker",
nahrung="Samen und Insekten vom Boden",
lebensraum="Offene Äcker und Wiesen ohne Bäume",
stimme="Ein endloser, perlender Gesang aus großer Höhe, oft minutenlang",
text=(
"Unscheinbar braun gestrichelt mit einer kleinen aufstellbaren Haube. Man "
"sieht sie am Boden kaum — und hört sie über sich, oft ohne sie zu finden."
"\n\n"
"Ihr Singflug führt bis zweihundert Meter hoch, und sie singt dabei "
"ununterbrochen, teils über zehn Minuten. Der Bestand ist seit 1990 um "
"mehr als ein Drittel gefallen: Wintergetreide steht im Frühjahr schon zu "
"dicht, um darin zu brüten. Ein Vogel, der nicht an Nahrung scheitert, "
"sondern am Aussaatkalender."
),
kategorie_en="The Singer Above the Field",
nahrung_en="Seeds and insects from the ground",
lebensraum_en="Open arable land and meadows without trees",
stimme_en="An endless, rippling song from high overhead, often for minutes",
text_en=(
"Plain streaky brown with a small raisable crest. You rarely see it on the "
"ground — and hear it above you, often without finding it."
"\n\n"
"Its song flight climbs to two hundred metres and it sings throughout, "
"sometimes for over ten minutes. Numbers have fallen by more than a third "
"since 1990: winter-sown cereals are already too dense in spring to nest "
"in. A bird undone not by food but by the sowing calendar."
),
),
"neuntoeter": Zusatz(
kategorie="Der Vorratsspießer",
nahrung="Große Insekten, gelegentlich Mäuse und Jungvögel",
lebensraum="Dornhecken in offener Landschaft",
stimme="Ein raues Schäckern, dazu leise Imitationen anderer Arten",
text=(
"Das Männchen ist auffällig gezeichnet: grauer Kopf mit schwarzer "
"Räubermaske, rotbrauner Rücken, rosa angehauchte Brust. Weibchen sind "
"braun und fein gewellt."
"\n\n"
"Seinen Namen hat er von einer echten Angewohnheit: Er spießt Beute auf "
"Dornen auf, als Vorrat und weil ihm die Kraft fehlt, sie im Greifen zu "
"zerlegen. Solche Spießplätze findet man an Schlehen und Weißdorn. Neun "
"Opfer am Tag sind allerdings Volksmund, nicht Biologie."
),
kategorie_en="The Larder Keeper",
nahrung_en="Large insects, occasionally mice and nestlings",
lebensraum_en="Thorn hedges in open country",
stimme_en="A harsh chattering, mixed with quiet mimicry of other species",
text_en=(
"The male is boldly marked: a grey head with a black bandit mask, a "
"chestnut back and a pink-flushed breast. Females are brown and finely "
"barred."
"\n\n"
"Its German name means “nine-killer”, from a real habit: it impales prey on "
"thorns, both as a larder and because it lacks the strength to tear food "
"while holding it. Such larders turn up on blackthorn and hawthorn. The "
"nine victims a day, however, are folklore rather than biology."
),
),
"kuckuck": Zusatz(
kategorie="Der Brutschmarotzer",
nahrung="Behaarte Raupen, die kaum ein anderer Vogel frisst",
lebensraum="Halboffene Landschaft mit Wirtsvögeln in der Nähe",
stimme="Der zweisilbige Ruf, den jeder kennt — nur das Männchen ruft so",
text=(
"Schlank, grau, mit gebändertem Bauch und spitzen Flügeln. Im Flug wird er "
"regelmäßig für einen Sperber gehalten, und das ist kein Zufall: Die "
"Ähnlichkeit verschafft ihm Zugang zu Nestern, weil Kleinvögel in Deckung "
"gehen statt anzugreifen."
"\n\n"
"Das Weibchen legt bis zu 25 Eier in fremde Nester, jedes einzeln und "
"farblich an das Gelege des Wirts angepasst. Es gibt Kuckuckslinien, die "
"auf bestimmte Wirtsarten spezialisiert sind. Das frisch geschlüpfte Junge "
"wirft die übrigen Eier aus dem Nest — blind und nackt, in den ersten "
"Lebensstunden."
),
kategorie_en="The Brood Parasite",
nahrung_en="Hairy caterpillars that almost no other bird will eat",
lebensraum_en="Semi-open country with host species nearby",
stimme_en="The two-note call everyone knows — only the male gives it",
text_en=(
"Slim and grey with a barred belly and pointed wings. In flight it is "
"regularly taken for a Sparrowhawk, and that is no accident: the "
"resemblance buys it access to nests, because small birds take cover "
"instead of attacking."
"\n\n"
"The female lays up to 25 eggs in other birds' nests, one at a time, each "
"colour-matched to the host's clutch. Distinct cuckoo lineages specialise "
"on particular hosts. The newly hatched chick heaves the remaining eggs out "
"of the nest — blind and naked, within hours of hatching."
),
),
"habicht": Zusatz(
kategorie="Der Waldjäger",
nahrung="Tauben, Krähen, Eichhörnchen",
lebensraum="Geschlossene Wälder, zunehmend auch Stadtparks",
stimme="Ein schnelles, hackendes „gik-gik-gik“ in der Brutzeit",
text=(
"Wie ein Sperber, nur eine Nummer größer und schwerer gebaut, mit "
"breiterem Bürzel und einem hellen Überaugenstreif. Weibchen erreichen "
"fast Bussardgröße."
"\n\n"
"Er jagt aus dem Hinterhalt und schlägt Beute bis zur eigenen "
"Körpergröße. In mehreren europäischen Städten hat er sich angesiedelt und "
"lebt dort von Straßentauben — Berlin hat eine der dichtesten "
"Habichtpopulationen der Welt, mitten in der Stadt."
),
kategorie_en="The Forest Hunter",
nahrung_en="Pigeons, crows, squirrels",
lebensraum_en="Closed woodland, increasingly also city parks",
stimme_en="A rapid chopping “gek-gek-gek” while breeding",
text_en=(
"Like a Sparrowhawk but a size up and more heavily built, with a broader "
"rear end and a pale eyebrow. Females approach Buzzard size."
"\n\n"
"It hunts from ambush and takes prey up to its own body size. It has "
"colonised several European cities, living off feral pigeons — Berlin has "
"one of the densest Goshawk populations in the world, right in the middle "
"of town."
),
),
"rotmilan": Zusatz(
kategorie="Der Gabelschwanz",
nahrung="Aas, Regenwürmer, Mäuse — oft hinter dem Mähwerk",
lebensraum="Offene Landschaft mit Feldgehölzen",
stimme="Ein wieherndes, gezogenes „wiiiuh“",
text=(
"Rostrot, mit langen, schmalen Flügeln und einem tief gegabelten Schwanz, "
"den er im Flug ständig als Ruder verdreht. Einmal gesehen, nie mehr "
"verwechselt."
"\n\n"
"Über die Hälfte des Weltbestands brütet in Deutschland — für kaum eine "
"andere Art tragen wir so viel Verantwortung. Er folgt Traktoren und "
"Mähwerken, weil dabei Mäuse und Insekten freigelegt werden. Wer im "
"Frühsommer ein Feld mähen sieht, sieht oft auch ihn."
),
kategorie_en="The Forked Tail",
nahrung_en="Carrion, earthworms, voles — often behind the mower",
lebensraum_en="Open country with copses",
stimme_en="A drawn-out, whinnying “weee-oo”",
text_en=(
"Rusty red, with long narrow wings and a deeply forked tail that it twists "
"constantly as a rudder. Seen once, never mistaken again."
"\n\n"
"More than half the world population breeds in Germany — there is hardly "
"another species for which the country carries so much responsibility. It "
"follows tractors and mowers, which turn up voles and insects. Watch a "
"field being cut in early summer and you will often see one."
),
),
"schwarzmilan": Zusatz(
kategorie="Der Wasserjäger",
nahrung="Tote Fische, Aas, Abfall",
lebensraum="Flüsse, Seen, Auwälder",
stimme="Ein trillerndes, meckerndes Pfeifen",
text=(
"Dunkler und einheitlicher braun als der Rotmilan, mit nur schwach "
"gegabeltem Schwanz. Auf Entfernung ist die Schwanzform das sicherste "
"Merkmal."
"\n\n"
"Er hält sich fast immer in Gewässernähe auf und sammelt tote Fische von "
"der Oberfläche ab. In Afrika, wo er überwintert, gehört er zu den "
"häufigsten Greifvögeln überhaupt und ist an Städten und Märkten ein "
"gewohnter Anblick."
),
kategorie_en="The Water Hunter",
nahrung_en="Dead fish, carrion, refuse",
lebensraum_en="Rivers, lakes, floodplain woodland",
stimme_en="A trilling, bleating whistle",
text_en=(
"Darker and more uniformly brown than a Red Kite, with only a shallow fork "
"in the tail. At distance the tail shape is the reliable mark."
"\n\n"
"It stays close to water and picks dead fish off the surface. In Africa, "
"where it winters, it is among the commonest raptors of all and a familiar "
"sight around towns and markets."
),
),
"wanderfalke": Zusatz(
kategorie="Das schnellste Tier der Welt",
nahrung="Vögel, ausschließlich im Flug geschlagen",
lebensraum="Felsen, Steinbrüche, Kirchtürme, Hochhäuser",
stimme="Ein durchdringendes „kjäk-kjäk-kjäk“ am Horst",
text=(
"Kompakt und kräftig, mit spitzen Flügeln, schiefergrauem Rücken und einem "
"breiten schwarzen Bartstreif, der wie ein Helmriemen wirkt."
"\n\n"
"Im Sturzflug erreicht er über 320 km/h und ist damit das schnellste Tier "
"der Erde. Damit ihm bei dem Tempo die Luft nicht die Lunge sprengt, hat "
"er Höcker in den Nasenlöchern, die den Luftstrom bremsen — Ingenieure "
"haben sich davon bei Düsentriebwerken etwas abgeschaut. In den 1970ern war "
"er durch DDT fast ausgerottet; sein Comeback ist einer der größten Erfolge "
"des Artenschutzes."
),
kategorie_en="The Fastest Animal on Earth",
nahrung_en="Birds, taken exclusively in flight",
lebensraum_en="Cliffs, quarries, church towers, tower blocks",
stimme_en="A piercing “kek-kek-kek” at the eyrie",
text_en=(
"Compact and powerful, with pointed wings, a slate-grey back and a broad "
"black moustache that looks like a helmet strap."
"\n\n"
"In a stoop it exceeds 320 km/h, making it the fastest animal on Earth. So "
"that the airflow does not burst its lungs at that speed, it has bony "
"tubercles in its nostrils that slow the air — engineers borrowed the idea "
"for jet engine intakes. DDT almost wiped it out in the 1970s; its recovery "
"is one of conservation's great successes."
),
),
"schleiereule": Zusatz(
kategorie="Das weiße Gesicht",
nahrung="Mäuse, fast ausschließlich",
lebensraum="Scheunen, Kirchtürme, alte Gebäude in offener Landschaft",
stimme="Kein Ruf, sondern ein heiseres Kreischen — schauerlich in der Nacht",
text=(
"Goldbraun mit einem herzförmigen, leuchtend weißen Gesichtsschleier und "
"schwarzen Augen. Im Scheinwerferlicht über einer Landstraße ist sie "
"unverwechselbar."
"\n\n"
"Der Gesichtsschleier ist kein Schmuck, sondern eine Parabolantenne: Er "
"bündelt Schall auf die Ohren, die zudem asymmetrisch sitzen — eines höher "
"als das andere. Dadurch ortet sie eine Maus im völligen Dunkeln allein "
"nach Gehör, auf wenige Zentimeter genau."
),
kategorie_en="The White Face",
nahrung_en="Voles and mice, almost exclusively",
lebensraum_en="Barns, church towers, old buildings in open country",
stimme_en="Not a hoot but a hoarse shriek — unnerving at night",
text_en=(
"Golden-buff with a heart-shaped, brilliant white facial disc and black "
"eyes. Caught in headlights over a country road it is unmistakable."
"\n\n"
"That facial disc is not decoration but a parabolic dish: it funnels sound "
"to the ears, which sit asymmetrically — one higher than the other. That "
"lets it locate a mouse in total darkness by hearing alone, to within a "
"few centimetres."
),
),
"waldohreule": Zusatz(
kategorie="Die mit den Federohren",
nahrung="Wühlmäuse, gelegentlich Kleinvögel",
lebensraum="Feldgehölze und Waldränder, im Winter Schlafbäume in Orten",
stimme="Ein dumpfes, weiches „huh“ in langen Abständen",
text=(
"Schlank, rindenfarben gemustert, mit langen Federohren und orangeroten "
"Augen. Die Federohren sind kein Gehör, sondern Stimmung und Tarnung — "
"aufgestellt sieht sie aus wie ein abgebrochener Ast."
"\n\n"
"Sie baut kein eigenes Nest, sondern übernimmt alte Krähen- und "
"Elsternester. Im Winter sammeln sich Waldohreulen an gemeinsamen "
"Schlafplätzen, oft in Ortsmitten — es gibt Kiefern und Fichten, in denen "
"über zwanzig Eulen tagsüber sitzen, während darunter Menschen einkaufen."
),
kategorie_en="The One With Ear Tufts",
nahrung_en="Voles, occasionally small birds",
lebensraum_en="Copses and woodland edges; winter roosts in towns",
stimme_en="A soft, muffled “hoo” at long intervals",
text_en=(
"Slim, bark-patterned, with long ear tufts and orange eyes. The tufts have "
"nothing to do with hearing — they signal mood and aid camouflage. Raised, "
"the bird looks like a broken branch."
"\n\n"
"It builds no nest of its own, taking over old crow and magpie nests "
"instead. In winter Long-eared Owls gather at communal roosts, often in "
"town centres — there are pines and spruces holding twenty or more owls by "
"day while people shop underneath."
),
),
"graureiher": Zusatz(
kategorie="Der Geduldige",
nahrung="Fische, Frösche, Mäuse — auch Teichfische im Garten",
lebensraum="Gewässer aller Art, Wiesen, gelegentlich Gartenteiche",
stimme="Ein raues, krächzendes „chräik“, meist im Auffliegen",
text=(
"Grau, groß, mit langem Hals und dolchartigem Schnabel. Im Flug zieht er "
"den Hals zu einem S zusammen — daran unterscheidet man Reiher auf "
"Entfernung von Störchen und Kranichen, die ihn gestreckt tragen."
"\n\n"
"Er steht regungslos im Flachwasser, teils eine halbe Stunde, bis etwas in "
"Reichweite kommt. Wer einen Gartenteich hat, kennt ihn eventuell als "
"ungebetenen Gast — er kalkuliert Entfernungen zu Menschen erstaunlich "
"genau und kommt wieder, sobald niemand hinsieht."
),
kategorie_en="The Patient One",
nahrung_en="Fish, frogs, voles — garden pond fish included",
lebensraum_en="Water of any kind, meadows, occasionally garden ponds",
stimme_en="A harsh croaking “frarnk”, usually as it takes off",
text_en=(
"Grey and large, with a long neck and a dagger of a bill. In flight it "
"folds the neck into an S — that is how you tell herons from storks and "
"cranes at distance, which fly with the neck extended."
"\n\n"
"It stands motionless in shallow water, sometimes for half an hour, until "
"something comes within reach. Anyone with a garden pond may know it as an "
"uninvited guest — it judges distances to people remarkably well and comes "
"back the moment nobody is looking."
),
),
"weissstorch": Zusatz(
kategorie="Der Dachbewohner",
nahrung="Frösche, Mäuse, Regenwürmer, Insekten",
lebensraum="Feuchtwiesen und Dörfer mit Horsten auf Dächern",
stimme="Kein Gesang — er klappert mit dem Schnabel",
text=(
"Weiß mit schwarzen Schwungfedern, rotem Schnabel und roten Beinen. Im "
"Flug mit gestrecktem Hals, was ihn vom Reiher unterscheidet."
"\n\n"
"Er hat keine Stimme im eigentlichen Sinn und verständigt sich durch "
"Klappern. Auf dem Zug meidet er das offene Mittelmeer, weil er auf "
"Thermik angewiesen ist, die über Wasser fehlt — deshalb ziehen alle "
"Störche entweder über Gibraltar oder über den Bosporus. Wo ein Storch "
"geboren wurde, entscheidet, welche der beiden Routen er sein Leben lang "
"fliegt."
),
kategorie_en="The Rooftop Resident",
nahrung_en="Frogs, voles, earthworms, insects",
lebensraum_en="Wet meadows and villages with nests on roofs",
stimme_en="No song — it clatters its bill",
text_en=(
"White with black flight feathers, a red bill and red legs. It flies with "
"the neck extended, which separates it from a heron."
"\n\n"
"It has no voice to speak of and communicates by bill-clattering. On "
"migration it avoids the open Mediterranean because it depends on thermals, "
"which do not form over water — so every stork crosses either at Gibraltar "
"or at the Bosphorus. Where a stork is born decides which of the two routes "
"it will fly for the rest of its life."
),
),
"kranich": Zusatz(
kategorie="Der Vogel des Glücks",
nahrung="Sämereien, Wurzeln, Insekten, kleine Wirbeltiere",
lebensraum="Moore und Feuchtwiesen; im Zug über fast jedem Garten",
stimme="Ein weit hallendes, trompetendes „krruh“ — kilometerweit hörbar",
text=(
"Hochbeinig, grau, mit rotem Scheitelfleck und einem schwarzweißen "
"Kopfmuster. Am Boden trägt er ein Federbüschel über dem Schwanz, das wie "
"ein Federschweif wirkt."
"\n\n"
"Am ehesten bekommt ihr ihn im Überflug ins Bild: Im Oktober und März "
"ziehen hunderttausende in Keilformation über Deutschland, und man hört sie "
"lange bevor man sie sieht. Kranichpaare bleiben ein Leben lang zusammen "
"und begrüßen sich mit einem synchronen Duett — in vielen Kulturen steht er "
"deshalb für Treue und langes Leben."
),
kategorie_en="The Bird of Fortune",
nahrung_en="Seeds, roots, insects, small vertebrates",
lebensraum_en="Bogs and wet meadows; on migration over almost any garden",
stimme_en="A far-carrying, trumpeting “krooh” — audible for kilometres",
text_en=(
"Long-legged and grey, with a red crown patch and a black-and-white head "
"pattern. On the ground a bustle of drooping feathers hangs over the tail."
"\n\n"
"You are most likely to catch one overhead: in October and March hundreds "
"of thousands cross Germany in V-formation, and you hear them long before "
"you see them. Crane pairs stay together for life and greet each other with "
"a synchronised duet — which is why many cultures take the bird as a symbol "
"of fidelity and long life."
),
),
"kormoran": Zusatz(
kategorie="Der Flügeltrockner",
nahrung="Fisch, tauchend erbeutet",
lebensraum="Seen, Flüsse, Küsten — Brutkolonien in Bäumen",
stimme="Nur am Nest, ein tiefes Grunzen",
text=(
"Schwarz, gänsegroß, mit hakenbewehrtem Schnabel. Man erkennt ihn an der "
"Haltung: Er sitzt aufrecht auf einem Pfahl und breitet die Flügel aus."
"\n\n"
"Das tut er, weil sein Gefieder kaum eingefettet ist — anders als bei "
"Enten saugt es sich voll. Was nach Konstruktionsfehler klingt, ist ein "
"Vorteil: Weniger Auftrieb bedeutet leichteres Tauchen. Er bezahlt dafür "
"mit der Trockenzeit an Land. Zwischen Anglern und Kormoranen herrscht "
"seit Jahrzehnten Streit; die Studienlage ist deutlich uneindeutiger als "
"die Debatte."
),
kategorie_en="The Wing Drier",
nahrung_en="Fish, caught by diving",
lebensraum_en="Lakes, rivers, coasts — breeds colonially in trees",
stimme_en="Only at the nest, a deep grunting",
text_en=(
"Black and goose-sized, with a hooked bill. You know it by the posture: "
"upright on a post with wings spread wide."
"\n\n"
"It does that because its plumage is barely oiled — unlike a duck's, it "
"soaks through. What sounds like a design fault is an advantage: less "
"buoyancy means easier diving. It pays for that with drying time ashore. "
"Anglers and cormorants have been in dispute for decades; the evidence is "
"considerably less clear-cut than the argument."
),
),
"eisvogel": Zusatz(
kategorie="Der fliegende Edelstein",
nahrung="Kleinfische, Kaulquappen, Wasserinsekten",
lebensraum="Klare, langsam fließende Gewässer mit Steilufern",
stimme="Ein scharfes, hohes „tiht“ im Vorbeiflug",
text=(
"Türkisblauer Rücken, orangeroter Bauch, kurzer Schwanz, riesiger Schnabel. "
"Meist sieht man nur einen blauen Blitz über dem Wasser."
"\n\n"
"Das Blau ist kein Farbstoff: Die Federstruktur bricht das Licht, ähnlich "
"wie bei einer Seifenblase. Zerriebene Eisvogelfedern sind deshalb braun. "
"Er stößt aus dem Ansitz ins Wasser und muss dabei die Lichtbrechung an der "
"Wasseroberfläche mit einrechnen — die Beute ist nicht dort, wo sie zu sein "
"scheint. Harte Winter, in denen Gewässer zufrieren, können ganze "
"Populationen auslöschen."
),
kategorie_en="The Flying Jewel",
nahrung_en="Small fish, tadpoles, aquatic insects",
lebensraum_en="Clear, slow-flowing water with steep banks",
stimme_en="A sharp, high “tseee” as it passes",
text_en=(
"A turquoise back, orange underparts, a stubby tail and an enormous bill. "
"Usually all you see is a blue flash over the water."
"\n\n"
"The blue is not a pigment: the feather structure refracts light, much like "
"a soap bubble. Ground-up kingfisher feathers are brown. It dives from a "
"perch and has to allow for the refraction at the water's surface — the "
"prey is not where it appears to be. Hard winters that freeze the water can "
"wipe out whole populations."
),
),
"lachmoewe": Zusatz(
kategorie="Die Binnenlandmöwe",
nahrung="Insekten, Würmer, Fisch, Abfall",
lebensraum="Seen, Flüsse, Ackerland, Stadtparks",
stimme="Ein kreischendes, lachendes „kräääh“ — daher der Name",
text=(
"Die Möwe, die man auch weit vom Meer sieht. Im Sommer mit "
"schokoladenbraunem Kopf, im Winter weiß mit einem dunklen Ohrfleck — "
"zwei so verschiedene Erscheinungen, dass man sie für zwei Arten hält."
"\n\n"
"Sie folgt dem Pflug wie ein Rotmilan dem Mähwerk und sammelt Würmer aus "
"der frischen Furche. Der braune Kopf ist übrigens keine Kapuze bis in den "
"Nacken, sondern endet vorn — anders als bei den echten Kapuzenmöwen."
),
kategorie_en="The Inland Gull",
nahrung_en="Insects, worms, fish, refuse",
lebensraum_en="Lakes, rivers, farmland, city parks",
stimme_en="A screeching, laughing “kreeah” — hence the German name",
text_en=(
"The gull you see far from the sea. In summer it has a chocolate-brown "
"hood, in winter a white head with a dark ear spot — two appearances so "
"different that people take them for two species."
"\n\n"
"It follows the plough the way a Red Kite follows the mower, picking worms "
"from the fresh furrow. The brown hood, incidentally, stops short of the "
"nape rather than running down it, unlike the true hooded gulls."
),
),
"stockente": Zusatz(
kategorie="Die Stammente",
nahrung="Wasserpflanzen, Samen, Schnecken, Brot (nicht gut für sie)",
lebensraum="Jedes Gewässer, vom Stadtteich bis zum Fluss",
stimme="Das bekannte „quak“ — nur das Weibchen, der Erpel raunzt leise",
text=(
"Der Erpel hat einen flaschengrünen Kopf, weißen Halsring und braune Brust; "
"das Weibchen ist unscheinbar braun gesprenkelt. Beide zeigen den blauen "
"Flügelspiegel."
"\n\n"
"Von ihr stammen fast alle Hausenten ab. Im Hochsommer trägt auch der Erpel "
"ein tarnfarbenes Schlichtkleid und ist dann kaum vom Weibchen zu "
"unterscheiden — in dieser Zeit wechselt er alle Schwungfedern gleichzeitig "
"und ist für Wochen flugunfähig. Brot ist für sie übrigens schädlich; "
"Haferflocken oder Erbsen sind besser."
),
kategorie_en="The Original Duck",
nahrung_en="Water plants, seeds, snails, bread (bad for them)",
lebensraum_en="Any water, from a town pond to a river",
stimme_en="The familiar quack — the female only; the drake rasps quietly",
text_en=(
"The drake has a bottle-green head, a white collar and a brown breast; the "
"female is plain mottled brown. Both show the blue wing speculum."
"\n\n"
"Almost all domestic ducks descend from it. In high summer the drake also "
"wears drab eclipse plumage and is then hard to tell from the female — "
"during that period it moults all its flight feathers at once and cannot "
"fly for weeks. Bread, incidentally, is bad for them; oats or peas are "
"better."
),
),
"graugans": Zusatz(
kategorie="Die Stammgans",
nahrung="Gras, Getreide, Wasserpflanzen",
lebensraum="Seen und Feuchtwiesen, im Winter auf Äckern",
stimme="Das laute, nasale „gaga-gack“ der Hausgans",
text=(
"Groß, grau, mit orangefarbenem Schnabel und rosa Beinen. Im Flug fällt "
"der sehr helle Vorderflügel auf."
"\n\n"
"Von ihr stammt die Hausgans ab, weshalb sie so vertraut klingt. Konrad "
"Lorenz erforschte an Graugänsen die Prägung: Frisch geschlüpfte Küken "
"folgen dem ersten großen bewegten Objekt, das sie sehen — in seinem Fall "
"ihm selbst. Familienverbände bleiben über Monate zusammen, und Paare oft "
"über Jahre."
),
kategorie_en="The Ancestral Goose",
nahrung_en="Grass, grain, water plants",
lebensraum_en="Lakes and wet meadows, arable fields in winter",
stimme_en="The loud nasal honking of a farmyard goose",
text_en=(
"Large and grey, with an orange bill and pink legs. In flight the very pale "
"forewing stands out."
"\n\n"
"The domestic goose descends from it, which is why it sounds so familiar. "
"Konrad Lorenz studied imprinting in Greylags: newly hatched goslings "
"follow the first large moving object they see — in his case, himself. "
"Family groups stay together for months, and pairs often for years."
),
),
}
# fmt: on
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff