Metadata-Version: 2.4
Name: mirumoji
Version: 3.0.0rc2
Summary: Self-Hostable Japanese Language Immersion Tool
Author-email: svdc <svdc1mail@gmail.com>
Maintainer-email: svdc <svdc1mail@gmail.com>
License-Expression: MIT
Project-URL: Repository, https://github.com/svdC1/mirumoji
Project-URL: Issues, https://github.com/svdC1/mirumoji/issues
Project-URL: Documentation, https://svdc1.github.io/mirumoji/docs
Project-URL: Changelog, https://svdc1.github.io/mirumoji/docs/changelog
Keywords: japanese,video-player,language,cli,gui,language-learning,immersion,anki,whisper
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: GPU :: NVIDIA CUDA :: 12
Classifier: Environment :: Console
Classifier: Framework :: FastAPI
Classifier: Framework :: Pydantic :: 2
Classifier: Framework :: AsyncIO
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Classifier: Intended Audience :: End Users/Desktop
Classifier: Topic :: Education
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: typer
Requires-Dist: rich
Requires-Dist: python-dotenv
Requires-Dist: platformdirs
Requires-Dist: pyyaml
Provides-Extra: server
Requires-Dist: fastapi<0.137,>=0.136.3; extra == "server"
Requires-Dist: uvicorn<0.50,>=0.49; extra == "server"
Requires-Dist: fugashi[unidic]<2,>=1.5.2; extra == "server"
Requires-Dist: kotobase<0.3,>=0.2.7; extra == "server"
Requires-Dist: pydantic<3,>=2.13.4; extra == "server"
Requires-Dist: pydantic[email]; extra == "server"
Requires-Dist: srt<4,>=3.5.3; extra == "server"
Requires-Dist: python-multipart<0.1,>=0.0.32; extra == "server"
Requires-Dist: aiofiles<26,>=25.1; extra == "server"
Requires-Dist: tqdm<5,>=4.67; extra == "server"
Requires-Dist: modal<2,>=1.4.3; extra == "server"
Requires-Dist: genanki<0.14,>=0.13.1; extra == "server"
Requires-Dist: aiosqlite<0.23,>=0.22.1; extra == "server"
Requires-Dist: openai<3,>=2.41; extra == "server"
Requires-Dist: anthropic<1,>=0.107; extra == "server"
Provides-Extra: whisper-local
Requires-Dist: faster-whisper<2,>=1.2.1; extra == "whisper-local"
Requires-Dist: huggingface_hub<2,>=1.0; extra == "whisper-local"
Requires-Dist: sentencepiece<0.3,>=0.2; extra == "whisper-local"
Requires-Dist: requests<3,>=2.32; extra == "whisper-local"
Provides-Extra: gui
Requires-Dist: flet[all]==0.85.2; extra == "gui"
Provides-Extra: dev
Requires-Dist: ruff; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-asyncio; extra == "dev"
Requires-Dist: httpx; extra == "dev"
Requires-Dist: pip-tools; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Requires-Dist: types-tqdm; extra == "dev"
Requires-Dist: types-aiofiles; extra == "dev"
Requires-Dist: mkdocs; extra == "dev"
Requires-Dist: mkdocs-material; extra == "dev"
Requires-Dist: mkdocstrings; extra == "dev"
Requires-Dist: mkdocstrings-python; extra == "dev"
Requires-Dist: mkdocs-autorefs; extra == "dev"
Requires-Dist: mkdocs-awesome-nav; extra == "dev"
Requires-Dist: black; extra == "dev"
Dynamic: license-file

# mirumoji

