{"id":22022132,"url":"https://github.com/michaelkim/lyra","last_synced_at":"2026-03-05T20:20:34.059Z","repository":{"id":41263283,"uuid":"177973268","full_name":"MichaelKim/lyra","owner":"MichaelKim","description":"A cross-platform YouTube streaming app for desktop, mobile, and web","archived":false,"fork":false,"pushed_at":"2023-02-04T01:25:22.000Z","size":4147,"stargazers_count":3,"open_issues_count":7,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-04T10:11:12.350Z","etag":null,"topics":["electron","music-player","youtube"],"latest_commit_sha":null,"homepage":"","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/MichaelKim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-27T10:43:09.000Z","updated_at":"2025-01-06T23:02:53.000Z","dependencies_parsed_at":"2023-02-07T05:15:51.128Z","dependency_job_id":null,"html_url":"https://github.com/MichaelKim/lyra","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MichaelKim/lyra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelKim%2Flyra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelKim%2Flyra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelKim%2Flyra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelKim%2Flyra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MichaelKim","download_url":"https://codeload.github.com/MichaelKim/lyra/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MichaelKim%2Flyra/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006456,"owners_count":26084108,"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","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"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":["electron","music-player","youtube"],"created_at":"2024-11-30T06:18:09.873Z","updated_at":"2025-10-11T06:31:18.040Z","avatar_url":"https://github.com/MichaelKim.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lyra Music Player\n\nLyra is a cross-platform music player app that can play songs on your computer and on YouTube.\n\nThis repository contains the code for the desktop and browser app versions of Lyra, written in Electron. Also check out the [mobile app](https://github.com/MichaelKim/lyra-mobile).\n\nCheck out the [lightweight version](https://github.com/MichaelKim/lyra-neutrino) built with [Neutrino](https://github.com/MichaelKim/neutrino)!\n\n## Features\n\n- Songs\n  - Add songs on your computer and play them (only on Electron)\n  - Remove songs\n- Playback\n  - Volume control\n  - Shuffle\n  - Skip forward / back 10 seconds\n  - Skip to previous / next song\n  - Media button shortcuts (Play, Pause, Skip)\n- Queue\n  - Add to queue\n  - Generates queue\n- Song metadata\n  - Parses title and artist metadata\n  - Edit metadata within the player\n- Playlists\n  - Create and delete playlists\n  - Add and remove songs to playlists\n  - Play songs in a playlist\n- YouTube\n  - Search for YouTube videos\n  - YouTube video playback (audio only)\n  - Autoplay\n  - Shows related videos\n  - Add video to library\n  - Download YouTube video as audio\n\nKeyboard Shortcuts:\n\n- K: Toggle play / pause\n- J: Skip back 10 seconds\n- L: Skip forward 10 seconds\n- H: Skip to previous song / start of song\n- (Semicolon): Skip to next song\n\n## Screenshots\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./screenshots/library.png\" alt=\"Library\" width=\"49%\"\u003e\n  \u003cimg src=\"./screenshots/youtube.png\" alt=\"Youtube\" width=\"49%\"\u003e\n\u003c/div\u003e\n\n## Development\n\nThere are several ways to run Lyra:\n\n### Electron App\n\n```sh\nnpm run electron       # Run locally in development mode\n\nnpm run electron:build # Build unpacked release\n\nnpm run electron:dist  # Create unpacked Electron app\n\nnpm run electron:pack  # Create packaged executable\n```\n\n### Browser Web App\n\n```sh\nnpm run browser       # Available on localhost:9000\n\nnpm run browser:build # Create release\n\nnpm run browser:serve # Serve built release on localhost:8080\n```\n\nThis also requires [lyra-server](https://github.com/MichaelKim/lyra-server) to be running (on localhost:5000).\n\n### Neutrino App (Experimental)\n\nUntil I get to uploading binaries, you will need to build Neutrino from source.\n\nClone [Neutrino](https://github.com/MichaelKim/neutrino), then follow the build instructions in the Neutrino README. Place them in the same directory (or change the relative path in `package.json` for the package `neutrinojs`). Make sure to place the built executable inside `neutrino/lib`. If you use CMake, the provided config should already do it.\n\nThe build scripts use `neutrino-webpack` and `neutrino-builder`, which are provided along with Neutrino. Check Neutrino README for more details.\n\n```sh\nnpm run neutrino       # Run locally with Neutrino in development mode\n\nnpm run neutrino:build # Create release\n\nnpm run neutrino:dist  # Create unpacked Neutrino app\n                       # (Note: Windows won't be able to run the unpacked app; see Neutrino's README)\n```\n\nThis also requires [lyra-server](https://github.com/MichaelKim/lyra-server) to be running (on localhost:5000).\n\nNote:\n\n- Media button shortcuts don't work normally in Linux. To get around it, the player uses `dbus` to directly access shortcuts. `dbus` requires several other packages to install:\n  - `npm i -g node-gyp`\n  - `sudo apt-get install libdbus-1-dev libglib2.0-dev`\n  - Upon installing `dbus`, node will build the package for use. However, there may be differences in Node and Electron `NODE_MODULE_VERSION`s.\n    - See more here: https://electronjs.org/docs/tutorial/using-native-node-modules\n- On macOS Mojave (and higher), access to media keys requires accessibility permissions. In this case, Lyra will display a dialog requesting permissions.\n- On Linux, running the AppImage for the first time will install the desktop file in `~/.local/share/applications/` for desktop integration. However, if the path to the AppImage has a space in it, the desktop file will have an incorrect value for `TryExec`, making it unable to run.\n  - `TryExec` doesn't support quotes, so spaces in the path must be escaped. However, they are escaped with `\\\\s` rather than `\\s`.\n    - See https://github.com/AppImage/AppImageKit/issues/948 and https://github.com/electron-userland/electron-builder/issues/3547\n  - My fix is to set the AppImage executable name to something without spaces. As long as the directories in the path don't have spaces, the integration should work normally.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelkim%2Flyra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelkim%2Flyra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelkim%2Flyra/lists"}