{"id":15381305,"url":"https://github.com/mantou132/spotify-lyrics","last_synced_at":"2025-05-15T03:05:27.199Z","repository":{"id":43458545,"uuid":"231937205","full_name":"mantou132/Spotify-Lyrics","owner":"mantou132","description":"🎉 Desktop Spotify Web Player Instant Synchronised Lyrics","archived":false,"fork":false,"pushed_at":"2025-04-29T02:11:43.000Z","size":14040,"stargazers_count":954,"open_issues_count":26,"forks_count":62,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-29T03:29:33.070Z","etag":null,"topics":["browser-extension","chrome-extension","deezer","edge-extension","firefox-addon","firefox-extension","lyrics","safari-extension","spotify","spotify-lyrics","youtube-music"],"latest_commit_sha":null,"homepage":"https://microsoftedge.microsoft.com/addons/detail/spotify-lyrics/aiehldpoaeaidnljjimhbojpblkbembm","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mantou132.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-01-05T15:27:29.000Z","updated_at":"2025-04-29T02:11:46.000Z","dependencies_parsed_at":"2024-05-12T08:22:19.575Z","dependency_job_id":"2574b128-306f-4982-817b-15a48297e2d3","html_url":"https://github.com/mantou132/Spotify-Lyrics","commit_stats":{"total_commits":515,"total_committers":4,"mean_commits":128.75,"dds":0.04854368932038833,"last_synced_commit":"b45223f7dee4132fb638fe5e4c9c68a3e7db60e4"},"previous_names":[],"tags_count":106,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mantou132%2FSpotify-Lyrics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mantou132%2FSpotify-Lyrics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mantou132%2FSpotify-Lyrics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mantou132%2FSpotify-Lyrics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mantou132","download_url":"https://codeload.github.com/mantou132/Spotify-Lyrics/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"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":["browser-extension","chrome-extension","deezer","edge-extension","firefox-addon","firefox-extension","lyrics","safari-extension","spotify","spotify-lyrics","youtube-music"],"created_at":"2024-10-01T14:26:40.791Z","updated_at":"2025-05-15T03:05:27.139Z","avatar_url":"https://github.com/mantou132.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Discord](https://img.shields.io/discord/763927057549099028)](https://discord.com/invite/fQbzzdJ)\n\n# Lyrics for Spotify\n\nThe **browser extension** adds a button to the bottom left corner of **Spotify Web Player**,\nClick to switch the display status of the lyrics,\nwhich is displayed in the Picture-in-Picture window by default setting.\nSpotify can be [installed as pwa](https://support.google.com/chrome/answer/9658361) instead of desktop client.\n\nIf you have any questions, please submit an [issue](https://github.com/mantou132/Spotify-Lyrics/issues).\n\n![windows-pwa-spotify](./screenshot/windows-pwa-spotify.jpg)\n\n## Install\n\n- Chrome/Chromium/Firefox: Download the zip on the [release](https://github.com/mantou132/Spotify-Lyrics/releases) page, and then load the extension on the extension management page of the browser. [reason](https://github.com/mantou132/Spotify-Lyrics/issues/68).\n- Safari(Soon)\n\n## Features\n\n- Instant synchronized lyrics display\n- Lyrics style [setting](./screenshot/options-in-spotify.jpg)(Right Click)\n- Lyrics [editor](./screenshot/lrc-editor-in-spotify.jpg) and upload(Ctrl + Right Click)\n- [Experimental](https://github.com/mantou132/Spotify-Lyrics/issues/35) support Youtube Music, Apple Music, Deezer and Tidal\n\n  ![macos-pwa-youtube](./screenshot/macos-pwa-youtube.jpg)\n\n## How To Work\n\n1. [Listen](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) for track info element.\n2. Search for songs and download lyrics using [`NeteaseCloudMusicApi`](https://github.com/Binaryify/NeteaseCloudMusicApi).\n3. Rendering lyrics to [`\u003ccanvas\u003e`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D).\n4. [Capture](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/captureStream) video stream from `\u003ccanvas\u003e` and merge cover image.\n5. Update lyrics scroll position with a [loop](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame).\n\n## Compatibility\n\n- Firefox [78+](https://bugzilla.mozilla.org/show_bug.cgi?id=1361876) (Not support [PiP](https://bugzilla.mozilla.org/show_bug.cgi?id=1463402))\n- Edge [79+](https://blogs.windows.com/msedgedev/2020/01/15/upgrading-new-microsoft-edge-79-chromium/)\n- Chrome [70+](https://caniuse.com/#feat=picture-in-picture)\n- Safari [14+](https://developer.apple.com/documentation/safariservices/safari_web_extensions)\n\n## Development\n\nRequirement: [Node.js](https://nodejs.org)\n\n```bash\n# install dependencies\nyarn\n# start develop\nyarn run start\n# optional: start firebase function simulation\nyarn run start:firebase\n```\n\nBuild:\n\n```bash\nyarn run build:zip\n\n# firebase deploy and config update\n# npm i -g firebase-tools\nfirebase deploy\nfirebase functions:config:get\nfirebase functions:config:set spotify-lyrics.manager-ids=xxx\n```\n\n## Match Success Rate\n\nSpotify, v1.2.7, Friday, July 31, 2020\n\n| Playlist Name             | Success rate | Success | No Match | No Lyrics |\n| ------------------------- | ------------ | ------- | -------- | --------- |\n| Global Top 50             | 94%          | 47      | 1        | 2         |\n| Argentina Top 50          | 62%          | 31      | 9        | 10        |\n| Australia Top 50          | 96%          | 48      | 1        | 1         |\n| Austria Top 50            | 78%          | 39      | 6        | 5         |\n| Belgium Top 50            | 94%          | 47      | 2        | 1         |\n| Bolivia Top 50            | 80%          | 40      | 6        | 4         |\n| Brazil Top 50             | 24%          | 12      | 12       | 26        |\n| Bulgaria Top 50           | 66%          | 33      | 1        | 16        |\n| Canada Top 50             | 100%         | 50      | 0        | 0         |\n| Chile Top 50              | 80%          | 40      | 5        | 5         |\n| Colombia Top 50           | 78%          | 39      | 7        | 4         |\n| Costa Rica Top 50         | 76%          | 38      | 7        | 5         |\n| Czech Republic Top 50     | 54%          | 27      | 7        | 16        |\n| Denmark Top 50            | 58%          | 29      | 1        | 20        |\n| Dominican Republic Top 50 | 78%          | 39      | 5        | 6         |\n| Ecuador Top 50            | 78%          | 39      | 7        | 4         |\n| El Salvador Top 50        | 78%          | 39      | 7        | 4         |\n| Estonia Top 50            | 58%          | 29      | 4        | 17        |\n| Finland Top 50            | 60%          | 30      | 0        | 20        |\n| France Top 50             | 64%          | 32      | 2        | 16        |\n| Germany Top 50            | 80%          | 40      | 7        | 3         |\n| Greece Top 50             | 38%          | 19      | 4        | 27        |\n| Guatemala Top 50          | 82%          | 41      | 6        | 3         |\n| Honduras Top 50           | 78%          | 39      | 7        | 4         |\n| Hong Kong Top 50          | 80%          | 40      | 10       | 0         |\n| Hungary Top 50            | 80%          | 40      | 3        | 7         |\n| Iceland Top 50            | 60%          | 30      | 4        | 16        |\n| India Top 50              | 52%          | 26      | 9        | 15        |\n| Indonesia Top 50          | 62%          | 31      | 4        | 15        |\n| Ireland Top 50            | 100%         | 50      | 0        | 0         |\n| Israel Top 50             | 62%          | 31      | 6        | 13        |\n| Italy Top 50              | 76%          | 38      | 4        | 8         |\n| Japan Top 50              | 52%          | 26      | 19       | 5         |\n| Latvia Top 50             | 90%          | 45      | 1        | 4         |\n| Lithuania Top 50          | 68%          | 34      | 11       | 5         |\n| Luxembourg Top 50         | 84%          | 42      | 4        | 4         |\n| Malaysia Top 50           | 88%          | 44      | 3        | 3         |\n| Mexico Top 50             | 76%          | 38      | 7        | 5         |\n| Netherlands Top 50        | 72%          | 36      | 2        | 12        |\n| New Zealand Top 50        | 96%          | 48      | 0        | 2         |\n| Nicaragua Top 50          | 80%          | 40      | 6        | 4         |\n| Norway Top 50             | 82%          | 41      | 1        | 8         |\n| Panama Top 50             | 80%          | 40      | 6        | 4         |\n| Paraguay Top 50           | 80%          | 40      | 7        | 3         |\n| Peru Top 50               | 80%          | 40      | 5        | 5         |\n| Philippines Top 50        | 82%          | 41      | 4        | 5         |\n| Poland Top 50             | 30%          | 15      | 26       | 9         |\n| Portugal Top 50           | 66%          | 33      | 2        | 15        |\n| Romania Top 50            | 58%          | 29      | 6        | 15        |\n| Russia Top 50             | 54%          | 27      | 16       | 7         |\n| Singapore Top 50          | 88%          | 44      | 6        | 0         |\n| Slovakia Top 50           | 62%          | 31      | 10       | 9         |\n| South Africa Top 50       | 98%          | 49      | 0        | 1         |\n| Spain Top 50              | 72%          | 36      | 4        | 10        |\n| Sweden Top 50             | 80%          | 40      | 7        | 3         |\n| Switzerland Top 50        | 88%          | 44      | 5        | 1         |\n| Taiwan Top 50             | 68%          | 34      | 16       | 0         |\n| Thailand Top 50           | 82%          | 41      | 9        | 0         |\n| Turkey Top 50             | 50%          | 25      | 4        | 21        |\n| Ukraine Top 50            | 76%          | 38      | 7        | 5         |\n\n## Contribution\n\nFork it, submit PR.\n\n- Add translation\n- If you can write code, you can fix [bugs](https://github.com/mantou132/Spotify-Lyrics/issues?q=is%3Aissue+is%3Aopen+label%3Abug) or improve [performance](https://github.com/mantou132/Spotify-Lyrics/issues?q=is%3Aissue+is%3Aopen+label%3Aperformance)\n- Optimize the matching rate of Chinese, Japanese and Korean lyrics.(edit [config.json](./src/page/config.json)). _Note: The extension already has automatic optimization, this list serves as a supplement_ . _[Unmatched lyrics report](https://datastudio.google.com/reporting/bfd79c68-f9f4-4af5-8e51-a12d3d6be450)_\n\n## Privacy Policy\n\n[see](./src/privacy-policy.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmantou132%2Fspotify-lyrics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmantou132%2Fspotify-lyrics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmantou132%2Fspotify-lyrics/lists"}