2024-01-08.21-17-48.mp4
An extension for Chromium browsers to customize lyrics in Spotify Web Player.
Report a Bug · Request a Feature
Features lyrics translation for over 100 languages powered by Google Translate and
romanization for Chinese, Korean, Japanese, Cyrillic, and many more non-latin scripts!
Tested on Google Chrome (122.0.6261.111) and Brave Browser (123.1.64.113) on Linux
Chromium browsers doesn't support installing extensions directly outside of Chrome Web Store, so follow these steps carefully:
- Download the latest release (moegi-x.x.x.zip) archive from https://github.com/sglkc/moegi/releases/latest
- Extract and remember the location of the extracted folder (moegi-x.x.x)
- Open Chrome extensions page at chrome://extensions
- Toggle developer mode at the topmost bar
- Click on the new Load unpacked button
- Find and select the folder you extracted earlier (moegi-x.x.x)
- Moegi should be added to the list and switched on, pin the extension for easy access
- Click on the puzzle piece icon on the top-right
- Find Moegi and click on the pin icon
- Open Spotify Web Player (https://open.spotify.com)
- Play any song and open the lyrics page by clicking the microphone icon on bottom-right
- If you click on Moegi, it should now display a popup, nice!
The most basic feature to customize your Spotify lyrics screen:
- Text Align: Where the lyrics should align. Default: Left, Options: Left, Center, Right.
- Font Size: Set the lyrics relative font size including translation and romanization if active. Default: 1em, Options: 0.5-2.5em.
- Spacing: How much space between lyric lines. Default: 0px, Options: 0-64px.
- Colors: Set background and lyrics colors using a color picker.
Default: Background (blueish), Active (white), Inactive (black), Passed (white with opacity)
There is an integration issue with the colors, so if you want to reset the colors, use the Reset to defaults button
Library used: google-translate-api-x
Translate lyrics line-by-line using Google Translate, successful translations are cached temporarily in storage to avoid Google Translate limit. Note that translations are not accurate and should not be used literally! Read about privacy policy.
- Font Size: Set the translation line relative to lyrics font size. Default: 1em, Options: 0.5-1.5em.
- Language Target: Translation language target. Default: auto, Options: Over 100 languages.
Mainly supported languages:
Other than that, use Anything else.
Romanize lyrics that has the selected language's characters, if none then it will skip to the next line.
- Language: Language to romanize. Default: Korean, Options: Korean, Japanese.
- Font Size: Set the romanization line relative to lyrics font size. Default: 1em, Options: 0.5-1.5em.
Libraries used: @sglkc/kuroshiro, @sglkc/kuroshiro-analyzer-kuromoji
Note that Japanese romanization may not be accurate, particularly on kanji!
- To: Romanization target for Japanese lyrics. Default: Romaji, Options: Romaji, Hiragana, Katakana.
- Mode: How generated romanization should be written. Default: Spaced, Options: Normal, Spaced, Okurigana, Furigana.
- Romaji System: What romanization system to use for romaji. Default: Hepburn, Options: Nippon, Passport, Hepburn.
- Okurigana Delimiter: What should okurigana starts and ends with. Default: ( ).
Differences between each mode in hiragana
Original Text: 感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!
-
Normal:
かんじとれたらてをつなごう、かさなるのはじんせいのライン and レミリアさいこう! -
Spaced:
かんじとれ たら て を つなご う 、 かさなる の は じんせい の ライン and レミ リア さいこう ! -
Okurigana:
感(かん)じ取(と)れたら手(て)を繋(つな)ごう、重(かさ)なるのは人生(じんせい)のライン and レミリア最高(さいこう)! -
Furigana:
感じ取れたら手を繋ごう、重なるのは人生のライン and レミリア最高!
Library used: @romanize/korean
- Hangul System: Romanization system used. Default: Revised, Options: Revised, McCune, Yale.
Differences between each romanization system
Original Text: 우두커니 그 자리에 서서 기다리려나 봐
-
Revised (Revised Romanization of Korean):
udukeoni geu jarie seoseo gidariryeona bwa -
McCune (McCune–Reischauer romanization):
utuk'ŏni kŭ carie sŏsŏ kitariryŏna pwa -
Yale (Yale romanization of Korean):
utukheni ku caliey sese kitalilyena pwa
Library used: cyrillic-to-translit-js
- Language: Cyrillic language. Default: Russian, Options: Russian, Ukrainian.
Library used: pinyin-pro
- Ruby text: Show romanization on top of original characters. Default: OFF.
Ruby text ON/OFF
Original Text: 你不知道你有多可愛
-
OFF
nǐ bù zhī dào nǐ yǒu duō kě ài -
ON
你不知道你有多可愛
Library used: any-ascii
Provides a lot of conversions at the cost of accuracy, read more from the package repository.
-
Node ^18
-
pnpm ^8 (https://pnpm.io/installation)
npm install -g pnpm
If you wish to make modifications or just want to build the extension yourself:
- Clone the repository
git clone https://github.com/sglkc/moegi.git
cd moegi
- Install dependencies using pnpm
pnpm install
- Start extension development with hot reload
pnpm dev
- Build extension
pnpm build
Any kind of contributions are greatly appreciated! You can start by forking this repository then create a pull request.
- Fork the repository
- Clone the forked repository to your machine
- Create your branch (
git checkout -b feat/new-feature
) - Commit your changes (
git commit -m 'feat: add new command'
) - Push to the branch (
git push origin feat/new-feature
) - Open a pull request
Moegi is not affiliated with Spotify in any way. Moegi is for educational purposes only and should not be used to violate Spotify's terms of service.
-
Moegi does not track your listening habits, your IP address, or any other personal information. Everything is done locally in the web browser, except for the translation feature.
-
The translation feature uses Google Translate, which is a third-party service. Google may collect some data about your use of the translation feature, such as the text you translate and the language you translate it to. For more information about Google's privacy policy, please see https://policies.google.com/privacy.
-
Moegi uses a small amount of storage space on your computer to store the options that you have customized and lyrics you have translated. It is not used to store any other personal information.
Distributed under the MIT License. See LICENSE for more information.