{"id":49624797,"url":"https://github.com/asbplayer/asbplayer","last_synced_at":"2026-05-05T05:03:55.922Z","repository":{"id":38283678,"uuid":"314731715","full_name":"asbplayer/asbplayer","owner":"asbplayer","description":"Browser-based media player and Chrome extension for subtitle sentence mining","archived":false,"fork":false,"pushed_at":"2026-05-04T04:56:13.000Z","size":84665,"stargazers_count":1223,"open_issues_count":220,"forks_count":174,"subscribers_count":14,"default_branch":"main","last_synced_at":"2026-05-04T06:37:39.482Z","etag":null,"topics":["anki-flashcards","language-learning"],"latest_commit_sha":null,"homepage":"https://app.asbplayer.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asbplayer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["killergerbah"],"ko_fi":"killergerbah"}},"created_at":"2020-11-21T04:24:02.000Z","updated_at":"2026-05-04T04:56:16.000Z","dependencies_parsed_at":"2023-10-16T10:49:25.270Z","dependency_job_id":"9616c107-da82-4a22-b2dc-d7d31b2b7124","html_url":"https://github.com/asbplayer/asbplayer","commit_stats":null,"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/asbplayer/asbplayer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asbplayer%2Fasbplayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asbplayer%2Fasbplayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asbplayer%2Fasbplayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asbplayer%2Fasbplayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asbplayer","download_url":"https://codeload.github.com/asbplayer/asbplayer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asbplayer%2Fasbplayer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32636108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"online","status_checked_at":"2026-05-05T02:00:06.033Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["anki-flashcards","language-learning"],"created_at":"2026-05-05T05:03:52.684Z","updated_at":"2026-05-05T05:03:55.912Z","avatar_url":"https://github.com/asbplayer.png","language":"TypeScript","funding_links":["https://github.com/sponsors/killergerbah","https://ko-fi.com/killergerbah"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\r\n    \u003cimg src=\"https://raw.githubusercontent.com/asbplayer/asbplayer/main/extension/public/icon/icon128.png\" width=\"75\" height=\"75\" style=\"border-radius: 16px\" alt=\"asbplayer\" /\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n\r\n[![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/asbplayer/asbplayer/verify.yml)](https://github.com/asbplayer/asbplayer/actions/workflows/verify.yml)\r\n[![Github All Releases](https://img.shields.io/github/downloads/asbplayer/asbplayer/total.svg)](https://github.com/asbplayer/asbplayer/releases)\r\n[![GitHub License](https://img.shields.io/github/license/asbplayer/asbplayer)](https://github.com/asbplayer/asbplayer?tab=MIT-1-ov-file)\r\n[![Discord](https://img.shields.io/discord/962412001810849814?color=%237785cc)](https://discord.gg/ad7VAQru7m)\r\n\r\n\u003c/div\u003e\r\n\r\n# asbplayer\r\n\r\n**asbplayer** is a browser-based media player and Chrome extension developed for language learners who learn their target language through subtitled media. With asbplayer, you can:\r\n\r\n- **Easily create high-quality, multimedia flashcards** out of subtitled videos.\r\n- **Load text-selectable subtitles onto most video sources**, including streaming sources. You can use **auto-detected subtitles** on popular streaming services like Netflix and YouTube, or your own **subtitle files**.\r\n- **Seek through subtitles** using a **navigable subtitle list**.\r\n- **Optimize language acquisition** with **playback modes** like:\r\n    - **Condensed playback**: Skip unsubtitled sections of video.\r\n    - **Fast-forward playback**: Fast-forward through unsubtitled sections of video.\r\n    - **Auto-pause**: Automatically pause at the beginning or end of every subtitle.\r\n- **Use customizable keyboard shortcuts** to access most of asbplayer's features.\r\n- **Annotate subtitles** with the help of tools such as [Yomitan](https://yomitan.wiki/)\r\n    - **Word styling** (color/underline/outline, etc.) based on a word's status (uncollected/unknown/learning, etc.) synced from Anki and/or tracked locally in asbplayer.\r\n    - **Reading annotation** for pronunciation displayed above each word or based on status.\r\n    - **Frequency annotation** for rank-based frequency displayed below each word or based on status.\r\n    - Many more features for future releases! Some planned features include:\r\n        - **Statistics and Comprehension** on your known words for the current video and across videos.\r\n        - **Word browser** to manage local and Anki-synced words.\r\n        - **Auto pause**, **Condensed playback**, and **Auto mining** on uncollected/unknown/learning words.\r\n        - **Accent annotation** such as pitch accent, tones, gender, etc.\r\n\r\n## Thanks\r\n\r\nThank you to everyone who has sponsored the project:\r\n\r\n[@vivekchoksi](https://www.github.com/vivekchoksi),\r\n[@nzarbayezid](https://www.github.com/nzarbayezid),\r\n[@ManuJapan](https://www.github.com/ManuJapan),\r\nAdamM,\r\nrealgoodsmiley,\r\nAlex,\r\n[@m4eko](https://github.com/m4eko),\r\nSimon,\r\nAttenius,\r\nmedyas,\r\n[@zaerald](https://github.com/zaerald),\r\nSuna,\r\n[@tony7253](https://github.com/tony7253),\r\n[@voothi](https://github.com/voothi),\r\nkibo,\r\n[@genericdave](https://github.com/genericdave),\r\nDaniel,\r\nCristian,\r\nJoey Potter,\r\n[@InteractiveNinja](https://github.com/InteractiveNinja),\r\n[@agloo](https://github.com/agloo),\r\n[@Venous771](https://github.com/Venous771),\r\n[@Viterkim](https://github.com/Viterkim),\r\nJulian,\r\nDanglingSabSuu,\r\n[@nikkovc](https://github.com/nikkovc),\r\n[@ganqqwerty](https://github.com/ganqqwerty),\r\n[@mathiaslovnes](https://github.com/mathiaslovnes),\r\n[@MF-Billings](https://github.com/MF-Billings),\r\n[@festivity9139](https://github.com/festivity9139),\r\nPhos,\r\nAstralDice,\r\n[@east825](https://github.com/east825),\r\n[@Astr0ddity](https://github.com/Astr0ddity),\r\n[@NirDafnai](https://github.com/NirDafnai),\r\n[@henryfl](https://github.com/henryfl),\r\nトム,\r\nPeter,\r\n[@825i](https://github.com/825i),\r\nags,\r\nVannde3,\r\nChamp,\r\nmarcman3001,\r\n[@vladysor](https://github.com/vladysor)\r\n\r\nand to those who have donated privately.\r\n\r\nThank you to all those who have contributed to asbplayer:\r\n\r\n[@Renji-XD](https://www.github.com/Renji-XD),\r\n[@MatiasIslaA](https://www.github.com/MatiasIslaA),\r\n[@cyphar](https://www.github.com/cyphar),\r\n[@alexbofa](https://www.github.com/alexbofa),\r\n[@Zyphdoz](https://github.com/Zyphdoz),\r\n[@artjomsR](https://github.com/artjomsR),\r\n[@iam6lake](https://github.com/iam6lake),\r\n[@bpwhelan](https://github.com/bpwhelan),\r\n[@pooky-programs](https://github.com/pooky-programs),\r\n[@m-edlund](https://github.com/m-edlund),\r\n[@nekorushi](https://github.com/nekorushi),\r\n[@Viterkim](https://github.com/Viterkim),\r\n[@s-cork](https://github.com/s-cork),\r\n[@shekhirin](https://github.com/shekhirin),\r\n[@ShanaryS](https://github.com/ShanaryS),\r\n[@kayden1940](https://github.com/kayden1940),\r\n[@eltociear](https://github.com/eltociear),\r\n[@MarvNC](https://github.com/MarvNC),\r\n[@mcgrizzz](https://github.com/mcgrizzz),\r\n[@mwojick](https://github.com/mwojick),\r\n[@kowasaur](https://github.com/kowasaur),\r\n[@NirDafnai](https://github.com/NirDafnai),\r\n[@miroshQa](https://github.com/miroshQa),\r\n[@RicBent](https://github.com/RicBent),\r\n[@fuyuka1d3su](https://github.com/fuyuka1d3su),\r\n[@SpazzTL](https://github.com/SpazzTL),\r\n[@mseh1128](https://github.com/mseh1128),\r\n[@LuqueDaniel](https://github.com/LuqueDaniel),\r\n[@agloo](https://github.com/agloo),\r\n[@Bennycopter](https://github.com/Bennycopter),\r\n[@extremq](https://github.com/extremq),\r\n[@iamllama](https://github.com/iamllama),\r\n[@danthemango](https://github.com/danthemango),\r\n[@L-M-Sherlock](https://github.com/L-M-Sherlock),\r\n[@Hit2Skill](https://github.com/Hit2Skill),\r\n[@khajiitvaper2017](https://github.com/khajiitvaper2017),\r\n[@saifkaral](https://github.com/saifkaral),\r\n[@xwxb](https://github.com/xwxb),\r\n[@yqmmm](https://github.com/yqmmm),\r\n[@jprostko](https://github.com/jprostko)\r\n\r\nThank you to all those who have translated asbplayer:\r\n\r\n**Mana Tsutsumi** (Japanese, initial translation),\r\n**Kai Böse** (German),\r\n**Triline**, **[@nekorushi](https://github.com/nekorushi)** (Polish),\r\n**NeverWinterSwor** (Simplified Chinese),\r\n**[@AkihaZhang](https://github.com/AkihaZhang)** (Simlified Chinese),\r\n**Yagxter**, **[@chatterine](https://github.com/chatterine)** (Brazilian Portuguese),\r\n**Leo Gonzalez** (Spanish),\r\n**[@NovaKing007](https://github.com/NovaKing007)** (Spanish),\r\n**Yuri ([@ganqqwerty](https://github.com/ganqqwerty))** (Russian),\r\n**Kellen (kputuhuk)** (Russian),\r\n**Vladislav Kochetkov (vakochetkov)** (Russian),\r\n**[@825i](https://github.com/825i)** (Finnish),\r\n**[@Jaybird1291](https://github.com/jaybird1291)** (French),\r\n**Tigerbabe aka Gyaru Jinsei Juku** (Korean),\r\n**yaacha** (Indonesian)\r\n\r\nIf you are a non-English native, and would like to help translate asbplayer, join the [Crowdin project](https://crowdin.com/project/asbplayer). If your language isn't there, feel free to create an issue to add it on the [issues page](https://github.com/asbplayer/asbplayer/issues).\r\n\r\n## Contributing\r\n\r\nBefore contributing, please read the [contribution guidelines](https://github.com/asbplayer/asbplayer/blob/main/CONTRIBUTING.md).\r\n\r\n## User guide\r\n\r\nasbplayer's complete user guide is [here](https://docs.asbplayer.dev/docs/intro).\r\n\r\n## Getting Started\r\n\r\n\u003e [!NOTE]  \r\n\u003e asbplayer is both a subtitle control and flashcard creation tool. If you are not interested in flashcards, and only want to use asbplayer's subtitle features, just follow step 5.\r\n\r\n1. Install and set up a dictionary tool for your target language that allows you to do instant lookups. Popular ones are [Yomitan](https://chromewebstore.google.com/detail/yomitan/likgccmbimhjbgkjambclfkhldnlhbnn) (see [supported languages](https://yomitan.wiki/other/supported-languages/)) and [VocabSieve](https://github.com/FreeLanguageTools/vocabsieve) (tuned for European languages. Works with Asian languages too but doesn't automatically detect word boundaries).\r\n2. Install [Anki](https://apps.ankiweb.net/), and create a deck and note type. More details on [Refold's guide](https://refold.la/roadmap/stage-1/a/anki-setup).\r\n3. Install the [AnkiConnect](https://ankiweb.net/shared/info/2055492159) plugin for Anki.\r\n4. [Configure](https://app.asbplayer.dev/?view=settings) asbplayer to create cards via AnkiConnect using your deck and note type.\r\n5. Enhance a video using asbplayer and subtitle files.\r\n    - **For streaming video:** After installing the [browser extension](https://github.com/asbplayer/asbplayer/releases/latest), drag-and-drop a subtitle file into the streaming video you want to mine.\r\n    - **For local files:** Drag-and-drop media/subtitle files into the [asbplayer website](https://app.asbplayer.dev).\r\n\r\n    You may have to [adjust the subtitle offset](https://docs.asbplayer.dev/docs/guides/subtitle-timing) to get the subtitles in sync.\r\n\r\n6. When a subtitle appears that you want to mine, use \u003ckbd\u003eCtrl + Shift + X\u003c/kbd\u003e to open the flashcard creator.\r\n7. Fill in the definition and word fields and then export the card. To fill in the definition field you may use the dictionary you installed in step 1.\r\n\r\n## Contact\r\n\r\nSubmit bugs or feature requests from the [issues page](https://github.com/asbplayer/asbplayer/issues). Join the [Discord](https://discord.gg/ad7VAQru7m) server to talk with me and other language learners.\r\n\r\n## Notes for AMO source code reviewers\r\n\r\n### Environment\r\n\r\n```\r\nnode 22.17.1\r\nyarn 3.2.0\r\n```\r\n\r\n### Building\r\n\r\n```\r\n# Install dependencies\r\nyarn\r\n\r\n# Builds Firefox extension to extension/.output/asbplayer-\u003cversion\u003e-firefox.zip\r\nyarn workspace @project/extension run wxt zip -b firefox\r\n\r\n# Builds Firefox for Android extension to extension/.output/asbplayer-\u003cversion\u003e-firefox-android.zip\r\nyarn workspace @project/extension run wxt zip -b firefox-android --mv2\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasbplayer%2Fasbplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasbplayer%2Fasbplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasbplayer%2Fasbplayer/lists"}