Alger Music Player: Play Grayed-Out NetEase Songs with Desktop Lyrics

7月20日 Published inMusic Players

Alger Music Player is a third-party client designed to provide features the official application lacks—most notably the ability to play restricted or "grayed-out" songs in your NetEase library. It serves as a comprehensive music hub, offering desktop lyrics, local service hosting, high-quality downloads, and remote control. By logging in with your NetEase account, your playlists, favorites, and entire listening history sync seamlessly, ensuring your library remains intact.

The player is compatible with Desktop, Web, Mobile Web, and Android, with an iOS version currently under development. It utilizes a local service architecture rather than relying on public APIs. To restore access to restricted tracks, the backend leverages netease-cloud-music-api and @unblockneteasemusic/server.

Core Features

  • Comprehensive Music Service: Access playlists, MVs, albums, and detailed artist pages.
  • Cross-Platform Search: Find tracks, videos, and albums across both NetEase and Bilibili.
  • Advanced Playback Controls: Includes a sleep timer, remote control, playback speed adjustment, and a built-in equalizer (EQ).
  • High-Fidelity Audio: Stream in high quality or download tracks to your desktop. Users can right-click specific songs or perform batch downloads directly from playlists.
  • NetEase Synchronization: Your account history, liked songs, and curated lists are imported and updated automatically.
  • Immersive Lyric Experience: View lyrics in a dedicated mode by clicking the album art in the bottom-left corner. A detached, floating desktop lyric window is also available.
  • Customizable Interface: Choose between light and dark themes or use "Mini Mode" for a compact footprint.
  • User Convenience: Supports system tray controls, internationalization, and fully customizable keyboard shortcuts accessible via the settings panel.

Tech Stack

The frontend is powered by Vue 3 and TypeScript, with UI components provided by naive-ui and styling handled by Tailwind CSS. The project uses remixicon for iconography, Pinia for state management, and VueUse for utility functions. Development and bundling are managed by Vite and electron-vite, while electron-builder handles desktop packaging. Translations are managed via vue-i18n, and API requests are handled by axios. Data persistence is managed through a combination of electron-store and standard local storage.

Development and Build Instructions

  • Requirements: Node.js version 18 or higher. Begin by running npm install.
  • Desktop Development: Use the command npm run dev.
  • Web Development: First, set up a personal netease-cloud-music-api instance. Copy .env.development.local to the src/renderer directory and update it with your API endpoint. Then, run npm run dev:web.
  • Desktop Build: Execute npm run build:win to generate the Windows installer. The output will be located in the /dist folder.
  • Web Build: Run npm run build. The resulting files will be placed in /out/renderer.

Downloads

Installers are available for Windows (10+), macOS, Linux, and Android (currently in beta). An iOS version is on the roadmap. You can download the latest releases from donate.alger.fun/download or the official GitHub Releases page.

Troubleshooting & FAQ

  • White screen on desktop? This is usually caused by a port conflict. Go to the settings menu and assign a different port number.
  • White screen on Android? This typically indicates an outdated Android version or a server-side outage.
  • Updates: Desktop users will receive a prompt when an update is available, and the web version updates automatically. Android users must download and install updates manually.
  • Audio quality settings: High-resolution options require a NetEase VIP subscription. If you do not have VIP, manually switch the audio source to "GDMusic" in the settings to access higher bitrates for most songs.
  • Incorrect song playing? If the resolver matches a track to the wrong source, manually switch to an alternative source and re-fetch the data.