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

+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