Releases: 0xzerolight/anki_miner
Releases Β· 0xzerolight/anki_miner
v2.6.4
New features
-
Audiobook mining tab (#71). Queue audiobook and subtitle pairs and mine. Cover art becomes each card's Picture.
-
Expression audio on cards (#73). Enable in Settings->Anki and assign a note field.
- Audio source chain. Expression audio is pulled from an ordered, reorderable list of sources: local audio packs if added, then JapanesePod101, then Google Translate. First hit wins. JapanesePod101+GoogleTTS is the zero-setup default.
- Local audio pack import. Add a local-audio-yomichan-compatible folder (ajt_japanese, nhk16, forvo_ja, jpod). Indexed in place, so audio files don't move.
- Google Translate TTS. Free fallback for words no pack or JapanesePod101 covers. Off by default.
Fixed
- i+1 filter checks all unknown lemmas, not just mineable ones (#74).
- Card style presets no longer bleed into unrelated card content.
- Duplicate media filenames no longer re-encoded in batch stores.
- A media file that vanishes mid-run counts as a failure instead of silently succeeding empty.
- A corrupt
anki_fieldsvalue survives config load instead of crashing.
Repo
- Added the new Anki Miner icon to README.
(Skipped v2.6.3 due to ffmpeg bundling error breaking release.)
Full Changelog: v2.6.2...v2.6.4
v2.6.2
New features
- YouTube playlist support (#70). Paste a playlist URL and it expands into the queue. Size cap with confirm dialog (default 100), duplicates skipped, mix/radio URLs treated as plain videos.
- Source field on cards (#69). Stamp show/episode (or YouTube title) + timestamp into a mapped Anki field.
- Card styling presets. Default, Yomitan / Lapis Classic, Minimal / Clean, or None.
- YouTube word curation (#65). Review words before mining, with embedded player and multi-dictionary lookup.
Changed
- Python 3.11+ required for PyPI/source installs. Standalone bundles unaffected. Dependency floors raised.
- Cancel actually cancels in every mining mode; in-flight ffmpeg/yt-dlp killed, subprocess calls time-bounded.
- Closing the window no longer abandons running work.
Fixed
- Anki note type and field mapping validated up front (#52); target deck auto-created.
- Non-ASCII filenames no longer crash extraction on Windows.
- A failed episode in a batch no longer aborts the rest or loses finished cards (#51).
- YouTube reliability: cookies-file works for age-restricted videos, one bad video can't kill the queue, live streams handled, no more close hang mid-curation.
- Security: yt-dlp argument injection blocked; Jisho definitions HTML-escaped.
- Card media no longer silently missing on large sessions; uploads chunked, earlier batches persist on failure.
- Local DBs survive momentary locks; "known" marks survive a DB rebuild.
- Episode-number matching: numeric titles ("86", "Mob Psycho 100") no longer steal the episode slot.
- Dictionary fixes: Yomitan image sizing (#68), UTF-16 surrogate scrub on import (#67), paths with spaces.
- Long tail of settings, batch-queue, deck-builder, and curation fixes in CHANGELOG.md.
Repo
- New app icon: white ι± on black.
- ~920 lines of dead code removed, big GUI classes split, ~2900 tests.
- Supply chain pinned; tag workflows gated on green CI.
- Welcomed @Geniusssmit and @cskings14.
Full Changelog: v2.6.1...v2.6.2
v2.6.1
Fixed
- YouTube mining broken with "n challenge solving failed" / "Only images are available" (#64).
- Cards missing audio/picture on large YouTube batches.
- Long error text clipped in YouTube queue row.
Repo
- Added a looping demo GIF + link to the full demo video in README.md.
Minor release, see v2.6.0 release notes for latest new features.
Full Changelog: v2.6.0...v2.6.1
v2.6.0
New features
- Bundled ffmpeg: Windows, macOS, and Linux AppImage/portable builds ship ffmpeg, no separate install. (
.deb, PyPI, and source installs still use system ffmpeg.) - Text size control (#63): Settings > Themes dropdown scales the whole UI (0.5x to 2x).
- Custom YouTube cookies (#62): pull cookies from a browser or file for age-restricted or bot-gated videos.
- Kana-only filters (#57): optionally drop hiragana-only or katakana-only words.
- Word curation in batch mining (#60): the per-episode curation popup is now opt-in for batch runs.
- Bundled name wordsets (#59): JMnedict proper-noun wordsets with per-wordset exclusion checkboxes.
- Word Curator play/pause (#55).
- Recent pairs remember the subtitle offset (#61).
- Wider subtitle offset range: now Β±300 seconds (#53 - @sdobrau's contribution).
Performance
- Subtitles tokenized once per line, MeCab and dictionary chain pre-warmed off the GUI thread, batched dictionary lookups and AnkiConnect media uploads, memoized furigana/reading, cached Deck Builder tokenization, faster Word Curator.
Overall much faster launch and slightly faster mining and navigation.
Fixed
- AV1 in-app preview disabled so it stops spamming decode errors. AV1 media still mines; only the preview is skipped.
- Horizontal overflow in the Episode Mining tab (#56).
- AppImage desktop shortcut broken on relaunch.
- "All Themes" button opened the wrong tab.
- Word curation: cancel no longer leaves a stray dialog; confirming with nothing selected now counts as a completed zero-card run, not a cancel.
- Progress-bar percentage glitch, mismatched path bars, Max Sentence Duration tooltip, About dialog polish.
Repo
- ffmpeg GPL license, source offer, and About attribution for the bundled binaries.
- CI asserts bundled encoders (incl. libwebp_anim) in the release smoke test.
- Restored the CI lint job (ruff + black).
- Welcomed first-time contributor @sman68634.
- 30 stars achieved :).
Full Changelog: v2.5.0...v2.6.0
v2.5.0
New features
- Deck Builder tab: point at a folder of episode/subtitle pairs and mine the whole show into one frequency-ranked deck. Pick ALL, top N, or coverage % and preview before any cards are created.
- Word Curator video player (#41): in-place playback of the source line on every row.
- Multi-dictionary lookup in Word Curator (#43): every enabled offline dict's hit shown side-by-side, not just first-hit-wins.
- Custom card styling (#44): generated cards ship with styling for the standard fields. No manual Anki note-type tweaks.
- User-curated known-words list (#42): "Add to Known Words" button in Word Curator. Persists, skipped on every future run, survives DB rebuilds.
- Yomitan pitch-accent zip importer: Settings, Dictionary, Pitch Accent File now accepts a Yomitan zip. Imports run in the background.
- Configurable dictionary folder location (#45): point the dictionary store at a different drive.
- Exclude Anki decks from known-word lookup (#38): pick decks under Settings, Filtering to ignore on the unknown-word check.
- Dracula and Alucard themes (#48). All previously-added themes are now exposed in the Themes panel. 29 themes total.
Fixed
- Batch mining pairing error (#39): same-episode collisions no longer collapse every video onto the first subtitle.
- addNotes duplicate error aborting the rest of a batch: duplicates dropped client-side before AnkiConnect sees them.
- Deck exclusion broken on names with
_or*: wildcards escaped before query injection. - DeckBuilder worker lifecycle on app close: torn down cleanly, build_finished suppressed on cancel.
- Deck Builder built far fewer cards than the preview promised: two new config flags (
bypass_optional_filters,allow_duplicate_cards) skip the per-episode reduction filters and let Anki re-card across decks so the build matches the preview exactly. Standard mining unchanged. - Deck Builder tab stuck on "Cancellingβ¦": button state now resets on every worker finish, not just on cancel.
- Progress bar stranded or jumped backwards across all mining tabs: new
stage_weighted_progresshelper maps per-stage progress to a single monotonic 0β100 across the run, shared by Single Episode and Deck Builder tabs.
Repo
- Welcomed first-time contributors @BDubbB, @Joywinbarboza, @chicorykvass.
Full Changelog: v2.4.7...v2.5.0
v2.4.7
v2.4.6
New Features
- Manual audio track override (#35): new "Tracks" button next to "Test Timing" in Single Episode tab. Pick which audio stream to use instead of letting auto-detect choose. Same track flows through preview and final cards.
Changed
- Snappier UI: table updates no longer flicker, Word Preview search no longer stutters, Analytics tab opens faster on repeat clicks, theme star clicks feel closer to instant.
- Faster startup: app paints sooner, YouTube tab loads on demand, dictionary scan skips unchanged entries.
- Faster mining: less duplicate work per episode, larger AnkiConnect batches, history queries indexed.
Fixed
- Frequency filter ignored some words (#34): Max Frequency Rank now drops words missing from the frequency list. Set it to 0 to keep old behavior.
- Audio track override could be ignored after swapping the video file: stale stream list now cleared at the start of each run.
Repo
- CONTRIBUTORS.md added. Auto-generated table of everyone who filed an issue, opened a PR, started a discussion, or commented. Refreshes on activity and welcomes new arrivals by username in the commit message.
- Special Thanks section added to README for exceptional contributors. First entry: StyraxBenzoin.
Full Changelog: v2.4.5...v2.4.6
v2.4.5
New Features
- Sentence length filter (#33): drop cards whose example sentence exceeds an audio-duration or character cap. Applied after i+1 sentence selection so the cap binds the final chosen sentence.
- Theme variants grouped by family: light/dark variants nest under one expandable row in Settings > Themes. Tri-state family star bulk-favorites the whole group in a single click.
- Yomitan-format frequency dictionaries: Settings > Word Filtering > Frequency Source now accepts a Yomitan freq zip alongside
frequency.csv. Rejects malformed archives (format != 3, non-positive ranks) with a clear error. - Background-threaded frequency import with modal progress, cancel, and overwrite confirmation.
Fixed
- Theme colours now apply to the Analytics tab (was inheriting host palette).
Full Changelog: v2.4.4...v2.4.5
v2.4.4
Fixed
- Remove dictionary now works on Windows after mining (#30). SQLite handle leak kept index.sqlite locked.
- Re-import dictionary now works on Windows after mining (#32). Same lock blocked importer's atomic rename.
- Single-file + batch tabs also release dictionary handles on idle (gap from #32 fix). Earlier release hook only covered YouTube tab.
- CI smoke-min-deps job derives floor pins from pyproject.toml instead of hardcoded values.
Full Changelog: v2.4.3...v2.4.4
v2.4.3
New features
- Multi-URL YouTube queue. Paste several URLs, probe each on Add, mine sequentially. Per-item retry-once on yt-dlp fetch errors. Replaces previous single-URL system.
- Theme settings panel. New Settings tab 'Themes' lists every shipped and user theme; click to live-preview, star to favorite, Revert to undo.
Fixes
- Per-row Re-import for dictionaries was undiscoverable (#29). Right-click menu on dictionary rows now exposes Re-import and Remove.
- Remove did nothing on dictionary rows outside the main selection path (#30). Same right-click menu now exposes Remove.
- Bold target word landed on the wrong characters in
SentenceFuriganawhen a bracketed reading sat next to the target (#31). - Star toggle in the Themes panel was visually clipped.
- YouTube progress bar stuck after Clear, cancel, or an unhandled worker exception.
Removed
- Single-URL
YouTubeWorkerThread(replaced byYouTubeQueueWorker).
Full Changelog: v2.4.2...v2.4.3