[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75884":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":8,"pushedAt":8,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},75884,"cupid-music-player","cupidbity\u002Fcupid-music-player","cupidbity",null,"JavaScript",345,62,101,4,0,10,59,232,47,5.4,false,"main",true,[],"2026-06-12 02:03:37","# cupid music player\n\nA pixel-art desktop music player built with Electron, Vite, and React.\n\n## Features\n\n- Pixel-art UI with animated record player, spinning vinyl, and needle\n- Record swap animation on song change (pink\u002Fblue vinyl alternation)\n- Interactive progress bar with draggable star indicator\n- Marquee scrolling for long track titles\n- Pink and blue theme switching with persistent preference\n- Spotify integration — browse your playlists and play tracks via yt-dlp\n- Apple Music integration — browse your library playlists via MusicKit JS\n- YouTube playlists — paste any public playlist URL (no sign-in) or sign in with Google to browse your own\n- Local MP3 playback\n- Custom frameless window with drag and resize\n- Dynamic dock\u002Ftaskbar icon that matches the active theme\n\n## Getting Started\n\n```bash\nnpm install   # also auto-downloads the yt-dlp binary for your OS into .\u002Fbin\nnpm run dev\n```\n\nRequires Node.js 18+. No Python install needed — the postinstall script fetches the standalone yt-dlp binary that powers streaming.\n\n## Adding Local Audio Files\n\nThe local playlist is driven by a single file, `playlist.json`, that lives next to your audio files. Drop your songs into the audio folder, list them in the JSON, and the player picks them up.\n\n### Where the audio folder lives\n\n- **Running from source (dev):** `audio\u002F` in the project root.\n- **Installed app (macOS):** `~\u002FLibrary\u002FApplication Support\u002FCupid Player\u002Faudio\u002F`\n- **Installed app (Windows):** `%APPDATA%\\Cupid Player\\audio\\`\n- **Installed app (Linux):** `~\u002F.config\u002FCupid Player\u002Faudio\u002F`\n\nOn first launch, the installed app seeds this folder with the bundled defaults. After that it's yours to edit — the app never overwrites it.\n\n### Building your playlist\n\n1. Drop `.mp3` files into the audio folder.\n2. Open `playlist.json` in the same folder and add one entry per song:\n\n   ```json\n   [\n     { \"file\": \"my-song.mp3\", \"title\": \"My Song\", \"artist\": \"Some Artist\", \"album\": \"Album Name\", \"art\": \"https:\u002F\u002Fexample.com\u002Fcover.jpg\" },\n     { \"file\": \"another.mp3\", \"title\": \"Another Song\", \"artist\": \"Someone Else\" }\n   ]\n   ```\n\n   - `file` and `title` are required.\n   - `artist`, `album`, and `art` are optional. `art` is a URL to a cover image.\n   - The `file` value must match the mp3 filename exactly (spaces and case included).\n\n3. In the app, hit the settings icon and the local tab is selected by default. Reload the app to pick up new edits — `playlist.json` is read on launch.\n\n### Supported formats\n\n`.mp3`, `.m4a`, `.aac`, `.flac`, `.wav`, `.ogg`, `.opus`.\n\n## Spotify Setup\n\nStream any track from your Spotify playlists. Audio is fetched from YouTube via yt-dlp.\n\n> **Note:** As of February 2026, Spotify requires the developer account that creates the app to have an active Premium subscription ([announcement](https:\u002F\u002Fdeveloper.spotify.com\u002Fblog\u002F2026-02-06-update-on-developer-access-and-platform-security)). Without it, the Spotify API returns 403 for all users.\n\n1. Create a Spotify app at [developer.spotify.com\u002Fdashboard](https:\u002F\u002Fdeveloper.spotify.com\u002Fdashboard)\n2. Add `http:\u002F\u002F127.0.0.1:5173\u002Fcallback` as a redirect URI\n3. Copy `.env.example` to `.env` and add your Client ID\n4. Add yourself under Settings > User Management\n5. Click the settings icon in the player > log in\n\nSee [SPOTIFY_SETUP.md](SPOTIFY_SETUP.md) for detailed instructions and troubleshooting.\n\n## Apple Music Setup\n\nBrowse your Apple Music library playlists. Requires an Apple Developer account. **Apple Music subscription is not required for playback.**\n\n1. Create a MusicKit key at [developer.apple.com\u002Faccount\u002Fresources\u002Fauthkeys](https:\u002F\u002Fdeveloper.apple.com\u002Faccount\u002Fresources\u002Fauthkeys\u002Flist)\n2. Download the `.p8` key file and place it in the project root\n3. Add `APPLE_TEAM_ID` and `APPLE_KEY_ID` to your `.env`\n4. Click the settings icon > switch to apple > log in\n\nSee [APPLE_MUSIC_SETUP.md](APPLE_MUSIC_SETUP.md) for detailed instructions and troubleshooting.\n\n## YouTube Setup\n\nTwo flows — pick whichever you want by configuring (or not) your `.env`. **No YouTube Premium \u002F no subscription required** in either case.\n\n**Paste any public playlist URL** (zero setup):\n\n1. Click the settings icon in the player > switch to youtube\n2. Paste a YouTube\u002FYouTube Music playlist URL into the box\n3. Hit `load playlist`\n\n**Browse your own playlists** (requires Google OAuth setup):\n\n1. Create a Google Cloud project at [console.cloud.google.com](https:\u002F\u002Fconsole.cloud.google.com\u002F), enable **YouTube Data API v3**\n2. Configure the OAuth consent screen (External, add yourself as a test user, scope `youtube.readonly`)\n3. Create OAuth credentials of type **Desktop app**\n4. Add `VITE_YOUTUBE_CLIENT_ID` and `VITE_YOUTUBE_CLIENT_SECRET` to your `.env`\n5. Click the settings icon > switch to youtube > log in with google\n\nThe sign-in option only appears when `VITE_YOUTUBE_CLIENT_ID` is set; otherwise the URL-paste box shows instead.\n\nSee [YOUTUBE_SETUP.md](YOUTUBE_SETUP.md) for detailed instructions and troubleshooting.\n\n## Build\n\n```bash\nnpm run package\n```\n\n### Install as Desktop App\n\n**macOS:**\n```bash\ncp -r \"out\u002Fmac-arm64\u002FCupid Player.app\" \u002FApplications\u002F\n```\n\n**Windows:** Run the installer from `out\u002FCupid Player Setup.exe`. If `npm run package` fails at the NSIS step with \"Cannot create symbolic link,\" enable **Developer Mode** in Settings → System → For developers, then re-run. The unpacked app at `out\u002Fwin-unpacked\u002FCupid Player.exe` is fully runnable in the meantime — no installer required.\n\n**Linux:** Run the AppImage from `out\u002F`.\n\n> Note: The macOS build is unsigned. On first launch you may need to right-click > Open, or go to System Settings > Privacy & Security to allow it.\n\n## Tech Stack\n\n- **Electron** — desktop app shell (frameless window, IPC, system tray)\n- **Vite** — build tool and dev server\n- **React** — UI framework\n- **HTML5 Audio** — local MP3 playback\n- **yt-dlp** — YouTube audio streaming for Spotify\u002FApple\u002FYouTube tracks; also fetches public YouTube playlist contents via `--flat-playlist`\n- **Spotify Web API** — playlist and metadata fetching (OAuth PKCE)\n- **Apple MusicKit JS** — library playlist access (JWT auth)\n- **YouTube Data API v3** — sign-in browsing of the user's own playlists (Google OAuth PKCE, free quota)\n- **CSS** — custom properties for theming, calc-based responsive scaling\n- **Node.js** — main process (JWT generation, yt-dlp execution)\n- **jsonwebtoken** — Apple Music developer token generation\n","Cupid Music Player 是一款使用 Electron、Vite 和 React 构建的像素风格桌面音乐播放器。其核心功能包括像素艺术界面、动画唱片更换效果、可拖动的进度条指示器以及滚动显示长曲目标题等。此外，它还支持 Spotify 和 Apple Music 集成，允许用户浏览并播放来自这些平台的音乐；也支持 YouTube 播放列表和本地 MP3 文件播放。该播放器提供了粉色与蓝色主题切换，并且能够自定义无边框窗口大小。Cupid Music Player 适合追求个性化体验的音乐爱好者，在享受音乐的同时也能获得视觉上的愉悦感。",2,"2026-06-11 03:53:35","CREATED_QUERY"]