{"id":44474242,"url":"https://github.com/0xzerolight/anki_miner","last_synced_at":"2026-05-27T00:01:03.757Z","repository":{"id":338097612,"uuid":"1156661321","full_name":"0xzerolight/anki_miner","owner":"0xzerolight","description":"Automated Japanese vocabulary mining from anime subtitles.","archived":false,"fork":false,"pushed_at":"2026-05-24T19:21:20.000Z","size":16327,"stargazers_count":18,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-24T21:17:51.989Z","etag":null,"topics":["anime","anki","ankiconnect","flashcards","immersion-learning","japanese","japanese-dictionary","japanese-language","japanese-language-learners","japanese-learning","japanese-study","jisho-dictionary","jmdict","mecab","python","subs2srs","yomitan","yt-dlp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0xzerolight.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-12T22:48:01.000Z","updated_at":"2026-05-24T19:33:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/0xzerolight/anki_miner","commit_stats":null,"previous_names":["0xzerolight/anki_miner"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/0xzerolight/anki_miner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xzerolight%2Fanki_miner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xzerolight%2Fanki_miner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xzerolight%2Fanki_miner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xzerolight%2Fanki_miner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xzerolight","download_url":"https://codeload.github.com/0xzerolight/anki_miner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xzerolight%2Fanki_miner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33543973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anime","anki","ankiconnect","flashcards","immersion-learning","japanese","japanese-dictionary","japanese-language","japanese-language-learners","japanese-learning","japanese-study","jisho-dictionary","jmdict","mecab","python","subs2srs","yomitan","yt-dlp"],"created_at":"2026-02-12T22:08:19.553Z","updated_at":"2026-05-27T00:01:03.749Z","avatar_url":"https://github.com/0xzerolight.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Anki Miner\n\n[![CI](https://github.com/0xzerolight/anki_miner/actions/workflows/ci.yml/badge.svg)](https://github.com/0xzerolight/anki_miner/actions/workflows/ci.yml)\n[![PyPI version](https://img.shields.io/pypi/v/anki-miner.svg)](https://pypi.org/project/anki-miner/)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![Code of Conduct](https://img.shields.io/badge/code%20of%20conduct-Contributor%20Covenant%203.0-blueviolet.svg)](CODE_OF_CONDUCT.md)\n[![GitHub stars](https://img.shields.io/github/stars/0xzerolight/anki_miner?style=social)](https://github.com/0xzerolight/anki_miner/stargazers)\n\nTurn native Japanese content into Anki vocabulary cards - with screenshots, sentence audio, furigana, pitch accent, and frequency data.\n\n\nPlease leave a ⭐ star if Anki Miner helped you - it helps others find it.\n\n\n## Showcase\n\n![Anki Miner Showcase](gifs/anki_miner_showcase.png)\n\n### Example cards\n\n| | | |\n|---|---|---|\n| ![Cowboy Bebop](gifs/cowboy_bebop.gif) | ![Frieren](gifs/frieren.gif) | ![Steins;Gate](gifs/steins;gate.gif) |\n\n## Installation\n\n### Requirements\n\n- **ffmpeg** on PATH.\n  - macOS: `brew install ffmpeg`\n  - Ubuntu/Debian: `sudo apt install ffmpeg`\n  - Windows: [download from ffmpeg.org](https://ffmpeg.org/download.html) and add to PATH.\n- **Anki** with the [AnkiConnect](https://ankiweb.net/shared/info/2055492159) add-on. In Anki: **Tools → Add-ons → Get Add-ons**, paste code `2055492159`, restart.\n\n### Download\n\nGrab the installer for your platform from the [latest release](https://github.com/0xzerolight/anki_miner/releases/latest):\n\n| Platform | Installer | Portable |\n|----------|-----------|----------|\n| Windows | `AnkiMiner-*-Setup.exe` | `AnkiMiner-Windows-x86_64.zip` |\n| Linux (Debian/Ubuntu) | `anki-miner_*_amd64.deb` | `AnkiMiner-*-Linux-x86_64.AppImage` |\n| Linux (other) | — | `AnkiMiner-Linux-x86_64.tar.gz` |\n| macOS (Apple Silicon) | — | `AnkiMiner-macOS-arm64.tar.gz` |\n\nNo Python required. Installers and portable archives bundle all dependencies.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eInstall from PyPI (Python 3.10+)\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\npipx install anki-miner   # or: pip install anki-miner\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eInstall from source\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\ngit clone https://github.com/0xzerolight/anki_miner.git\ncd anki_miner\npip install .\n```\n\n\u003c/details\u003e\n\n## Quick Start\n\nAfter installing, launch **Anki Miner** from your Start Menu, Applications folder, or app menu. If you installed from PyPI or source, run `anki_miner_gui` from a terminal. A desktop shortcut is created on first launch; re-run it from **Tools → Create Desktop Shortcut…** inside the app.\n\nAnki must be running with AnkiConnect installed before mining starts.\n\nTabs:\n\n- **Episode Mining**: mine one video/subtitle pair with file selectors and progress tracking.\n- **Batch Mining**: queue a folder of episode/subtitle pairs for sequential processing.\n- **YouTube**: paste one or more URLs, then mine the queue.\n- **Analytics**: history, series difficulty rankings, milestones, undo.\n- **Settings**: Anki, Media, Dictionary, Filtering, YouTube, Themes. Saved to `~/.anki_miner/gui_config.json`.\n\n## Features\n\n- Anki cards with furigana, pitch accent, and word frequency.\n- **Bold the target word** in the sentence so it stands out on the card front.\n- **Glossary field** that combines every enabled dictionary into one card field, compatible with the Senren dictionary-toggle template.\n- Load any Yomitan dictionaries you like, reorder them, and optionally enable Jisho as a slower, rate-limited online fallback (offline dictionaries are recommended for speed).\n- YouTube queue: paste a list of URLs, mine the whole list in one click.\n- Batch a folder of episode/subtitle pairs for unattended processing.\n- Review and edit the word list before any cards are created.\n- Audio in MP3 or Opus, at the bitrate you choose — Opus produces much smaller files for the same listening quality.\n- Animated screenshots in AVIF or WebP for cards that show a moment of motion instead of a still frame.\n- Analytics dashboard with history, undo, milestones, and series difficulty rankings.\n- Four built-in themes (Light, Dark, Sakura, Tokyo Night) with a favorites list, `Ctrl+T` to cycle, and custom themes from a JSON file.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow It Works\u003c/strong\u003e\u003c/summary\u003e\n\n1. **Read the subtitles** and split Japanese into individual words.\n2. **Filter** to content words you don't already know.\n3. **Grab a screenshot and audio clip** from the video for each line.\n4. **Look up definitions** in your configured offline dictionaries, optionally falling back to Jisho online if enabled (slower, rate-limited).\n5. **Send the finished cards to Anki.**\n\n\u003c/details\u003e\n\n## Dictionaries\n\nAnki Miner looks up definitions through a **provider chain** you configure. Each lookup tries the providers in order; the first hit wins. Load any number of offline Yomitan-format dictionaries — these are recommended for speed. Jisho is available as an online fallback but is disabled by default because every lookup waits ~0.5s on the API and slows mining substantially.\n\nAdd a dictionary in **Settings → Add Dictionary…** by pointing at a Yomitan `.zip` archive. Drag entries to reorder the chain. Installed dictionaries are indexed once into `~/.anki_miner/dicts/\u003cdict_id\u003e/index.sqlite` and loaded on startup. Structured-content entries are rendered to HTML on import, so card definitions preserve the source dictionary's formatting (definition lists, examples, tags).\n\n**Recommended Japanese → English dictionaries** — both are JMdict-derived; pick whichever fits your cards, or load both and order them as you like:\n\n- **[Jitendex](https://github.com/Jitendex/Jitendex)** — modern JMdict successor with structured-content formatting, example sentences, and richer tags. Best for visually rich cards. Grab the Yomitan archive from the [Jitendex releases page](https://github.com/Jitendex/Jitendex/releases).\n- **[JMdict](https://www.edrdg.org/jmdict/edict.html)** — the original community JMdict project. Plain-text glosses, smaller index, faster to add. Yomitan builds are available from the [Yomitan dictionary list](https://learnjapanese.moe/yomichan/#dictionaries) or you can rebuild from the EDRDG source.\n\nInstall via **Settings → Add Dictionary…** in either case.\n\n## YouTube Mining\n\nPaste one or more URLs into the YouTube tab. Each row shows its title, length, and subtitle source as you add it; click **Mine** to process the whole list. Transient download errors are retried once before a row is marked failed. Cancel is safe at any point.\n\nManual Japanese subtitles are used when available. Auto-captions are accepted only when YouTube generated them natively from Japanese audio — captions that YouTube produced by machine-translating from another language are skipped, because they don't make usable cards. Even native auto-captions are rougher than manual subtitles, since they lack sentence boundaries.\n\nGotchas:\n\n- **Bot-detection prompts**: if YouTube asks \"Sign in to confirm you're not a bot\", open **Settings → Cookies → Browser** and pick Firefox or Chrome. Anki Miner pulls cookies from that browser's profile on every fetch.\n- **Age-restricted videos**: same fix.\n- **Max duration**: defaults to 120 minutes. The probe aborts before downloading if the video is longer. Adjust in Settings.\n\n## Updates\n\nAnki Miner checks GitHub for new releases on startup (toggle in Settings). When an update is available, a banner offers a one-click download of the asset that matches your install: `.deb` for Debian/Ubuntu, `.AppImage` for AppImage, the Inno installer on Windows, the macOS arm64 archive, or the release page for pip/source installs. \"Skip this version\" suppresses the prompt for that release; the next release prompts again.\n\n## Troubleshooting\n\n| Issue                    | Solution                                                                         |\n|--------------------------|----------------------------------------------------------------------------------|\n| \"Cannot connect to Anki\" | Start Anki and ensure AnkiConnect is installed.                                  |\n| \"Deck not found\"         | Create the deck in Anki or update the deck name in Settings.                     |\n| \"Note type not found\"    | Configure your note type's field names in Settings → Anki.                       |\n| \"ffmpeg not found\"       | Install ffmpeg and add it to PATH.                                               |\n| No definitions found     | Add a Yomitan dictionary in Settings → Add Dictionary… (recommended), or enable the Jisho fallback (slower, rate-limited). |\n| Audio is wrong language  | The tool tries Japanese audio tracks first, then falls back to the default.      |\n| Subtitles out of sync    | Use the subtitle offset control in the GUI.                                      |\n\n## Contributing\n\nContributions are welcome — bug fixes, dictionary integrations, GUI polish, doc improvements, all sizes.\n\n- New here? Start with [CONTRIBUTING.md](CONTRIBUTING.md).\n- Architecture overview: [ARCHITECTURE.md](ARCHITECTURE.md).\n- Testing strategy: [TESTING.md](TESTING.md).\n- Code of Conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).\n- Security: [SECURITY.md](SECURITY.md).\n\nBug reports and feature requests → [Issues](https://github.com/0xzerolight/anki_miner/issues).\nGeneral questions and discussion → [Discussions](https://github.com/0xzerolight/anki_miner/discussions).\n\n## Special Thanks\n\nSincere thanks to people who made exceptional contributions to the project:\n\n★ **[StyraxBenzoin](https://github.com/StyraxBenzoin)** - Brilliant feature suggestions, new release testing, community building\n\nSee [CONTRIBUTORS.md](CONTRIBUTORS.md) for everyone who has made any kind of contribution to the project.\n\n\n## License\n\nGNU General Public License v3.0. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xzerolight%2Fanki_miner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xzerolight%2Fanki_miner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xzerolight%2Fanki_miner/lists"}