{"repo":"sebastianevan200-stack/eryu","free":true,"listed":false,"github":"https://github.com/sebastianevan200-stack/eryu","clone":"git clone https://github.com/sebastianevan200-stack/eryu.git","description":"A self-hosted music player for listening together.","language":"HTML","stars":49,"topics":[],"license":null,"category":"self-hosted-apps","readme_excerpt":"eryu A self-hosted music player for listening together. Powered by NetEase Cloud Music. Features - Search & Play — Full NetEase Cloud Music catalog with VIP-quality streams - Synced Lyrics — Real-time scrolling lyrics with tap-to-seek and draggable progress bar - Translation — Foreign songs automatically show Chinese translation - Playlists — Create and manage multiple playlists - Roam Mode — Auto-discover similar songs when the queue is empty - Song Notes — Save feelings, favorite lines, and tags for each song - Spectrum Analysis — BPM, key, and energy curve analysis (optional, requires librosa) - Remote Play — Push songs to the player from any device via API - Daily Recommendations — Personalized song suggestions - CDN Fallback — Automatic node switching for overseas servers - Zero Dependencies — Pure Python stdlib server, vanilla JS frontend Quick Start Open http://localhost:9090 in your browser. The auth token is auto-generated and saved to server/.secret on first run. Configuration Environment Variable Default Description --- --- --- PORT 9090 Server port API All endpoints require X-Auth-Token header (or ?token= query param). Playback - GET /music/search?q=keyword — Search songs - GET /music/url?id=songId — Get audio URL (auto-caches) - GET /music/lyric?id=songId — Get lyrics + translation - GET /music/similar?id=songId — Get similar songs - GET /music/roam — Discover songs from random genres Playlists - GET /music/playlist — Default playlist - GET /music/playlists — Lis","default_branch":null,"files":null,"tree":[],"storefront":"/r/sebastianevan200-stack","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/sebastianevan200-stack/eryu/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}