diora-web/docs/search.md
mrwnslz e5a170838b
Some checks failed
Test / e2e (push) Waiting to run
Build and push Docker image / build (push) Successful in 15s
Test / test (push) Has been cancelled
Projekte mit Preset Forschung: Quellen (Paper per DOI, Bücher, Folgen mit Zeitmarke, Artikel), Zitierschlüssel, BibTeX/CSL-Export, Markdown-Notizen mit [@key]; Ende-zu-Ende-verschlüsselt. Navigation: Projekte als Tab am Handy, Suche als Lupe; sw v141
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 20:14:17 +02:00

1.9 KiB

Suche

One field for all of diora: a section of its own in the navigation (static/js/nav.js, section and group suche, flag side):

  • phone (the apps' tab bar, the web page's narrow bar): beside Home · Lesen · Hören;
  • the apps' sidebar and the web page's wide bar: at the foot, above Abos & Quellen.

It's never the section the app opens in next time (transient: diora_nav_section isn't written for it).

What is searched where

Area Where Opens
Bücher, Zeitschriften on the device (_lastBookListData / bookMetaCache): titles are encrypted, the server never sees them; title, author, series, file name, folders; editions of one work once openBook(id)
Hörbücher, Podcasts (Abos) server: title, author __dioraAudiobookOpen(id) / __dioraPodcastOpenFeed(id)
Folgen server: the full-text index (podcasts/discover.py, titles and shownotes, podcasts only) __dioraPodcastOpenEpisode(row) if the podcast UI has it, else the podcast's page; ▶ plays (podcastPlayEpisode)
Artikel server: titles and authors of news and blog items not expired __dioraFeedsOpenItem(id)
Nachrichtenquellen, Blogs server: title, address, category the news / blogs
Radio server: saved stations, name, tags, country playStation()

Every word has to be there as the start of a word ("plattf" finds "Plattform"); case and diacritics don't count. "Darüber hinaus" hands the query to Abos & Quellen (new podcasts, YouTube, feeds) or the radio directory search. The last eight queries (Enter or a hit opened) are kept on the device. DioraSearch.open(q) opens it from anywhere.

API

GET /search/?q=… (signed in) → {q, podcasts, podcasts_total, audiobooks, audiobooks_total, episodes, sources, articles, articles_total, stations}; {q, empty: true} for less than two letters. Episodes come as the episode lists give them (_episode_list_data). Eight per area (articles sixteen).