Important
- 请å¡å¿ éµå® GNU Affero General Public License (AGPL-3.0) 讞å¯åè®®
- åšæšçä¿®æ¹ãæŒç»ãååææŽŸç项ç®äž,å¿ é¡»åæ ·éçš AGPL-3.0 讞å¯åè®®,å¹¶åšéåœçäœçœ®å 嫿¬é¡¹ç®ç讞å¯åçæä¿¡æ¯
- çŠæ¢çšäºå®åæå ¶ä»åäžçšé,åŠè¥åç°,äœè ä¿ç远究æ³åŸèޣ任çæå©
- è¥åç°æªéµå® AGPL-3.0 讞å¯åè®®çè¡äžº,æ¬é¡¹ç®å°æ°žä¹ åæŽ
- æè°¢æšçå°éäžçè§£
-
æ¬é¡¹ç®éçš Vue 3 å šå®¶æ¡¶å Naïve UI ç»ä»¶åºå Electron åŒå
-
æ¯æçœé¡µç«¯äžå®¢æ·ç«¯,ç±äºè®Ÿå€æé,ç®åä» éé
Win,å ¶ä»å¹³å°å¯èªè¡è§£å³å Œå®¹æ§åè¿è¡æå»º -
ä» å¯¹ç§»åšç«¯åäºåºç¡éé ,äžä¿è¯åèœå šéšå¯çš
请泚æ,æ¬çšåºäžæç®åŒåç§»åšç«¯,ä¹äžäŒå¯¹ç§»åšç«¯è¿è¡å®çŸéé ,ä» ä¿è¯åºç¡å¯çšæ§
-
欢è¿åäœå€§äœ¬
Starð
- âš æ¯ææ«ç ç»åœ
- ð± æ¯æææºå·ç»åœ
- ð èªåšè¿è¡æ¯æ¥çŸå°åäºèŽçŸå°
- ðš å°é¢äž»é¢è²èªéåº
- ð Light / Dark æš¡åŒèªåšåæ¢
- ð æ¬å°ææ²ç®¡çååç±»(建议å äœ¿çš é³ä¹æ çŸ è¿è¡å¹é åå䜿çš)
- ðµ æ¯æææŸéšåæ çæææ²(å¯èœäŒäžåæ²äžå¹é )
æ€åèœå°äŒéæ, å³å°äžçº¿!
- â¬ïž äžèœœææ²(æé«æ¯æ Hi-Res)
- â æ°å»ºæååæåçŒèŸ
- â€ïž æ¶è / åæ¶æ¶èæåæææ
- ð¶ æ¯æ¥æšèææ²
- ð» ç§äºº FM
- âïž äºçé³ä¹äžäŒ
- ð äºçå ææ²ææŸ
- ð äºçå ææ²çº æ£
- ðïž äºçææ²å é€
- ð æ¯æéåæè¯
- ð æè¯æ»åšä»¥åæè¯ç¿»è¯
- ð¹ MV äžè§é¢ææŸ
- ð¶ é³ä¹é¢è°±æŸç€º
- âïž é³ä¹æžå ¥æžåº
- ð æ¯æ PWA
- ð¬ æ¯æè¯è®ºåºåè¯è®ºç¹èµ
- ð æææš¡åŒèªåš / æåšåæ¢
- ð± ç§»åšç«¯åºç¡éé
(åé€) ði18næ¯æ (åé€ãããŸã§)
åŒåäž,ä» äŸåè
䞻页é¢
ææŸé¡µé¢
åç°é¡µé¢
æå页é¢
è¯è®ºé¡µé¢
æ¬å°é³ä¹
请尜éæåææ°åæ¯åäœ¿çšæ¬å°æå»ºæ¹åŒ,åšçº¿éšçœ²çä»åºå¯èœæŽæ°äžåæ¶
Important
项ç®å³å°è¿è¡éæ, éææååæ ééšçœ²UNM-Serverå¹¶å¡«å
¥, èæ¯å
眮åšSPlayeréé¢ (çœæäºAPIä»ç¶éèŠéšçœ²)
-
æ¬çšåºäŸèµ NeteaseCloudMusicApi è¿è¡ä»¥åUNM-Server,è¯·ç¡®ä¿æšå·²æåéšçœ²è¯¥é¡¹ç®,å¹¶æåååŸåšçº¿è®¿é®å°å
-
ç¹å»æ¬ä»åºå³äžè§ç
Fork,å€å¶æ¬ä»åºå°äœ çGitHubèŽŠå· -
å€å¶
/.env.exampleæä»¶å¹¶éåœå䞺/.env -
å°
.envæä»¶äžçRENDERER_VITE_SERVER_URLåVITE_UNM_APIæ¹äžºç¬¬äžæ¥åŸå°ç API å°åRENDERER_VITE_SERVER_URL = "https://api.example.com"; VITE_UNM_API = "https://unm.example.com"
-
å°
Build and Output SettingsäžçOutput Directoryæ¹äžºout/renderer -
ç¹å»
Deploy,å³å¯æåéšçœ²
-
éå€
âïž Vercel éšçœ²äžç 1 - 4 æ¥éª€ -
å éä»åº
å°éŸæ¥äžç example/repository.git æ¿æ¢äžºäœ èŠå éçå®é ä»åºçå°å
git clone https://github.com/example/repository.git
-
å®è£ äŸèµ
pnpm install # æè yarn install # æè npm install
-
çŒè¯æå
pnpm build # æè yarn build # æè npm build
-
å°ç«ç¹è¿è¡ç®åœè®Ÿçœ®äžº
out/rendererç®åœ
-
æ¬å°éšçœ²éèŠçšå°
Node.jsãå¯ååŸ Node.js å®çœ äžèœœå®è£ å ,请äžèœœææ°çš³å®ç -
å®è£ pnpm
npm install pnpm -g
-
å éä»åºå¹¶æåè³æ¬å°,æ€å€äžåèµè¿°
-
䜿çš
pnpm installå®è£ 项ç®äŸèµ(è¥å®è£ è¿çšäžéå°çœç»é误,请䜿çšåœå éåæºæ¿ä»£,æ€å€äžåèµè¿°) -
å€å¶
/.env.exampleæä»¶å¹¶éåœå䞺/.envå¹¶ä¿®æ¹é 眮 -
æå 客æ·ç«¯,è¯·äŸæ®äœ çç³»ç»ç±»åæ¥éæ©,æå æåå,äŒèŸåºå®è£ å æå¯æ§è¡æä»¶åš
/distç®åœäž,å¯èªè¡å®è£åœä»€ ç³»ç»ç±»å pnpm build:winWindows pnpm build:linuxLinux pnpm build:macMacOS
ç¹æ€æè°¢äžºæ¬é¡¹ç®æäŸæ¯æäžçµæç项ç®
- åçSPlayer
- NeteaseCloudMusicApi
- YesPlayMusic
- UnblockNeteaseMusic
- Vue-mmPlayer
- refined-now-playing-netease
- material-color-utilities
æ¬é¡¹ç®éšååèœäœ¿çšäºçœæäºé³ä¹çç¬¬äžæ¹ API æå¡,ä» äŸäžªäººåŠä¹ ç 究䜿çš,çŠæ¢çšäºåäžåéæ³çšé
åæ¶,æ¬é¡¹ç®åŒåè æ¿è¯º äž¥æ Œéµå®çžå ³æ³åŸæ³è§åçœæäºé³ä¹ API 䜿çšåè®®,äžäŒå©çšæ¬é¡¹ç®è¿è¡ä»»äœè¿æ³æŽ»åšã åŠå äœ¿çšæ¬é¡¹ç®èåŒèµ·çä»»äœçº 纷æèޣ任,åç±äœ¿çšè èªè¡æ¿æ ãæ¬é¡¹ç®åŒåè äžæ¿æ ä»»äœå äœ¿çšæ¬é¡¹ç®è富èŽçä»»äœçŽæ¥æéŽæ¥èޣ任,å¹¶ä¿ç远究䜿çšè è¿æ³è¡äžºçæå©
请䜿çšè åšäœ¿çšæ¬é¡¹ç®æ¶éµå®çžå ³æ³åŸæ³è§,äžèŠå°æ¬é¡¹ç®çšäºä»»äœåäžåéæ³çšéãåŠæè¿å,äžååæç±äœ¿çšè èªèŽã åæ¶,䜿çšè åºè¯¥èªè¡æ¿æ å äœ¿çšæ¬é¡¹ç®è垊æ¥çé£é©åèŽ£ä»»ãæ¬é¡¹ç®åŒåè äžå¯¹æ¬é¡¹ç®ææäŸçæå¡åå 容ååºä»»äœä¿è¯
æè°¢æšççè§£
- æ¬é¡¹ç®ä» äŸäžªäººåŠä¹ ç 究䜿çš,çŠæ¢çšäºåäžåéæ³çšé
- æ¬é¡¹ç®åºäº GNU Affero General Public License (AGPL-3.0) 讞å¯è¿è¡åŒæº
- ä¿®æ¹ååå: ä»»äœå¯¹æ¬é¡¹ç®çä¿®æ¹åååéœå¿ é¡»åºäº AGPL-3.0 è¿è¡,æºä»£ç å¿ é¡»äžå¹¶æäŸ
- 掟çäœå: ä»»äœæŽŸçäœåå¿ é¡»åæ ·éçš AGPL-3.0,å¹¶åšéåœçå°æ¹æ³šæåå§é¡¹ç®ç讞å¯è¯
- 泚æåäœè : åšä»»äœä¿®æ¹ã掟çäœåæå ¶ä»ååäž,å¿ é¡»åšéåœçäœçœ®æç¡®æ³šæåäœè åå ¶èŽ¡ç®
- å 莣声æ: æ ¹æ® AGPL-3.0,æ¬é¡¹ç®äžæäŸä»»äœæç€ºææç€ºçæ ä¿ã请诊ç»é 读 GNU Affero General Public License (AGPL-3.0) 以äºè§£å®æŽçå 莣声æå 容
- 瀟åºåäž: 欢è¿ç€Ÿåºçåäžå莡ç®,æä»¬éŒå±åŒåè äžåæ¹è¿åç»Žæ€æ¬é¡¹ç®
- 讞å¯è¯éŸæ¥: 请é 读 GNU Affero General Public License (AGPL-3.0) äºè§£æŽå€è¯Šæ
æ¥çç®åœç»æè¯Šæ
ChatGPT åç,åŠæé误,请è§è°
âââ auto-imports.d.ts # èªåšå¯Œå
¥
âââ components.d.ts # èªåšå¯Œå
¥
âââ docker-compose.yml # Docker Compose
âââ Dockerfile # Docker
âââ electron # Electron
â âââ main # Electron äž»è¿çš
â â âââ index.js # äž»è¿çšå
¥å£
â â âââ mainIpcMain.js # äž»è¿çšäžæž²æè¿çšéä¿¡
â â âââ startMainServer.js # å¯åšäž»è¿çšæå¡åš
â â âââ startNcmServer.js # å¯åšçœæäºé³ä¹æå¡
â â âââ utils # äž»è¿çšå·¥å
·åœæ°
â â âââ checkUpdates.js # æ£æ¥æŽæ°
â â âââ createGlobalShortcut.js # å建å
šå±å¿«æ·é®
â â âââ createSystemTray.js # åå»ºç³»ç»æç
â â âââ getNeteaseMusicUrl.js # è§£ç°
â â âââ kwDES.js # DESå å¯ç®æ³
â â âââ readDirAsync.js # åŒæ¥è¯»åç®åœ
â âââ preload # Electron é¢å èœœèæ¬
â âââ index.js # é¢å èœœèæ¬å
¥å£æä»¶
âââ electron-builder.yml # Electron Builder
âââ electron.vite.config.js # Electron Vite
âââ index.html # äž»é¡µé¢ HTML
âââ LICENSE # 项ç®è®žå¯è¯
âââ nginx.conf # Nginx é
眮
âââ src # é¡¹ç®æºä»£ç
â âââ api # API çžå
³
â â âââ ./..
â âââ App.vue # æ ¹ç»ä»¶
â âââ assets # éæèµæº
â â âââ emoji.json # 衚æ
æ°æ®
â â âââ icon.json # åŸæ æ°æ®
â â âââ themeColor.json # äž»é¢é¢è²æ°æ®
â âââ components # ç»ä»¶ç®åœ
â â âââ Cover # å°é¢çžå
³ç»ä»¶ç®åœ
â â â âââ CoverDropdown.vue # å°é¢äžæç»ä»¶
â â â âââ MainCover.vue # äž»å°é¢ç»ä»¶
â â â âââ SpecialCoverCard.vue # ç¹æ®å°é¢å¡çç»ä»¶
â â â âââ SpecialCover.vue # ç¹æ®å°é¢ç»ä»¶
â â âââ Global # å
šå±ç»ä»¶ç®åœ
â â â âââ MainLayout.vue # äž»åžå±ç»ä»¶
â â â âââ Menu.vue # èåç»ä»¶
â â â âââ Pagination.vue # å页ç»ä»¶
â â â âââ Playlist.vue # æåç»ä»¶
â â â âââ Provider.vue # å
šå±åé
眮ç»ä»¶
â â â âââ SvgIcon.vue # SVG åŸæ ç»ä»¶
â â âââ List # å衚ç»ä»¶ç®åœ
â â â âââ CommentList.vue # è¯è®ºå衚ç»ä»¶
â â â âââ SongListDropdown.vue # ææ²äžæç»ä»¶
â â â âââ SongList.vue # ææ²å衚ç»ä»¶
â â âââ Modal # 匹çªçžå
³ç»ä»¶ç®åœ
â â â âââ AddPlaylist.vue # æ·»å æåç»ä»¶
â â â âââ CloudSongMatch.vue # äºçææ²å¹é
ç»ä»¶
â â â âââ CreatePlaylist.vue # å建æåç»ä»¶
â â â âââ DownloadSong.vue # äžèœœææ²ç»ä»¶
â â â âââ LoginPhone.vue # ææºç»åœç»ä»¶
â â â âââ LoginQRCode.vue # äºç»Žç ç»åœç»ä»¶
â â â âââ Login.vue # ç»åœç»ä»¶
â â â âââ PlaylistUpdate.vue # æåçŒèŸç»ä»¶
â â â âââ UpCloudSong.vue # äžäŒ äºçææ²ç»ä»¶
â â âââ Nav # 富èªçžå
³ç»ä»¶ç®åœ
â â â âââ MainNav.vue # 䞻富èªç»ä»¶
â â â âââ UserData.vue # çšæ·æ°æ®ç»ä»¶
â â âââ Player # ææŸåšçžå
³ç»ä»¶ç®åœ
â â â âââ CountDown.vue # å计æ¶ç»ä»¶
â â â âââ FullPlayer.vue # å
šå±ææŸåšç»ä»¶
â â â âââ Lyric.vue # æè¯ç»ä»¶
â â â âââ MainControl.vue # äž»æ§å¶ç»ä»¶
â â â âââ PlayerControl.vue # ææŸåšæ§å¶ç»ä»¶
â â â âââ PlayerCover.vue # ææŸåšå°é¢ç»ä»¶
â â â âââ PrivateFm.vue # ç§äºº FM ç»ä»¶
â â âââ Search # æçŽ¢çžå
³ç»ä»¶
â â â âââ SearchHot.vue # çéšæçŽ¢ç»ä»¶
â â â âââ SearchInp.vue # æçŽ¢èŸå
¥ç»ä»¶
â â â âââ SearchSuggestions.vue # æçŽ¢å»ºè®®ç»ä»¶
â â âââ WinDom # çªå£ DOM çžå
³ç»ä»¶
â â âââ TitleBar.vue # æ 颿 ç»ä»¶
â âââ main.js # Vue åºçšçå
¥å£æä»¶
â âââ router # Vue Router çžå
³æä»¶å€¹
â â âââ index.js # Vue Router å
¥å£æä»¶
â â âââ routes.js # è·¯ç±é
眮æä»¶
â âââ stores # Vuex Store çžå
³æä»¶å€¹
â â âââ indexedDB.js # IndexedDB æ°æ®åºçžå
³æä»¶
â â âââ index.js # Vuex Store å
¥å£æä»¶
â â âââ musicData.js # é³ä¹æ°æ®çžå
³æä»¶
â â âââ siteData.js # çœç«æ°æ®çžå
³æä»¶
â â âââ siteSettings.js # çœç«è®Ÿçœ®çžå
³æä»¶
â â âââ siteStatus.js # çœç«ç¶æçžå
³æä»¶
â âââ style # æ ·åŒçžå
³æä»¶å€¹
â â âââ animate.scss # åšç»æ ·åŒæä»¶
â â âââ main.scss # äž»æ ·åŒæä»¶
â âââ utils # å·¥å
·åœæ°æä»¶å€¹
â â âââ auth.js # 讀è¯çžå
³åœæ°
â â âââ base64.js # Base64çŒç è§£ç çžå
³åœæ°
â â âââ color-utils.js # é¢è²å·¥å
·åœæ°
â â âââ cover-color.js # å°é¢é¢è²çžå
³åœæ°
â â âââ debounce.js # é²æåœæ°
â â âââ formatData.js # æ°æ®æ ŒåŒååœæ°
â â âââ formRules.js # 衚åéªè¯è§å
â â âââ globalEvents.js # å
šå±äºä»¶å€çåœæ°
â â âââ globalShortcut.js # å
šå±å¿«æ·é®çžå
³åœæ°
â â âââ helper.js # èŸ
å©åœæ°
â â âââ parseLyric.js # è§£ææè¯åœæ°
â â âââ Player.js # ææŸåšæ§å¶çžå
³åœæ°
â â âââ request.js # çœç»è¯·æ±çžå
³åœæ°
â â âââ throttle.js # èæµåœæ°
â â âââ timeTools.js # æ¶éŽå·¥å
·åœæ°
â â âââ userSignIn.js # çšæ·ç»åœçžå
³åœæ°
â âââ views # Vueç»ä»¶æä»¶å€¹
â âââ Artist # èºæ¯å®¶çžå
³ç»ä»¶
â â âââ albums.vue # èºæ¯å®¶äžèŸç»ä»¶
â â âââ hot.vue # èºæ¯å®¶çéšç»ä»¶
â â âââ index.vue # èºæ¯å®¶äž»ç»ä»¶
â â âââ songs.vue # èºæ¯å®¶ææ²ç»ä»¶
â â âââ videos.vue # èºæ¯å®¶è§é¢ç»ä»¶
â âââ Cloud.vue # äºçç»ä»¶
â âââ Comment.vue # è¯è®ºç»ä»¶
â âââ DailySongs.vue # æ¯æ¥æšèç»ä»¶
â âââ Discover # åç°é³ä¹çžå
³ç»ä»¶
â â âââ artists.vue # åç°é³ä¹èºæ¯å®¶ç»ä»¶
â â âââ index.vue # åç°é³ä¹äž»ç»ä»¶
â â âââ new.vue # åç°é³ä¹æ°æç»ä»¶
â â âââ playlists.vue # åç°é³ä¹æåç»ä»¶
â â âââ toplists.vue # åç°é³ä¹æè¡æŠç»ä»¶
â âââ History.vue # åå²è®°åœç»ä»¶
â âââ Home.vue # 䞻页ç»ä»¶
â âââ Like # æå欢ççžå
³ç»ä»¶
â â âââ albums.vue # æå欢çäžèŸç»ä»¶
â â âââ artists.vue # æå欢çèºæ¯å®¶ç»ä»¶
â â âââ index.vue # æå欢çäž»ç»ä»¶
â â âââ playlists.vue # æå欢çæåç»ä»¶
â â âââ videos.vue # æå欢çè§é¢ç»ä»¶
â âââ List # å衚çžå
³ç»ä»¶
â â âââ album.vue # äžèŸç»ä»¶
â â âââ playlist.vue # æåç»ä»¶
â â âââ dj.vue # çµå°ç»ä»¶
â âââ Local # æ¬å°é³ä¹çžå
³ç»ä»¶
â â âââ albums.vue # æ¬å°é³ä¹äžèŸç»ä»¶
â â âââ artists.vue # æ¬å°é³ä¹èºæ¯å®¶ç»ä»¶
â â âââ index.vue # æ¬å°é³ä¹äž»ç»ä»¶
â â âââ songs.vue # æ¬å°é³ä¹ææ²ç»ä»¶
â âââ Player.vue # è§é¢ææŸåšç»ä»¶
â âââ Dj # çµå°çžå
³ç»ä»¶
â â âââ index.vue # çµå°äž»ç»ä»¶
â â âââ type.vue # çµå°åç±»ç»ä»¶
â âââ Search # æçŽ¢çžå
³ç»ä»¶
â â âââ albums.vue # æçŽ¢äžèŸç»ä»¶
â â âââ artists.vue # æçŽ¢èºæ¯å®¶ç»ä»¶
â â âââ index.vue # æçŽ¢äž»ç»ä»¶
â â âââ playlists.vue # æçŽ¢æåç»ä»¶
â â âââ songs.vue # æçŽ¢ææ²ç»ä»¶
â â âââ videos.vue # æçŽ¢è§é¢ç»ä»¶
â â âââ djs.vue # æçŽ¢çµå°ç»ä»¶
â âââ Setting # 讟眮çžå
³ç»ä»¶
â â âââ index.vue # 讟眮䞻ç»ä»¶
â âââ Song.vue
â âââ State
â â âââ 403.vue
â â âââ 404.vue
â â âââ 500.vue
â âââ Test.vue
âââ vercel.json # Vercel éšçœ²é
眮