{"id":13641422,"url":"https://github.com/toasterofbread/spmp","last_synced_at":"2025-05-14T21:07:52.755Z","repository":{"id":158116691,"uuid":"525732824","full_name":"toasterofbread/spmp","owner":"toasterofbread","description":"A YouTube Music client with a focus on customisation of colours and song metadata. Built with Compose Multiplatform for Android and desktop.","archived":false,"fork":false,"pushed_at":"2025-03-14T18:18:19.000Z","size":63205,"stargazers_count":1372,"open_issues_count":45,"forks_count":57,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-04-14T02:58:21.067Z","etag":null,"topics":["compose","compose-multiplatform","jetpack-compose","kotlin-multiplatform","music-player","youtube-music"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toasterofbread.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":"toasterofbread","ko_fi":"toasterofbread","liberapay":"toasterofbread"}},"created_at":"2022-08-17T10:00:47.000Z","updated_at":"2025-04-13T17:45:29.000Z","dependencies_parsed_at":"2023-12-25T23:22:15.617Z","dependency_job_id":"d8db5360-64b4-4327-992c-8d536b0b4497","html_url":"https://github.com/toasterofbread/spmp","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toasterofbread%2Fspmp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toasterofbread%2Fspmp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toasterofbread%2Fspmp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toasterofbread%2Fspmp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toasterofbread","download_url":"https://codeload.github.com/toasterofbread/spmp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254227613,"owners_count":22035670,"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":["compose","compose-multiplatform","jetpack-compose","kotlin-multiplatform","music-player","youtube-music"],"created_at":"2024-08-02T01:01:20.602Z","updated_at":"2025-05-14T21:07:47.736Z","avatar_url":"https://github.com/toasterofbread.png","language":"Kotlin","funding_links":["https://github.com/sponsors/toasterofbread","https://ko-fi.com/toasterofbread","https://liberapay.com/toasterofbread"],"categories":["🎬 Media \u0026 Entertainment","🎧 YouTube Music","Uncategorized"],"sub_categories":["📺 Streaming Services","Uncategorized"],"readme":"\u003cp\u003e\n    \u003ca href=\"readme/README-ja.md\"\u003e日本語のREADMEへ\u003c/a\u003e\n    \u003ca href=\"https://discord.gg/B4uY4FkkJ3\"\u003e\u003cimg src=\"https://img.shields.io/discord/1133321339495788625?style=for-the-badge\u0026logo=discord\u0026label=Discord\u0026color=4f58d6\" align=\"right\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n###\n\u003cimg align=\"left\" width=\"140\" src=\"metadata/en-US/images/icon_round.png\"\u003e\n\n\u003ca href=\"https://github.com/toasterofbread/spmp/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/toasterofbread/spmp?style=for-the-badge\u0026color=624c9a\" align=\"right\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/toasterofbread/spmp/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/toasterofbread/spmp?logo=github\u0026style=for-the-badge\u0026color=624c9a\" align=\"right\"\u003e\u003c/a\u003e\n\n# SpMp\nA YouTube Music client with a focus on customisation of colours and song metadata, built using Compose Multiplatform for Android and desktop\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n# Features\n- Edit song, artist, and playlist titles\n- Select multiple songs for batch actions on any screen\n- Customisable colour theming throughout the app\n    - Use a colour from the current song's thumbnail\n    - Or use a custom colour set per-song or globally\n- Display app UI and metadata like song titles in separate languages\n- In-app YouTube Music login\n- Display time-synchronised lyrics from [KuGou](https://www.kugou.com/) and [PetitLyrics](https://petitlyrics.com/)\n    - Timed lyrics are displayed in a toggleable bar above every app page\n    - Furigana (readings) display above Japanese kanji within lyrics\n- Pin any song, playlist, album, or artist to the top of the main page\n- Customisable Discord rich presence\n- Easily insert songs at any position in the queue\n\n##### And more (see [the wiki](https://github.com/toasterofbread/spmp/wiki) for a ~~full~~ more complete list of features)\n\n\u003cdetails open\u003e\n    \u003csummary\u003e\u003ch2\u003eScreenshots\u003c/h2\u003e\u003c/summary\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg src=\"metadata/en-US/images/phoneScreenshots/landscape_1.png\" style=\"max-height:50vh;object-fit:contain;\" width=\"78%\"\u003e\n        \u003cimg width=\"21%\" src=\"metadata/en-US/images/phoneScreenshots/8.png\" style=\"max-height:50vh;object-fit:contain;\"\u003e\n    \u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg width=\"21%\" src=\"metadata/en-US/images/phoneScreenshots/1.png\" style=\"max-height:50vh;object-fit:contain;\"\u003e\n        \u003cimg src=\"metadata/en-US/images/phoneScreenshots/landscape_2.png\" style=\"max-height:50vh;object-fit:contain;\" width=\"78%\"\u003e\n    \u003c/p\u003e\n\u003c/details\u003e\n\n\u003cdetails closed\u003e\n    \u003csummary\u003e\u003ch2\u003eMore Screenshots\u003c/h2\u003e\u003c/summary\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg src=\"metadata/en-US/images/phoneScreenshots/9.png\" style=\"max-height:70vh;object-fit:contain;\" width=\"25%\"\u003e\n        \u003cimg src=\"metadata/en-US/images/phoneScreenshots/7.png\" style=\"max-height:70vh;object-fit:contain;\" width=\"25%\"\u003e\n        \u003cimg src=\"metadata/en-US/images/phoneScreenshots/4.png\" style=\"max-height:70vh;object-fit:contain;\" width=\"25%\"\u003e\n    \u003c/p\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg src=\"metadata/en-US/images/phoneScreenshots/0.png\" style=\"max-height:70vh;object-fit:contain;\" width=\"25%\"\u003e\n        \u003cimg src=\"metadata/en-US/images/phoneScreenshots/5.png\" style=\"max-height:70vh;object-fit:contain;\" width=\"25%\"\u003e\n        \u003cimg src=\"metadata/en-US/images/phoneScreenshots/6.png\" style=\"max-height:70vh;object-fit:contain;\" width=\"25%\"\u003e\n    \u003c/p\u003e\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Installation\n\nDownloads for all platforms can be found on the repository's [releases page](https://github.com/toasterofbread/spmp/releases).\n\n#### Additional requirements on desktop\n\n- Java must be installed for all desktop platforms\n- [Several system packages](https://spmp.toastbits.dev/docs/latest/client/installation/#dependencies) are required to use the Linux version\n\nThe Android version is also available on F-Droid. There is no difference between APKs available on GitHub and those on F-Droid.\n\n[\u003cimg src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\" height=\"80\"\u003e](https://f-droid.org/en/packages/com.toasterofbread.spmp/)\n\n## Documentation\n\nDocumentation on advanced usage of SpMp including compilation instructions can be found at https://spmp.toastbits.dev/docs/\n\n## About the project\nI started this project after I got tired of dealing with YouTube's official music app's lack of language features and customisation. I tried several alternatives, but all had at least a few issues that bugged me.\n\nSo instead of spending a few weeks learning the codebase of an existing project and contributing to it, I decided to spend almost a year (as of writing) creating my own solution.\n\n## Contributing\nPull requests, bug reports, and feature suggestions are welcome! This is my first Compose project (and also the largest project I've ever done in general) so there's probably plenty of room for improvement.\n\nThe app is currently being developed for both English and Japanese. Contributions for other languages would be greatly appreciated! Information about app localisation can be found [here](https://github.com/toasterofbread/spmp/wiki/App-localisation).\n\n## Thanks to\n- smlqrs: For designing the project's icon graphic\n- [ytmusicapi](https://github.com/sigma67/ytmusicapi/): Used as a reference for the YouTube Music API\n- [ExoVisualizer](https://github.com/dzolnai/ExoVisualizer): Music visualiser implementation\n- [ViMusic](https://github.com/vfsfitvnm/ViMusic): A major inspiration for this project\n\n#### Libraries (see all in [Dependencies.kt](/buildSrc/src/main/kotlin/plugins/spmp/Dependencies.kt))\n- [Piped](https://github.com/TeamPiped/Piped): Provides stream URLs for music playback\n- [SQLDelight](https://github.com/cashapp/sqldelight): Database for media metadata\n- [Kuromoji](https://github.com/atilika/kuromoji): Generates furigana (readings) for Japanese lyrics\n- [KizzyRPC](https://github.com/dead8309/KizzyRPC): Discord status functionality\n- [ComposeReorderable](https://github.com/aclassen/ComposeReorderable): Reorderable lists like the song queue\n- [compose-color-picker](https://github.com/godaddy/compose-color-picker): Theme editor colour wheel\n- [Catppuccin](https://github.com/d1snin/catppuccin-kotlin): Themes included as options in-app\n\n## Disclaimer\nThis project and its contents are not affiliated with, funded, authorized, endorsed by, or in any way associated with YouTube, Google LLC or any of its affiliates and subsidiaries.\n\nAny trademark, service mark, trade name, or other intellectual property rights used in this project are owned by the respective owners.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoasterofbread%2Fspmp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoasterofbread%2Fspmp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoasterofbread%2Fspmp/lists"}