Metadata-Version: 2.4
Name: mirumoji
Version: 3.1.1
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/project/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: tqdm<5,>=4.67
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: 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: ctranslate2<5,>=4.5; 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/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)
[![Release Action](https://img.shields.io/github/actions/workflow/status/svdC1/mirumoji/release.yaml?style=flat&logo=githubactions&logoColor=white&label=release)](https://github.com/svdC1/mirumoji/actions/workflows/release.yaml)
[![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/svdc1/mirumoji/total?style=flat&logo=github&label=GitHub%20Downloads)]()


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
subtitle generation, clip saving, and 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`](https://docs.docker.com/compose/)

The quickest way to start is to download the `Desktop Launcher` for your platform and follow
the [`Setup Walkthrough`](https://svdc1.github.io/mirumoji/docs/setup/gui/)

### Alternatives

You can also setup Mirumoji [`Manually`](https://svdc1.github.io/mirumoji/docs/setup/manual/), or through its [`CLI`](https://svdc1.github.io/mirumoji/docs/setup/cli/)

---

## Features

<table>
  <tr>
    <td><b>Interactive Player</b></td>
    <td>Load Videos + Subtitles For Clickable, Tokenized Japanese Lines With Dictionary Pop-Ups</td>
  </tr>
  <tr>
    <td><b>Transcription</b></td>
    <td>Generate Subtitles + 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 / Cloud GPU</code></a></td>
  </tr>
  <tr>
    <td><b>Dictionary</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</b></td>
    <td>Optionally Use Gemini / Claude / GPT API Keys (Or Your Own Local LLM Server) To Generate Sentence Breakdowns With Fully Customizable Prompts</td>
  </tr>
  <tr>
    <td><b>Clips + 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 Generated Files, Transcripts, Clips, and LLM Templates Organized Per Profile On The Server</td>
  </tr>
  <tr>
    <td><b>Launcher</b></td>
    <td>Easily Run The Docker Compose Application Via The <a href="https://svdc1.github.io/mirumoji/docs/cli/"><code>CLI</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 Backend / 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 + 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 x Modal Cloud GPU</td>
  </tr>
  <tr>
    <td><b><a href="https://svdc1.github.io/mirumoji/docs/project/changelog/">Changelog</a></b></td>
    <td>What Changed Between Versions</td>
  </tr>
  <tr>
    <td><b><a href="https://svdc1.github.io/mirumoji/">Live Preview</a></b></td>
    <td>Test The Frontend (No Backend Running)</td>
  </tr>
</table>


---

## Contributing

- All contributions are welcome

- See [`CONTRIBUTING`](https://svdc1.github.io/mirumoji/docs/project/contributing) for more information on how to
  contribute
