Skip to main content

Bechstein Tales (provider)

A provider skill for ovos-common-reading-pipeline-plugin, delivering Ludwig Bechstein's German fairy tales.

Bechstein was a contemporary of the Brothers Grimm and published his own hugely popular collection - a genuinely different source, not just "more Grimm" (though a few titles overlap, since both drew from the same regional oral tradition).

Tests PyPI version

This skill has no standalone voice interface. It registers no intents and never speaks. It only answers ovos.common_reading.* bus messages, so you also need ovos-common-reading-pipeline-plugin installed and added to your pipeline config for it to be useful at all.

German only, no translation. Same situation as ovos-skill-andrew-lang-tales, just for German instead of English - full fairy tale prose is a bigger translation cost/quality risk than a blog post or abstract. On any device language other than German, this provider never loads at all: initialize() checks the device's language against SUPPORTED_LANGUAGES = {"de"} before loading the index or registering any bus events, logging why. Set your OVOS device's language to German (de-*) to use this provider.

Install

pip install ovos-skill-bechstein-tales ovos-common-reading-pipeline-plugin

Story index

The story index (title, anchor per story) is bundled with this package (locale/de-de/index.json), not scraped live - browsing/ matching needs no internet at all. Only fetching a specific story's actual text (once chosen) needs a live request to Project Gutenberg.

80 stories from Ludwig Bechstein's Märchenbuch (Project Gutenberg ebook #63465). The index was built once via scripts/build_index.py, which parses the book's own "Inhalt" (table of contents) table rather than assuming every <div class="chapter"> is a real story - one entry ("Alphabetisches Verzeichnis der Märchen", the book's own index) was correctly excluded this way since it has no story paragraphs.

Two real bugs were found and fixed while building this:

  • Encoding: the Gutenberg page doesn't declare a charset in its HTTP headers, so requests defaulted to ISO-8859-1 and mangled German text (AschenbrödelAschenbrödel). Fixed by setting r.encoding = "utf-8" explicitly.
  • Drop caps: get_text(' ', strip=True) inserts a spurious space at drop-cap span boundaries (<span>E</span>s war einmalE s war einmal, splitting the first word). Fixed by extracting text with no separator and instead collapsing the source HTML's line-wrapped whitespace with a regex - the same class of bug as ovos-skill-ovosblog's inline-<code> finding, different cause.

Collection hints

Responds to collection_hint values like "bechstein", "ludwig bechstein", matched fuzzily (see COLLECTION_ALIASES in __init__.py).

Content type

Identifies as content_type: "story" or "tale". A search with a content_type hint for anything else gets no response from this provider.

Credits

Content sourced from Project Gutenberg. Scraping/extraction/caching logic ported from ovos-skill-andrew-lang-tales.

Category

Entertainment

Tags

#stories #fairytales #bechstein #german #provider

Release files for ovos-skill-bechstein-tales 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ovos-skill-bechstein-tales 0.1.2
File Size Uploaded
ovos_skill_bechstein_tales-0.1.2.tar.gz 26.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ovos-skill-bechstein-tales 0.1.2
File Interpreter ABI Platform
ovos_skill_bechstein_tales-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 49.2 kB

Release files / ovos_skill_bechstein_tales-0.1.2.tar.gz

Download URL ovos_skill_bechstein_tales-0.1.2.tar.gz
Size 26.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f506b2521be6af940e58d99bf832027b80d97f47a980ffdeff750080d6dbfa43
BLAKE2b-256 checksum
How to use checksums
0f320e588d36cfeec9d61ddbd1606f16e11eea4b14e3d6234191d308e7ea7f47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 25, 2026.

Transparency log

Release files / ovos_skill_bechstein_tales-0.1.2-py3-none-any.whl

Download URL ovos_skill_bechstein_tales-0.1.2-py3-none-any.whl
Size 23.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
90abc4be639c63fb9d05d1c62b72ae0df6b90b2ae72a14e3d38058d2ab8a79bf
BLAKE2b-256 checksum
How to use checksums
dcdb92f8269cf07276232a16c994d66f0f1013e7d81f070058dddbb711fc53fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page