{"repo":"sebastianevan200-stack/serenade","free":true,"listed":false,"github":"https://github.com/sebastianevan200-stack/serenade","clone":"git clone https://github.com/sebastianevan200-stack/serenade.git","description":"Self-hosted NetEase Cloud Music web player with remote playback","language":"HTML","stars":13,"topics":[],"license":null,"category":"self-hosted-apps","readme_excerpt":"Serenade Self-hosted NetEase Cloud Music web player. Search songs, play full tracks with your own VIP account, and remotely switch songs from anywhere. Built at midnight because someone wanted to hear a song. Features - Search — NetEase Cloud Music catalog - Full playback — Uses your own MUSIC U cookie for VIP-quality streams - Synced lyrics — Real-time scrolling lyrics with tap-to-seek - Shared playlist — Server-side playlist, add/remove from any device - Roam mode — Auto-play similar songs when the current one ends - Server-side caching — Songs are downloaded once and served locally - CDN fallback — Automatically switches CDN nodes when blocked (overseas servers) - Remote play — Push a song to the player from any device via API - Zero dependencies — Pure Python stdlib server, vanilla JS frontend Quick start Open http://localhost:8080 Getting your MUSIC U cookie 1. Open music.163.com in your browser and log in 2. Open DevTools → Application → Cookies 3. Find the MUSIC U cookie and copy its value 4. Paste it into server/.netease cred Remote play API Push a song to the player from another device: The player polls every 3 seconds and auto-plays the pushed song. API Endpoint Method Description --- --- --- /api/search?q=keyword GET Search songs /api/url?id=songId GET Cache and get playback URL /api/lyric?id=songId GET Get synced LRC lyrics /api/similar?id=songId GET Find similar songs /api/playlist GET Get shared playlist /api/playlist/add POST Add song to playlist /api/playlist/","default_branch":null,"files":null,"tree":[],"storefront":"/r/sebastianevan200-stack","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/sebastianevan200-stack/serenade/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."}