[![PyPI](https://img.shields.io/pypi/v/mirumoji?style=flat&logo=pypi&logoColor=white)](https://pypi.org/project/mirumoji/)
[![License](https://img.shields.io/badge/license-MIT-green?style=flat)](https://github.com/svdC1/mirumoji/blob/main/.github/LICENSE)
[![Docs](https://img.shields.io/badge/docs-lightgrey?style=flat&logo=materialformkdocs&logoColor=black&logoSize=auto)](https://svdc1.github.io/mirumoji/docs)
[![Docker Pulls](https://img.shields.io/docker/pulls/svdc1/mirumoji?style=flat&logo=docker&logoColor=white)](https://hub.docker.com/r/svdc1/mirumoji)
[![Quality](https://img.shields.io/github/actions/workflow/status/svdC1/mirumoji/release.yaml?branch=main&style=flat&logo=githubactions&logoColor=white&label=quality)](https://github.com/svdC1/mirumoji/actions/workflows/release.yaml)

An open-source, self-hosted **Japanese immersion toolkit**. Drop in a video, an
anime episode, a drama, or an audio clip and Mirumoji gives you clickable
tokenized subtitles with instant dictionary lookups, Whisper-powered
transcription, SRT generation, clip saving, and one-click Anki export. All
running locally in Docker, with optional cloud GPU and LLM features

<p align="center">
  <img src="https://github.com/svdC1/mirumoji/blob/main/.github/assets/player_example.gif?raw=true" alt="Mirumoji demo" width="100%">
</p>

---

## Quickstart

Mirumoji runs as a local `Docker Compose Application`. The quickest way to start is to download the
`Desktop Launcher` for your platform

### Detailed Walkthroughs


- Full Walkthrough &rarr; [`GUI Setup`](https://svdc1.github.io/mirumoji/docs/setup/gui/)

- CLI Setup Walkthrough &rarr; [`CLI Setup`](https://svdc1.github.io/mirumoji/docs/setup/cli/)

- Manual Setup Walkthrough &rarr; [`Manual Setup`](https://svdc1.github.io/mirumoji/docs/setup/manual/)

---

## Features

<table>
  <tr>
    <td><b>Interactive Player</b></td>
    <td>Load any video and <code>.srt</code> subtitles for clickable, tokenized Japanese lines with instant dictionary pop-ups</td>
  </tr>
  <tr>
    <td><b>Transcription &amp; SRT</b></td>
    <td>Generate subtitles and transcribe audio with <a href="https://github.com/SYSTRAN/faster-whisper"><code>faster-whisper</code></a>, on a <a href="https://svdc1.github.io/mirumoji/docs/guides/gpu/"><code>local or cloud GPU</code></a></td>
  </tr>
  <tr>
    <td><b>Dictionary &amp; Analyzer</b></td>
    <td>Wildcard dictionary search (<a href="https://github.com/svdC1/kotobase"><code>kotobase</code></a>) + a paste-in text analyzer with furigana</td>
  </tr>
  <tr>
    <td><b>LLM Breakdowns</b></td>
    <td>Optional GPT / Claude / Gemini word &amp; sentence breakdowns with fully customizable prompts</td>
  </tr>
  <tr>
    <td><b>Clips &amp; Anki</b></td>
    <td>Save video segments with their word breakdowns and export them as an Anki deck</td>
  </tr>
  <tr>
    <td><b>Profiles</b></td>
    <td>Keep files, transcripts, clips, and LLM templates organized per profile on the server</td>
  </tr>
  <tr>
    <td><b>CLI &amp; Desktop GUI</b></td>
    <td>Run the docker compose application with <a href="https://svdc1.github.io/mirumoji/docs/cli/"><code>mirumoji up</code></a> or the <a href="https://svdc1.github.io/mirumoji/docs/setup/gui/"><code>desktop launcher</code></a></td>
  </tr>
</table>

---

## Help

<table>
  <tr>
    <td><b><a href="https://svdc1.github.io/mirumoji/docs">Documentation</a></b></td>
    <td>Guides, Full Python API Reference, Full Frontend API Reference</td>
  </tr>
  <tr>
    <td><b><a href="https://svdc1.github.io/mirumoji/docs/setup/">Setup Guide</a></b></td>
    <td>CLI, GUI, and Manual setup</td>
  </tr>
  <tr>
    <td><b><a href="https://svdc1.github.io/mirumoji/docs/guides/gpu/">Using a GPU</a></b></td>
    <td>Local GPU vs. Modal Cloud GPU</td>
  </tr>
  <tr>
    <td><b><a href="https://svdc1.github.io/mirumoji/docs/project/changelog/">Changelog</a></b></td>
    <td>Changed Between Versions</td>
  </tr>
  <tr>
    <td><b><a href="https://svdc1.github.io/mirumoji/">Live Preview</a></b></td>
    <td>View a live preview of the frontend (not backend running)</td>
  </tr>
</table>


---

## Contributing

> Pull Requests, bug reports, and feature requests are all welcome.

> See [`CONTRIBUTING`](https://github.com/svdC1/mirumoji/blob/main/.github/CONTRIBUTING.md)
> for the dev container setup, quality gates, and PR conventions.
