Top Related Projects
网易云音乐 Node.js API service
一个基于 electron 的音乐软件
Salt Player (A local music player trusted and chosen by hundreds of thousands of users) for Android Release, Feedback.
🎧☁️ Your Personal Streaming Service
🐦 A personal music streaming server that works.
Quick Overview
YesPlayMusic is a high-quality third-party NetEase Cloud Music player built with Vue and Electron. It offers a clean, modern interface and supports features like personalized daily recommendations, lyrics display, and desktop lyrics. The project aims to provide a better music listening experience for NetEase Cloud Music users.
Pros
- Beautiful and intuitive user interface
- Cross-platform support (Windows, macOS, Linux)
- Customizable themes and appearance
- Supports Last.fm scrobbling
Cons
- Relies on NetEase Cloud Music's API, which may change or become unavailable
- Limited to NetEase Cloud Music's library and features
- May lack some advanced features found in the official client
- Potential legal concerns due to unofficial API usage
Getting Started
To get started with YesPlayMusic:
-
Clone the repository:
git clone https://github.com/qier222/YesPlayMusic.git
-
Install dependencies:
cd YesPlayMusic npm install
-
Run the development server:
npm run serve
-
Build for production:
npm run build
For desktop app development:
npm run electron:serve
To build the desktop app:
npm run electron:build
Note: You'll need to have Node.js and npm installed on your system before starting.
Competitor Comparisons
网易云音乐 Node.js API service
Pros of NeteaseCloudMusicApi
- More comprehensive API coverage for NetEase Cloud Music
- Regularly updated with new features and bug fixes
- Suitable for developers building various applications and services
Cons of NeteaseCloudMusicApi
- Requires additional frontend development for a complete music player
- May be more complex to set up and use for non-developers
- Lacks a built-in user interface
Code Comparison
NeteaseCloudMusicApi (server-side API):
const { login_cellphone, user_playlist } = require('NeteaseCloudMusicApi')
login_cellphone({
phone: '手机号',
password: '密码'
}).then(result => {
console.log(result)
user_playlist({
uid: result.body.account.id
}).then(data => {
console.log(data)
})
})
YesPlayMusic (client-side application):
<template>
<div class="player">
<Cover :url="currentTrack.al.picUrl" :playing="isPlaying" />
<div class="controls">
<button @click="playPause">{{ isPlaying ? 'Pause' : 'Play' }}</button>
</div>
</div>
</template>
YesPlayMusic is a complete music player application with a user-friendly interface, while NeteaseCloudMusicApi provides a backend API for developers to build custom applications. YesPlayMusic offers a ready-to-use solution for end-users, whereas NeteaseCloudMusicApi requires additional development to create a functional music player.
一个基于 electron 的音乐软件
Pros of lx-music-desktop
- More comprehensive music source options, including multiple platforms
- Advanced features like lyric synchronization and audio output device selection
- Supports both Windows and Linux operating systems
Cons of lx-music-desktop
- Less visually appealing interface compared to YesPlayMusic's modern design
- Potentially more complex user experience due to additional features
- Lacks some of the social features present in YesPlayMusic
Code Comparison
YesPlayMusic (Vue.js):
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
createApp(App).use(store).use(router).mount('#app');
lx-music-desktop (Electron):
const { app, BrowserWindow } = require('electron');
const path = require('path');
function createWindow() {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
});
win.loadFile('index.html');
}
app.whenReady().then(createWindow);
Both projects use different frameworks, with YesPlayMusic utilizing Vue.js for a web-based approach, while lx-music-desktop employs Electron for a desktop application. This fundamental difference affects their architecture and deployment methods.
Salt Player (A local music player trusted and chosen by hundreds of thousands of users) for Android Release, Feedback.
Pros of SaltPlayerSource
- Focuses on local music playback, providing a lightweight solution for users who prefer offline listening
- Offers a clean and minimalist user interface, potentially easier for some users to navigate
- Supports a wider range of audio formats, including lossless formats like FLAC
Cons of SaltPlayerSource
- Lacks integration with online music streaming services, limiting access to a vast library of songs
- Has fewer advanced features compared to YesPlayMusic, such as personalized recommendations or social sharing options
- May have a smaller community and less frequent updates due to its more niche focus
Code Comparison
YesPlayMusic (Vue.js):
<template>
<div class="player">
<div class="cover-image">
<img :src="currentTrack.album.cover" />
</div>
<div class="controls">
<button @click="play">Play</button>
</div>
</div>
</template>
SaltPlayerSource (Kotlin):
class PlayerActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_player)
playButton.setOnClickListener { playMusic() }
}
}
This comparison highlights the different technologies and approaches used in each project, with YesPlayMusic utilizing Vue.js for web-based development and SaltPlayerSource using Kotlin for Android app development.
🎧☁️ Your Personal Streaming Service
Pros of Navidrome
- Self-hosted solution, giving users full control over their music library and data
- Supports a wide range of audio formats, including FLAC and OGG
- Implements the Subsonic API, allowing compatibility with various mobile apps
Cons of Navidrome
- Requires more technical setup and maintenance compared to YesPlayMusic
- May have a steeper learning curve for non-technical users
- Limited built-in social features or music discovery options
Code Comparison
Navidrome (Go):
func (s *Scanner) processMediaFiles(ctx context.Context, dir string, files []string) error {
for _, f := range files {
if err := s.processMediaFile(ctx, f); err != nil {
log.Error(ctx, "Error processing file", "file", f, err)
}
}
return nil
}
YesPlayMusic (Vue.js):
async function getArtist(id) {
const { data } = await artist(id);
return data;
}
async function getArtistAlbums(id) {
const { albums } = await artistAlbum(id);
return albums;
}
Summary
Navidrome is a self-hosted music server with broad format support and Subsonic API compatibility, ideal for users who want full control over their music library. YesPlayMusic, on the other hand, offers a more user-friendly interface with integrated streaming services, making it better suited for casual listeners who prefer a streamlined experience without the need for self-hosting.
🐦 A personal music streaming server that works.
Pros of koel
- More comprehensive backend with user management and playlist features
- Supports multiple audio sources including local files and remote URLs
- Has a mobile-friendly web interface
Cons of koel
- Requires more setup and configuration
- Less focus on integration with external music services
- May have a steeper learning curve for non-technical users
Code Comparison
koel (PHP):
public function getPlaylistById($id)
{
return Playlist::findOrFail($id);
}
YesPlayMusic (JavaScript):
async function getPlaylistDetail(id) {
const { playlist } = await getPlaylistDetail(id);
return playlist;
}
Both projects handle playlist retrieval, but koel uses a more traditional ORM approach with PHP, while YesPlayMusic employs async/await in JavaScript for API calls.
Key Differences
- koel is a self-hosted solution, while YesPlayMusic focuses on integrating with existing music services
- koel offers more advanced features for managing a personal music library
- YesPlayMusic has a more modern, user-friendly interface designed for casual listeners
- koel is built with Laravel (PHP) backend, while YesPlayMusic uses Vue.js for a single-page application approach
Conclusion
Choose koel for a comprehensive self-hosted music solution with advanced library management. Opt for YesPlayMusic if you prefer a simpler setup and integration with popular music streaming services.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
YesPlayMusic
é«é¢å¼ç第ä¸æ¹ç½æäºææ¾å¨
ð 访é®DEMO |
ð¦ï¸ ä¸è½½å®è£
å
|
ð¬ å å
¥äº¤æµç¾¤
å ¨æ°çæ¬
å ¨æ°2.0 Alphaæµè¯çå·²åå¸ï¼æ¬¢è¿åå¾ Releases 页é¢ä¸è½½ã å½åçæ¬å°ä¼è¿å ¥ç»´æ¤æ¨¡å¼ï¼é¤é大bugä¿®å¤å¤ï¼ä¸ä¼åæ´æ°æ°åè½ã
⨠ç¹æ§
- â ä½¿ç¨ Vue.js å ¨å®¶æ¡¶å¼å
- ð´ ç½æäºè´¦å·ç»å½ï¼æ«ç /ææº/é®ç®±ç»å½ï¼
- ðº æ¯æ MV ææ¾
- ð æ¯ææè¯æ¾ç¤º
- ð» æ¯æç§äºº FM / æ¯æ¥æ¨èææ²
- ð«ð¤ æ ä»»ä½ç¤¾äº¤åè½
- ðï¸ æµ·å¤ç¨æ·å¯ç´æ¥ææ¾ï¼éè¦ç»å½ç½æäºè´¦å·ï¼
- ð æ¯æ UnblockNeteaseMusicï¼èªå¨ä½¿ç¨åç±»é³æºæ¿æ¢åç°ææ²é¾æ¥ ï¼ç½é¡µçä¸æ¯æï¼
- ãåç±»é³æºãæé»è®¤å¯ç¨çé³æºã
- YouTube é³æºéèªè¡å®è£
yt-dlp
ã
- âï¸ æ¯æ¥èªå¨ç¾å°ï¼ææºç«¯åçµè端åæ¶ç¾å°ï¼
- ð Light/Dark Mode èªå¨åæ¢
- ð æ¯æ Touch Bar
- ð¥ï¸ æ¯æ PWAï¼å¯å¨ Chrome/Edge éç¹å»å°åæ å³è¾¹ç â å®è£ å°çµè
- ð¥ æ¯æ Last.fm Scrobble
- âï¸ æ¯æé³ä¹äºç
- â¨ï¸ èªå®ä¹å¿«æ·é®åå ¨å±å¿«æ·é®
- ð§ æ¯æ Mpris
- ð æ´å¤ç¹æ§å¼åä¸
ð¦ï¸ å®è£
Electron çæ¬ç± @hawtim å @qier222 éé 并维æ¤ï¼æ¯æ macOSãWindowsãLinuxã
访é®æ¬é¡¹ç®ç Releases 页é¢ä¸è½½å®è£ å ã
-
macOS ç¨æ·å¯ä»¥éè¿ Homebrew æ¥å®è£ ï¼
brew install --cask yesplaymusic
-
Windows ç¨æ·å¯ä»¥éè¿ Scoop æ¥å®è£ ï¼
scoop install extras/yesplaymusic
âï¸ é¨ç½²è³ Vercel
é¤äºä¸è½½å®è£ å 使ç¨ï¼ä½ è¿å¯ä»¥å°æ¬é¡¹ç®é¨ç½²å° Vercel æä½ çæå¡å¨ä¸ãä¸é¢æ¯é¨ç½²å° Vercel çæ¹æ³ã
æ¬é¡¹ç®ç Demo (https://music.qier222.com) å°±æ¯é¨ç½²å¨ Vercel ä¸çç½ç«ã
-
é¨ç½²ç½æäº APIï¼è¯¦æ åè§ Binaryify/NeteaseCloudMusicApi ãä½ ä¹å¯ä»¥å° API é¨ç½²å° Vercelã
-
ç¹å»æ¬ä»åºå³ä¸è§ç Forkï¼å¤å¶æ¬ä»åºå°ä½ ç GitHub è´¦å·ã
-
ç¹å»ä»åºç Add Fileï¼éæ© Create new fileï¼è¾å ¥
vercel.json
ï¼å°ä¸é¢çå 容å¤å¶ç²è´´å°æ件ä¸ï¼å¹¶å°https://your-netease-api.example.com
æ¿æ¢ä¸ºä½ ååé¨ç½²çç½æäº API å°åï¼
{
"rewrites": [
{
"source": "/api/:match*",
"destination": "https://your-netease-api.example.com/:match*"
}
]
}
-
æå¼ Vercel.comï¼ä½¿ç¨ GitHub ç»å½ã
-
ç¹å» Import Git Repository 并éæ©ä½ ååå¤å¶çä»åºå¹¶ç¹å» Importã
-
ç¹å» PERSONAL ACCOUNT æè¾¹ç Selectã
-
ç¹å» Environment Variablesï¼å¡«å Name 为
VUE_APP_NETEASE_API_URL
ï¼Value 为/api
ï¼ç¹å» Addãæåç¹å»åºé¨ç Deploy å°±å¯ä»¥é¨ç½²å° Vercel äºã
âï¸ é¨ç½²å°èªå·±çæå¡å¨
é¤äºé¨ç½²å° Vercelï¼ä½ è¿å¯ä»¥é¨ç½²å°èªå·±çæå¡å¨ä¸
- é¨ç½²ç½æäº APIï¼è¯¦æ åè§ Binaryify/NeteaseCloudMusicApi
- å éæ¬ä»åº
git clone --recursive https://github.com/qier222/YesPlayMusic.git
- å®è£ ä¾èµ
yarn install
-
ï¼å¯éï¼ä½¿ç¨ Nginx åå代ç APIï¼å° API è·¯å¾æ å°ä¸º
/api
ï¼å¦æ API åç½é¡µä¸å¨åä¸ä¸ªååä¸çè¯ï¼è·¨åï¼ï¼ä¼æä¸äº bugã -
å¤å¶
/.env.example
æ件为/.env
ï¼ä¿®æ¹éé¢VUE_APP_NETEASE_API_URL
çå¼ä¸ºç½æäº API å°åãæ¬å°å¼åçè¯å¯ä»¥å¡«å API å°å为http://localhost:3000
ï¼YesPlayMusic å°å为http://localhost:8080
ãå¦æä½ ä½¿ç¨äºåå代ç APIï¼å¯ä»¥å¡«å API å°å为/api
ã
VUE_APP_NETEASE_API_URL=http://localhost:3000
- ç¼è¯æå
yarn run build
- å°
/dist
ç®å½ä¸çæ件ä¸ä¼ å°ä½ ç Web æå¡å¨
âï¸ å®å¡é¢æ¿ dockeråºç¨ååº é¨ç½²
-
å®è£ å®å¡é¢æ¿ï¼åå¾å®å¡é¢æ¿å®ç½ ï¼éæ©æ£å¼ççèæ¬ä¸è½½å®è£ ã
-
å®è£ åç»å½å®å¡é¢æ¿ï¼å¨å·¦ä¾§å¯¼èªæ ä¸ç¹å» Dockerï¼é¦æ¬¡è¿å ¥ä¼æ示å®è£ Dockeræå¡ï¼ç¹å»ç«å³å®è£ ï¼ææ示å®æå®è£
-
å®è£ å®æåå¨åºç¨ååºä¸æ¾å°YesPlayMusicï¼ç¹å»å®è£ ï¼é ç½®ååã端å£çåºæ¬ä¿¡æ¯å³å¯å®æå®è£ ã
-
å®è£ åå¨æµè§å¨è¾å ¥ä¸ä¸æ¥éª¤è®¾ç½®çååå³å¯è®¿é®ã
âï¸ Docker é¨ç½²
- æ建 Docker Image
docker build -t yesplaymusic .
- å¯å¨ Docker Container
docker run -d --name YesPlayMusic -p 80:80 yesplaymusic
- Docker Compose å¯å¨
docker-compose up -d
YesPlayMusic å°å为 http://localhost
âï¸ é¨ç½²è³ Replit
-
æ°å»º Replï¼éæ© Bash 模æ¿
-
å¨ Replit shell ä¸è¿è¡ä»¥ä¸å½ä»¤
bash <(curl -s -L https://raw.githubusercontent.com/qier222/YesPlayMusic/main/install-replit.sh)
-
é¦æ¬¡è¿è¡æååï¼åªéç¹å»ç»¿è²æé®
Run
å³å¯å次è¿è¡ -
ç±äº replit 个人çéå¶å å为 1Gï¼æè²ç为 3Gï¼ï¼æ建è¿ç¨ä¸å¯è½ä¼å¤±è´¥ï¼è¯·å次è¿è¡ä¸è¿°å½ä»¤æè¿è¡ä»¥ä¸å½ä»¤ï¼
cd /home/runner/${REPL_SLUG}/music && yarn install && yarn run build
ð·ââï¸ æå 客æ·ç«¯
å¦æå¨ Release 页é¢æ²¡ææ¾å°éåä½ ç设å¤çå®è£ å çè¯ï¼ä½ å¯ä»¥æ ¹æ®ä¸é¢çæ¥éª¤æ¥æå èªå·±ç客æ·ç«¯ã
-
æå Electron éè¦ç¨å° Node.js å Yarnãå¯åå¾ Node.js å®ç½ ä¸è½½å®è£ å ãå®è£ Node.js åå¯å¨ç»ç«¯éæ§è¡
npm install -g yarn
æ¥å®è£ Yarnã -
使ç¨
git clone --recursive https://github.com/qier222/YesPlayMusic.git
å éæ¬ä»åºå°æ¬å°ã -
使ç¨
yarn install
å®è£ 项ç®ä¾èµã -
å¤å¶
/.env.example
æ件为/.env
ã -
éæ©ä¸åè¡¨æ ¼çå½ä»¤æ¥æå éåçä½ çå®è£ å ï¼æå åºæ¥çæ件å¨
/dist_electron
ç®å½ä¸ãäºè§£æ´å¤ä¿¡æ¯å¯è®¿é® electron-builder ææ¡£
å½ä»¤ | 说æ |
---|---|
yarn electron:build --windows nsis:ia32 | Windows 32 ä½ |
yarn electron:build --windows nsis:arm64 | Windows ARM |
yarn electron:build --linux deb:armv7l | Debian armv7lï¼æ èæ´¾çï¼ |
yarn electron:build --macos dir:arm64 | macOS ARM |
:computer: é ç½®å¼åç¯å¢
æ¬é¡¹ç®ç± NeteaseCloudMusicApi æä¾ APIã
è¿è¡æ¬é¡¹ç®
# å®è£
ä¾èµ
yarn install
# å建æ¬å°ç¯å¢åé
cp .env.example .env
# è¿è¡ï¼ç½é¡µç«¯ï¼
yarn serve
# è¿è¡ï¼electronï¼
yarn electron:serve
æ¬å°è¿è¡ NeteaseCloudMusicApiï¼æè å° API é¨ç½²è³ Vercel
# è¿è¡ API ï¼é»è®¤ 3000 端å£ï¼
yarn netease_api:run
âï¸ Todo
æ¥ç Todo 请访é®æ¬é¡¹ç®ç Projects
欢è¿æ Issue å Pull requestã
ð å¼æºè®¸å¯
æ¬é¡¹ç®ä» ä¾ä¸ªäººå¦ä¹ ç 究使ç¨ï¼ç¦æ¢ç¨äºåä¸åéæ³ç¨éã
åºäº MIT license 许å¯è¿è¡å¼æºã
çµææ¥æº
API æºä»£ç æ¥èª Binaryify/NeteaseCloudMusicApi
ð¼ï¸ æªå¾
Top Related Projects
网易云音乐 Node.js API service
一个基于 electron 的音乐软件
Salt Player (A local music player trusted and chosen by hundreds of thousands of users) for Android Release, Feedback.
🎧☁️ Your Personal Streaming Service
🐦 A personal music streaming server that works.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot