Metadata-Version: 2.4
Name: saitenka
Version: 1.1.0
Summary: Learn Japanese from the video you're watching: FSRS-aware subtitle coloring + one-key Anki mining, drawn inside mpv
Project-URL: Homepage, https://github.com/serjflint/saitenka
Project-URL: Documentation, https://saitenka.readthedocs.io
Project-URL: Repository, https://github.com/serjflint/saitenka
Project-URL: Issues, https://github.com/serjflint/saitenka/issues
Project-URL: Changelog, https://github.com/serjflint/saitenka/blob/main/CHANGELOG.md
Requires-Python: >=3.13
Requires-Dist: certifi>=2026.6.17
Requires-Dist: cyclopts>=4.22.1
Requires-Dist: filelock>=3.32.0
Requires-Dist: fonttools>=4.55
Requires-Dist: fugashi>=1.5.2
Requires-Dist: ijson>=3.5.1
Requires-Dist: keyring>=25.7.0; sys_platform != 'linux' or python_version < '3.15'
Requires-Dist: msgspec>=0.21.1
Requires-Dist: numpy>=2.0
Requires-Dist: pillow>=11.0
Requires-Dist: platformdirs>=4.11.0
Requires-Dist: psutil>=7.2.2
Requires-Dist: rich>=14.0
Requires-Dist: stamina>=26.1.0
Requires-Dist: structlog>=26.1.0
Requires-Dist: tomlkit>=0.15.1
Requires-Dist: unidic-lite>=1.0.8
Provides-Extra: deinflect
Requires-Dist: saitenka-deinflect>=0.1.0; extra == 'deinflect'
Provides-Extra: full
Requires-Dist: jamdict-data-fix>=1.5.1a2; (platform_system == 'Windows') and extra == 'full'
Requires-Dist: jamdict-data>=1.5; (platform_system != 'Windows') and extra == 'full'
Requires-Dist: jamdict>=0.1a11.post2; extra == 'full'
Requires-Dist: opentelemetry-api>=1.44.0; extra == 'full'
Requires-Dist: opentelemetry-sdk>=1.44.0; extra == 'full'
Requires-Dist: saitenka-deinflect>=0.1.0; extra == 'full'
Provides-Extra: jmdict
Requires-Dist: jamdict-data-fix>=1.5.1a2; (platform_system == 'Windows') and extra == 'jmdict'
Requires-Dist: jamdict-data>=1.5; (platform_system != 'Windows') and extra == 'jmdict'
Requires-Dist: jamdict>=0.1a11.post2; extra == 'jmdict'
Provides-Extra: linux-keyring
Requires-Dist: keyring>=25.7.0; (sys_platform == 'linux') and extra == 'linux-keyring'
Provides-Extra: minimal
Provides-Extra: telemetry
Requires-Dist: opentelemetry-api>=1.44.0; extra == 'telemetry'
Requires-Dist: opentelemetry-sdk>=1.44.0; extra == 'telemetry'
Description-Content-Type: text/markdown

# 再点火 (Saitenka) — learn Japanese from the video you're already watching

Saitenka turns **mpv** into an immersion workstation: Japanese subtitles get **FSRS-aware word
coloring**, hovering a word opens a **Yomitan-style multi-dictionary tooltip**, and one key **mines**
the sentence — audio, screenshot, reading, pitch, frequency — straight into **Anki**. Everything is
drawn into mpv's *own* video surface, so there's no second window and none of the Windows
overlay/fullscreen breakage that plagues external overlays.

![Saitenka's in-mpv overlay: the word 読む highlighted in a subtitle line with its multi-definition Yomitan-style tooltip open beside it.](https://raw.githubusercontent.com/serjflint/saitenka/main/docs/screenshot-hover.jpg)

- **再点火 = "re-ignition"** — built to make picking study back up frictionless after a long break.
- **Local-first and grounded:** readings and pitch always come from dictionaries, never a language model.

## What it does

- **FSRS-aware subtitle coloring** — an optional copy of Anki's database distinguishes learning, young,
  mature-known, and forgotten words (so "known" means *actually remembered right now*), and **N+1**
  sentences — exactly one unknown word, the ideal thing to mine — are highlighted.
- **Multi-dictionary tooltip** on hover — ordered definitions, ruby, frequency pills, pitch-accent,
  clickable cross-references, in-tooltip word scanning, wildcard search. Imports your **Yomitan**
  dictionaries.
- **One-key + bulk Anki mining** via AnkiConnect — sentence audio, clean screenshot, reading, glossary,
  frequency, with dedup and FSRS-aware tagging.
- **No second window** — the tooltip, colored subs, and mining UI composite into mpv's OSD over JSON-IPC:
  one surface, airspace-safe, fullscreen-safe, cross-platform (Linux · macOS · Windows).

## Install

The recommended install is the self-bootstrapping release bundle (it also sets up mpv + ffmpeg and the
auto-start mpv plugin) — see the **[Quick start](https://github.com/serjflint/saitenka#quick-start)**.

For a pip/uv-native install of just the Python package:

```bash
uv tool install saitenka          # or: pipx install saitenka
saitenka setup                    # installs mpv/ffmpeg + the auto-start plugin, writes config
saitenka run video.mkv            # hover a word → tooltip; Ctrl+m → mine
```

The optional inflection-chain display is a **GPL-3.0** add-on (derived from Yomitan); the core is
**Apache-2.0**. A `[full]` install is therefore GPL-3.0 — see
[LICENSING.md](https://github.com/serjflint/saitenka/blob/main/LICENSING.md).

## Full documentation

Everything — how it works, how it compares, where it fits in a media-server setup, requirements, and the
feature tour — lives in the **[full README on GitHub](https://github.com/serjflint/saitenka#readme)**.
