{"id":13408490,"url":"https://github.com/ripose-jp/Memento","last_synced_at":"2025-03-14T13:31:27.855Z","repository":{"id":41238352,"uuid":"302477133","full_name":"ripose-jp/Memento","owner":"ripose-jp","description":"An mpv-based video player for studying Japanese","archived":false,"fork":false,"pushed_at":"2024-10-28T03:37:44.000Z","size":140700,"stargazers_count":483,"open_issues_count":31,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-10-29T17:35:09.043Z","etag":null,"topics":["anki","japanese","language-learning","mpv","video","yomichan"],"latest_commit_sha":null,"homepage":"https://ripose-jp.github.io/Memento/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ripose-jp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-08T22:38:20.000Z","updated_at":"2024-10-28T03:37:16.000Z","dependencies_parsed_at":"2022-07-10T16:17:17.528Z","dependency_job_id":"fca632a1-0201-496e-aff5-2381b318863e","html_url":"https://github.com/ripose-jp/Memento","commit_stats":{"total_commits":1096,"total_committers":14,"mean_commits":78.28571428571429,"dds":"0.15875912408759119","last_synced_commit":"f3084f190131fa3f286345df4787496b61b69fcb"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ripose-jp%2FMemento","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ripose-jp%2FMemento/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ripose-jp%2FMemento/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ripose-jp%2FMemento/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ripose-jp","download_url":"https://codeload.github.com/ripose-jp/Memento/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242910022,"owners_count":20205206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["anki","japanese","language-learning","mpv","video","yomichan"],"created_at":"2024-07-30T20:00:53.188Z","updated_at":"2025-03-14T13:31:27.846Z","avatar_url":"https://github.com/ripose-jp.png","language":"C++","funding_links":[],"categories":["Other","Video","C++","Stand-alone"],"sub_categories":["Other textbooks"],"readme":"# Memento\n\n[![AUR](https://img.shields.io/aur/version/memento)](https://aur.archlinux.org/packages/memento/)\n[![Flathub](https://img.shields.io/flathub/v/io.github.ripose_jp.Memento)](https://flathub.org/apps/details/io.github.ripose_jp.Memento)\n\nMemento is a FOSS, mpv-based video player for studying Japanese.\n\n![Example](example.png)\n\n## Features\n\n* Grammar aware subtitle search\n* Yomichan-style Kanji cards\n* Support for Yomichan dictionaries\n* Anki card creation through [AnkiConnect](https://ankiweb.net/shared/info/2055492159)\n* Support for mpv upscalers, plugins, and configuration files\n\n## Dictionaries\n\n*   **[JMdict](https://www.edrdg.org/jmdict/edict_doc.html)** (Japanese vocabulary)\n    *   [JMdict\\_dutch.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_dutch.zip)\n    *   [JMdict\\_english.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_english.zip)\n    *   [JMdict\\_french.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_french.zip)\n    *   [JMdict\\_german.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_german.zip)\n    *   [JMdict\\_hungarian.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_hungarian.zip)\n    *   [JMdict\\_russian.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_russian.zip)\n    *   [JMdict\\_slovenian.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_slovenian.zip)\n    *   [JMdict\\_spanish.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_spanish.zip)\n    *   [JMdict\\_swedish.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMdict_swedish.zip)\n*   **[JMnedict](https://www.edrdg.org/enamdict/enamdict_doc.html)** (Japanese names)\n    *   [JMnedict.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/JMnedict.zip)\n*   **[KireiCake](https://kireicake.com/rikaicakes/)** (Japanese slang)\n    *   [kireicake.zip](https://github.com/FooSoft/yomichan/raw/dictionaries/kireicake.zip)\n*   **[KANJIDIC](http://nihongo.monash.edu/kanjidic2/index.html)** (Japanese kanji)\n    *   [KANJIDIC\\_english.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/KANJIDIC_english.zip)\n    *   [KANJIDIC\\_french.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/KANJIDIC_french.zip)\n    *   [KANJIDIC\\_portuguese.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/KANJIDIC_portuguese.zip)\n    *   [KANJIDIC\\_spanish.zip](https://github.com/themoeway/jmdict-yomitan/releases/latest/download/KANJIDIC_spanish.zip)\n*   **[Innocent Corpus](https://web.archive.org/web/20190309073023/https://forum.koohii.com/thread-9459.html#pid168613)** (Term and kanji frequencies across 5000+ novels)\n    *   [innocent\\_corpus.zip](https://github.com/FooSoft/yomichan/raw/dictionaries/innocent_corpus.zip)\n*   **[Kanjium](https://github.com/mifunetoshiro/kanjium)** (Pitch dictionary, see [related project page](https://github.com/toasted-nutbread/yomichan-pitch-accent-dictionary) for details)\n    *   [kanjium_pitch_accents.zip](https://github.com/FooSoft/yomichan/raw/dictionaries/kanjium_pitch_accents.zip)\n\n## Troubleshooting\n\n### Can't Add Cards: Only the \"Show in Anki\" Button is Available\n\nThis means there is a mistake in your card template.\nWhen this happens, AnkiConnect will report that all potential cards are not addable.\nDouble check your card template to see if the front of the card is missing something.\n\n### Secondary Subtitles Don't Work\n\nPrior to mpv v0.35.0, it was impossible to set the visibility of primary and\nsecondary subtitles independent of one another.\nIf you haven't compiled Memento yourself and are using the provided binaries for\nv1.0.0 or later, this section doesn't apply to you.\n\n#### Method 1\n\nGo to Settings → Options → Search, uncheck \"Hide mpv subtitles when subtitle\nsearch is visible\", and check \"Hide subtitle search when playing media\".\n\nIf the searchable subtitles become harder to read, consider adding a background.\nThis can be done in Interface settings.\nMake sure you set the alpha/opacity channel to 255 in order to avoid your\nbackground being transparent.\n\n#### Method 2\n\nWhen the Memento is paused, manually toggle subtitle visibility to reveal the\nsecondary subtitle.\nSubtitle visibility is bound to **v** by default.\n\n### Windows: MSVCR100.dll is Missing When Trying to Stream\n\nThis error can be fixed by installing the\n[Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package (x86)](https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe).\n\n### Windows: Updating youtube-dl/yt-dlp\n\nIf you're version of youtube-dl is out of date, you may experience degraded streaming performance or websites not working entirely.\n\nMemento's version of youtube-dl can be updated by doing the following:\n\n1. Download [yt-dlp](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe)\n2. Rename the file to `youtube-dl.exe`\n3. Put `youtube-dl.exe` in Memento's install directory. For the portable version of Memento, this is located in the same folder as the executable. For the installed version, this is located at `C:\\Program Files\\Memento` by default.\n\n### macOS: Streaming video doesn't work\n\nThis means that mpv cannot find your youtube-dl installation.\n\nTo install youtube-dl, paste these commands into Terminal:\n```\ncurl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o ~/Library/Preferences/memento/youtube-dl\nchmod a+rx ~/Library/Preferences/memento/youtube-dl\n```\n\n### macOS: Could not initialize MeCab\n\nMove the Memento application to a directory that doesn't have spaces in the path\nlike `/Applications`. Unfortunately, this is an limitation of MeCab and there is\nno workaround that can be implemented.\n\n### Linux: Audio and images aren't added to Anki\n\n*This only applies to users of the **Anki** Flatpak.*\n\nBy default the **Anki** Flatpak doesn't have access to the `/tmp` directory.\nMemento stores audio and image files here temporarily when making them available to Anki.\nYou can give Anki access to the `/tmp` directory by installing [Flatseal](https://flathub.org/apps/com.github.tchx84.Flatseal).\nTo do so, open Flatseal, select Anki, and add the `/tmp` directory under **Other files**.\n\n## Dependencies\n\n* Qt\n    * Base\n    * SVG\n* mpv\n* sqlite3\n* Json-C\n* libzip\n* youtube-dl or yt-dlp (optional)\n* MeCab (optional)\n    * With either ipadic or NAIST-jdic installed as a system dictionary on Linux and macOS. This only applies to self-compiled versions, not appimages or app bundles.\n* Python (optional)\n\nFor the best experience, install [Noto Sans JP](https://fonts.google.com/noto/specimen/Noto+Sans+JP)\nand the [Kanji Stroke Order](https://drive.google.com/uc?export=download\u0026id=1oyQoTB531tbhlYaOW7ugvutXZ7HSlJfW) fonts.\n\n## Building\n\n**I do not guarantee that any branch will successfully build or be bug-free.**\n**If you want to build a stable version of Memento, compile a [release](https://github.com/ripose-jp/Memento/releases) from source.**\n\n### Linux\n\nTo install Memento on Linux, type the following commands:\n\n```\nmake\nsudo make install\n```\n\n### Windows\n\n1. Install [MSYS2](https://www.msys2.org/)\n1. Open **MSYS2 MinGW 64-bit**\n1. Make sure MSYS2 is up to date by running this command multiple times until it stops doing anything:\n    ```\n    pacman -Syuu\n    ```\n1. Install the necessary tools and dependencies:\n    ```\n    pacman -S git make mingw-w64-x86_64-gcc mingw-w64-x86_64-ninja mingw-w64-x86_64-cmake mingw-w64-x86_64-python mingw-w64-x86_64-sqlite3 mingw-w64-x86_64-qt6 mingw-w64-x86_64-mpv mingw-w64-x86_64-mecab mingw-w64-x86_64-json-c mingw-w64-x86_64-libzip\n    ```\n1. Clone the repository:\n    ```\n    git clone https://github.com/ripose-jp/Memento.git\n    ```\n1. Build Memento:\n    ```\n    cd Memento\n    ./windows/build.sh x86_64\n    ```\n1. The resulting file will be in\n    ```\n    build/Memento_x86_64\n    ```\n\n### macOS\n\n**Important:** Clang is the only officially supported compiler for building Memento on macOS.\n\n1. Install [Homebrew](https://brew.sh/) with this command:\n   ```\n   /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n   ```\n1. Install the necessary tools and dependencies:\n   ```\n   brew install git cmake sqlite3 qt6 mpv mecab mecab-ipadic json-c libzip\n   ```\n1. Clone the repository:\n   ```\n   git clone https://github.com/ripose-jp/Memento.git\n   ```\n1. Build Memento:\n   ```\n   cd Memento\n   make\n   ```\n1. The resulting executable will be:\n   ```\n   Memento/build/src/Memento\n   ```\n\n### macOS App Bundle\n\n1. Follow steps 1 - 3 of the macOS build instructions.\n\n1. `dylibbundler` is also needed when creating an app bundle, so install it with:\n```\nbrew install dylibbundler\n```\n\n1. Open the **Keychain Access** app.\n\n1. Go to **Keychain Access** \u003e **Certificate Assistant** \u003e **Create a Certificate...**\n   in the menubar.\n\n1. Put the name of your certificate in the 'Name' field, set the 'Certificate Type'\n   to 'Code Signing', and click 'Create'.\n\n1. Return to your terminal and input:\n    ```\n    cd Memento\n    make appbundle CERT_NAME='\u003cname entered in the last step\u003e'\n    ```\n\n1. The resulting app bundle will located at:\n    ```\n    Memento/build/src/Memento.app\n    ```\n\n### Adding OCR Support\n\nTo build with OCR support, make sure that Python is installed and run:\n```\npip install manga-ocr\n```\n*Any problems you may have getting `manga-ocr` installed using `pip` is beyond the scope of this project. I wish you the best of luck.*\n\nAdd `-DOCR_SUPPORT=ON` to the `CMAKE_ARGS` environment variable:\n```\nexport CMAKE_ARGS='-DOCR_SUPPORT=ON'\n```\nFrom here follow normal build instructions for your platform.\n\n**Note**:\nTheoretically OCR is supported on Windows.\nAssuming Memento was built against msys2's version of Python, you will have to\nset the environment variable `PYTHONHOME` to `C:\\msys64\\mingw64`.\n\n## Configuration\n\nMost mpv shaders, plugins, and configuration files will work without modification.\n\nIt is important to note that mpv and Memento's configuration directories are\n**separate**. This means mpv configuration files, scripts, etc. intended to modify\nMemento's behavior should be placed in Memento's configuration directory.\n\nThe Memento configuration directory is located at:\n\n### Linux\n```\n~/.config/memento\n```\n\n### Windows\n\nVersion 0.5.1 and later\n```\n%APPDATA%\\Local\\memento\n```\n\nVersion 0.5.0-1 and earlier\n```\n[installation directory]\\config\n```\n\n### macOS\n```\n~/Library/Preferences/memento\n```\n\nIf any mpv binds or plugins do not work, please create an issue in the issue\ntracker.\n\n## Contributing\n\nBefore making a pull request, please read [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## asbplayer\n\nIf you hate Memento, try [asbplayer](https://killergerbah.github.io/asbplayer/).\n\n## Acknowledgements\n\n* MpvWidget code is based off of libmpv example code by w4m\n  * https://github.com/mpv-player/mpv-examples/tree/master/libmpv/qt_opengl\n* Some code based off of Baka-MPlayer\n  * https://github.com/u8sand/Baka-MPlayer\n* Hardware acceleration achieved on Linux using mpc-qt code\n  * https://github.com/mpc-qt/mpc-qt\n* UI inspired by and dictionaries provided by Yomichan.\n  * https://foosoft.net/projects/yomichan/\n* OCR backend written kha-white and contributors\n  * https://github.com/kha-white/manga-ocr\n* Fullscreen icons sourced from here\n  * https://www.iconfinder.com/iconsets/material-core\n* Various icons sourced from here\n  * https://www.iconfinder.com/iconsets/ionicons\n* Pause, play, skip, and seek icons sourced from here and used under the [CC 3.0 License](https://creativecommons.org/licenses/by/3.0/)\n  * https://www.iconfinder.com/iconsets/play-rounded\n* `mingw-bundledlls.py` based on this script with a slightly expanded blacklist\n  * https://github.com/mpreisler/mingw-bundledlls\n* Flatpak manifest heavily based on the mpv Flatpak\n  * https://github.com/flathub/io.mpv.Mpv\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fripose-jp%2FMemento","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fripose-jp%2FMemento","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fripose-jp%2FMemento/lists"}