Top Related Projects
网易云音乐 Node.js API service
一个基于 electron 的音乐软件
Salt Player for Android Release, Feedback
🎧☁️ Modern Music Server and Streamer compatible with Subsonic/Airsonic
🐦 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 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.
🎧☁️ Modern Music Server and Streamer compatible with Subsonic/Airsonic
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 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 for Android Release, Feedback
🎧☁️ Modern Music Server and Streamer compatible with Subsonic/Airsonic
🐦 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