Skip to main content

Reads daily CC-licensed flash sci-fi from 365tomorrows.com aloud - provider skill for ovos-common-reading-pipeline-plugin

Project description

365tomorrows Stories (provider)

A provider skill for ovos-common-reading-pipeline-plugin, reading flash science fiction from 365tomorrows.com aloud - the full archive (~7600 stories at time of writing), not just the latest few.

A new short story (≤600 words) every day since 2005, licensed CC BY-NC-ND 3.0 - attribution required, non-commercial, no derivatives (reading the text aloud unmodified is a straightforward reproduction, not a derivative work).

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.

Install

pip install ovos-skill-365tomorrows-stories ovos-common-reading-pipeline-plugin

Source

Indexes the full archive, not just recent stories: paginates through WordPress's REST API (wp-json/wp/v2/posts, filtered to the "Story" category - excludes the site's separate "Voices of Tomorrow" audio posts and "Fragments"), ~7600 stories at time of writing across ~76 pages of 100. Refreshed at most once every 24 hours (the archive is mostly static - only ~1 new story/day).

Each listing page already includes full post content, so the index captures each story's author (parsed from its first paragraph, always Author: <name>) without a second request per story - only reading a specific chosen story needs one more request, to that story's own wp-json/wp/v2/posts/<id> endpoint.

(An earlier version of this skill used the RSS feed instead, which only exposes the ~10 most recent stories - the REST API change was made specifically to reach the full archive.)

Translation

Unlike the Gutenberg-sourced fairy-tale providers in this family (ovos-skill-andersen-tales, ovos-skill-grimm-tales, ovos-skill-bechstein-tales, ovos-skill-cosquin-tales, ovos-skill-andrew-lang-tales), this provider does machine-translate for non-English devices - same approach as ovos-skill-ovosblog/ ovos-skill-arxiv-papers. These are short (≤600 word), self-contained stories, a much smaller translation-quality risk than a full fairy tale's literary prose (see the reasoning in ovos-common-reading-pipeline-plugin#5).

Matches search phrases against translated titles and discloses via "machine_translated": true/false in the search response. If no translation plugin is available, this provider does not respond to searches at all for a non-English device, rather than silently offering English content the user didn't ask for.

Collection hints

Responds to collection_hint values in the device's own language - e.g. "365 tomorrows"/"tomorrows" on English, "science fiction noveller" on Danish, "racconti di fantascienza" on Italian - matched fuzzily against that language's own alias list (see locale/<lang>/collection.voc). Like ovos-skill-ovosblog/ ovos-skill-arxiv-papers, this provider works on any device language, so aliases fall back to English for any language we haven't bothered translating - see ovos-common-reading-pipeline-plugin#26. The collection name itself ("365tomorrows") stays untranslated - it's a proper noun.

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.

"Surprise me"

A search with no specific phrase but a matching collection_hint returns the most recent story, by publish date.

Credits

Content from 365tomorrows.com, licensed CC BY-NC-ND 3.0. Author credited per-story via the author field in every search response.

Category

Entertainment

Tags

#stories #scifi #flashfiction #creativecommons #provider

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ovos_skill_365tomorrows_stories-0.1.2.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ovos_skill_365tomorrows_stories-0.1.2-py3-none-any.whl (28.9 kB view details)

Uploaded Python 3

File details

Details for the file ovos_skill_365tomorrows_stories-0.1.2.tar.gz.

File metadata

File hashes

Hashes for ovos_skill_365tomorrows_stories-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ff09d51813c329fc6077a65662a1ecc9605e0c8434af7460522c1d3c993ab546
MD5 35d66a2b9156ace5f7e82a38cd8bc776
BLAKE2b-256 a4236da9dad9629ee96b7d24030da2fa031673cff326e51dfa46a9c8c6cf88b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovos_skill_365tomorrows_stories-0.1.2.tar.gz:

Publisher: publish.yml on andlo/ovos-skill-365tomorrows-stories

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ovos_skill_365tomorrows_stories-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ovos_skill_365tomorrows_stories-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 006e488a4787048b07d415015920d9a36ab55d263ffed96aa0ca0b91cf13df12
MD5 abaf42e578e495eb2e3116570f007141
BLAKE2b-256 3f15b4a63bc0167f606c3a10e6e7df4130581530f28d0fba550f34440452d525

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovos_skill_365tomorrows_stories-0.1.2-py3-none-any.whl:

Publisher: publish.yml on andlo/ovos-skill-365tomorrows-stories

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page