{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/SvgIcon.vue?a6c1","webpack:///src/components/SvgIcon.vue","webpack:///./src/components/SvgIcon.vue?ce55","webpack:///./src/components/SvgIcon.vue","webpack:///./src/assets/icons/next.svg","webpack:///./src/assets/icons/shuffle.svg","webpack:///./src/assets/icons/previous.svg","webpack:///./src/components/ModalAddTrackToPlaylist.vue?2331","webpack:///./src/assets/icons/mobile.svg","webpack:///./src/assets/icons/more.svg","webpack:///./src/assets/icons/explicit.svg","webpack:///./src/assets/icons/github.svg","webpack:///./src/components/SvgIcon.vue?0542","webpack:///./src/api/playlist.js","webpack:///./src/components/ButtonIcon.vue?6e30","webpack:///src/components/ButtonIcon.vue","webpack:///./src/components/ButtonIcon.vue?9dba","webpack:///./src/components/ButtonIcon.vue","webpack:///./src/assets/icons/volume-half.svg","webpack:///./src/api/auth.js","webpack:///./src/assets/icons/mail.svg","webpack:///./src/store/initLocalStorage.js","webpack:///./src/utils/updateApp.js","webpack:///./src/store/state.js","webpack:///./src/store/mutations.js","webpack:///./src/store/actions.js","webpack:///./src/utils/Player.js","webpack:///./src/store/plugins/localStorage.js","webpack:///./src/store/plugins/sendSettings.js","webpack:///./src/store/index.js","webpack:///./src/components/ContextMenu.vue?adae","webpack:///./src/api/artist.js","webpack:///./src/App.vue?63a4","webpack:///./src/components/ModalAddTrackToPlaylist.vue?09ea","webpack:///src/components/ModalAddTrackToPlaylist.vue","webpack:///./src/components/ModalAddTrackToPlaylist.vue?89d8","webpack:///./src/components/ModalAddTrackToPlaylist.vue","webpack:///./src/components/ModalNewPlaylist.vue?7583","webpack:///src/components/ModalNewPlaylist.vue","webpack:///./src/components/ModalNewPlaylist.vue?468a","webpack:///./src/components/ModalNewPlaylist.vue","webpack:///./src/components/Navbar.vue?298b","webpack:///src/components/Navbar.vue","webpack:///./src/components/Navbar.vue?7ece","webpack:///./src/components/Navbar.vue","webpack:///./src/components/Player.vue?c07b","webpack:///src/components/Player.vue","webpack:///./src/components/Player.vue?8340","webpack:///./src/components/Player.vue","webpack:///./src/components/Toast.vue?aab3","webpack:///src/components/Toast.vue","webpack:///./src/components/Toast.vue?b215","webpack:///./src/components/Toast.vue","webpack:///./src/electron/ipcRenderer.js","webpack:///./src/views/lyrics.vue?6147","webpack:///./src/utils/lyrics.js","webpack:///src/views/lyrics.vue","webpack:///./src/views/lyrics.vue?da3c","webpack:///./src/views/lyrics.vue","webpack:///src/App.vue","webpack:///./src/App.vue?382d","webpack:///./src/App.vue","webpack:///./src/router/index.js","webpack:///./src/locale/lang/en.js","webpack:///./src/locale/lang/zh-CN.js","webpack:///./src/locale/lang/tr.js","webpack:///./src/locale/index.js","webpack:///./src/assets/icons/index.js","webpack:///./src/utils/filters.js","webpack:///./src/registerServiceWorker.js","webpack:///./src/main.js","webpack:///./src/App.vue?595f","webpack:///./src/utils/auth.js","webpack:///./src/assets/icons/pause.svg","webpack:///./src/components/ContextMenu.vue?9f94","webpack:///src/components/ContextMenu.vue","webpack:///./src/components/ContextMenu.vue?c445","webpack:///./src/components/ContextMenu.vue","webpack:///./src/assets/icons/logout.svg","webpack:///./src/assets/icons/volume-mute.svg","webpack:///./src/components/Modal.vue?7a92","webpack:///src/components/Modal.vue","webpack:///./src/components/Modal.vue?9727","webpack:///./src/components/Modal.vue","webpack:///./src/assets/icons/x.svg","webpack:///./src/api/lastfm.js","webpack:///./src/views/lyrics.vue?0249","webpack:///./src/assets/icons/heart.svg","webpack:///./src/assets/icons/expand.svg","webpack:///./src/assets/icons/volume.svg","webpack:///./src/assets/icons/settings.svg","webpack:///./src/assets/icons/lock.svg","webpack:///./src/assets/icons/fm.svg","webpack:///./src/assets/icons/list.svg","webpack:///./src/assets/icons/thumbs-down.svg","webpack:///./src/components/Navbar.vue?b258","webpack:///./src/components/Toast.vue?974f","webpack:///./src/assets/icons/arrow-up.svg","webpack:///./src/assets/icons/lyrics.svg","webpack:///./src/assets/icons/arrow-left.svg","webpack:///./src/assets/icons/circle.svg","webpack:///./src/assets/icons sync \\.svg$","webpack:///./src/utils/request.js","webpack:///./src/components/Player.vue?f9c9","webpack:///./src/assets/icons/heart-solid.svg","webpack:///./src/assets/icons/repeat.svg","webpack:///./src/api/user.js","webpack:///./src/assets/icons/arrow-down.svg","webpack:///./src/assets/icons/login.svg","webpack:///./src/assets/icons/arrow-right.svg","webpack:///./src/utils/common.js","webpack:///./src/components/ButtonIcon.vue?2a77","webpack:///./src/assets/icons/search.svg","webpack:///./src/components/ModalNewPlaylist.vue?a3b9","webpack:///./src/utils/staticData.js","webpack:///./src/assets/icons/play.svg","webpack:///./src/api/others.js","webpack:///./src/utils/db.js","webpack:///./src/api/album.js","webpack:///./src/components/Modal.vue?27f2","webpack:///./src/assets/icons/plus.svg","webpack:///./src/assets/icons/translation.svg","webpack:///./src/assets/icons/repeat-1.svg","webpack:///./src/api/track.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","class","svgClass","attrs","iconName","staticRenderFns","props","iconClass","String","required","className","default","computed","component","symbol","add","recommendPlaylist","params","url","method","getPlaylistDetail","id","noCache","timestamp","Date","getTime","playlist","tracks","mapTrackPlayableStatus","privileges","highQualityPlaylist","topPlaylist","toplists","subscribePlaylist","deletePlaylist","createPlaylist","addOrRemoveTrackFromPlaylist","dailyRecommendTracks","dailySongs","staticClass","_t","loginWithPhone","loginWithEmail","refreshCookie","logout","localStorage","player","settings","playlistCategories","lang","appearance","musicQuality","lyricFontSize","outputDevice","showPlaylistsByAppleMusic","showUnavailableSongInGreyStyle","automaticallyCacheSongs","nyancatStyle","showLyricsTranslation","showLyricsDynamicBackground","minimizeToTray","enableDiscordRichPresence","enableGlobalShortcut","user","likedSongPlaylistID","lastRefreshCookieDate","loginMode","process","IS_ELECTRON","updateSetting","parsedSettings","JSON","parse","getItem","initLocalStorage","setItem","stringify","updateData","parsedData","updatePlayer","appVersion","_repeatMode","_shuffle","_list","_current","_playlistSource","_volume","_volumeBeforeMuted","_currentTrack","_playNextList","_enabled","_shuffledList","_shuffledCurrent","removeOldStuff","indexedDB","deleteDatabase","pkg","version","updateApp","showLyrics","liked","songs","contextMenu","clickObjectID","showMenu","toast","show","text","timer","modals","addTrackToPlaylistModal","selectedTrackID","newPlaylistModal","afterCreateAddTrackID","dailyTracks","lastfm","updateLikedSongs","state","trackIDs","sendSelfToIpcMain","changeLang","changeMusicQuality","changeLyricFontSize","changeOutputDevice","deviceId","updateSettings","togglePlaylistCategory","cat","find","enable","map","updateToast","updateModal","modalName","toggleLyrics","updateDailyTracks","updateLastfm","session","showToast","commit","electron","require","ipcRenderer","_playing","_isPersonalFM","_personalFMTrack","_personalFMNextTrack","_howler","_init","includes","warn","shuffle","_shuffleTheList","volume","Howler","list","current","autoUnlock","usingWebAudio","_loadSelfFromLocalStorage","_replaceCurrentTrack","seek","setInterval","_initMediaSession","personalFM","trackID","repeatMode","firstTrackID","filter","tid","unshift","track","time","complete","trackDuration","dt","scrobble","sourceid","playlistSource","store","trackScrobble","artist","ar","album","al","trackNumber","no","duration","source","autoplay","unload","Howl","html5","format","play","title","setOutputDevice","once","_nextTrackCallback","getTrackSource","URL","createObjectURL","Blob","isAccountLoggedIn","getMP3","freeTrialInfo","replace","cacheTrackSource","br","sendSync","_getAudioSourceFromCache","_getAudioSourceFromNetease","_getAudioSourceFromUnblockMusic","ifUnplayableThen","_scrobble","currentTrack","getTrackDetail","_updateMediaSessionMetaData","_getAudioSource","_playAudioSource","_cacheNextTrack","dispatch","playNextTrack","playPrevTrack","nextTrack","_getNextTrack","entries","navigator","mediaSession","setActionHandler","pause","seekTime","_updateMediaSessionPositionState","seekOffset","artists","a","metadata","MediaMetadata","join","artwork","picUrl","sizes","setPositionState","playbackRate","position","copyTrack","send","_getListAndCurrent","append","isFM","_loadPersonalFMNextTrack","index","stop","_getPrevTrack","_pauseDiscordPresence","playing","_playDiscordPresence","trackUpdateNowPlaying","_sounds","_node","setSinkId","playlistSourceID","playlistSourceType","autoPlayTrackID","indexOf","getAlbum","replacePlaylist","trackIds","getArtist","hotSongs","listName","findIndex","playNow","playOrPause","fmTrash","likedCurrentTrack","subscribe","mutation","getSendSettingsPlugin","Vue","use","Vuex","plugins","saveToLocalStorage","sendSettings","options","mutations","actions","Store","defaultLang","langMapper","Map","set","language","changeAppearance","matchMedia","addEventListener","Player","Proxy","prop","val","saveSelfToLocalStorage","getArtistAlbum","toplistOfArtists","artistMv","followAArtist","similarArtists","directives","rawName","expression","ref","$store","$route","meta","_e","keepAlive","close","slot","on","newPlaylist","_v","_l","$event","addTrackToPlaylist","_f","coverImgUrl","_s","trackCount","components","Modal","playlists","ownPlaylists","created","getUserPlaylists","methods","limit","uid","userId","op","pid","playlistID","body","domProps","composing","Array","isArray","privatePlaylist","_i","$$a","$$el","$$c","checked","$$v","$$i","concat","resetAfterCreateAddTrackID","private","windowMinimize","windowIsMaximized","windowMaxRestore","windowClose","nativeOn","go","active","$t","inputFocus","_k","keyCode","doSearch","keywords","avatarUrl","showUserProfileMenu","toSettings","isLooseLoggedIn","toLogin","toGitHub","win","remote","BrowserWindow","getFocusedWindow","ButtonIcon","ContextMenu","langs","isMaximized","where","$router","$refs","userProfileMenu","openMenu","confirm","open","minimize","restore","maximize","nyancat","stopPropagation","progressMax","formatTrackTime","setSeek","model","callback","progress","goToAlbum","audioSource","goToList","goToArtist","likeCurrentSong","isPersonalFM","previous","moveToFMTrash","next","disabled","goToNextTracksPage","repeat","mute","staticStyle","VueSlider","interval","mounted","max","isCurrentTrackLiked","getValue","setProgress","like","newLikeSongs","path","vueInstance","self","platform","navbar","searchInput","focus","log","noLyric","style","backgroundImage","imageUrl","playerRef","line","highlight","highlightLyricIndex","clickLyricLine","formatLine","lyricParser","lrc","lyric","parseLyric","tlyric","lyricuser","lyricUser","transuser","transUser","lyrics","split","lrcObj","decodeURIComponent","timeReg","timeRegExpArr","match","content","k","h","min","Number","sec","ms","rawTime","lyricsInterval","$parent","lyricWithTranslation","lyricFiltered","forEach","sameTimeTLyric","lyricItem","contents","tLyricContent","ret","fontSize","getLyric","destroyed","clearInterval","getSelection","toString","setLyricsInterval","oldHighlightLyricIndex","el","watch","Navbar","Toast","ModalAddTrackToPlaylist","ModalNewPlaylist","Lyrics","isElectron","showPlayer","enablePlayer","showNavbar","handleKeydown","tagName","preventDefault","NProgress","configure","showSpinner","trickleSpeed","VueRouter","routes","requireLogin","router","scrollBehavior","to","from","savedPosition","x","y","originalPush","location","catch","beforeEach","afterEach","matched","some","record","start","common","nav","home","explore","library","search","github","footer","recommendArtist","newAlbum","seeMore","charts","sLibrary","likedSongs","sLikedSongs","albums","mvs","newPlayList","loadMore","latestRelease","popularSongs","showMore","showLess","EPsSingles","withAlbums","videos","following","follow","released","updatedAt","login","accessToAll","loginText","readonly","usernameLogin","searchHolder","enterTip","choose","countryCode","phone","email","password","notice","noticeElectron","mv","moreVideo","nowPlaying","nextUp","repeatTrack","modal","song","noResult","searchFor","low","medium","high","lossless","small","large","xlarge","deviceSelector","permissionRequired","auto","light","dark","clearSongsCache","cacheCount","showGitHubIcon","playNext","saveToMyLikedSongs","removeFromMyLikedSongs","savedToMyLikedSongs","removedFromMyLikedSongs","removeFromMyLikedMüzikler","VueI18n","i18n","locale","messages","en","zhCN","tr","silentTranslationWarn","SvgIcon","requireAll","requireContext","keys","req","Milliseconds","dayjs","extend","relativeTime","hours","mins","minutes","seconds","padStart","hoursUnit","minitesUnit","size","imgUrl","httpsImgUrl","count","Math","floor","register","ready","registered","cached","updatefound","updated","offline","VueAnalytics","config","productionTip","VUE_APP_ENABLE_SENTRY","Sentry","dsn","integrations","VueIntegration","tracing","Integrations","BrowserTracing","tracesSampleRate","dailyTask","App","$mount","doLogout","Cookies","isUsernameLoggedIn","setCookies","string","cookies","cookie","top","left","closeMenu","setMenu","largestHeight","largestWidth","$nextTick","clickOutside","Boolean","Function","showFooter","width","clickOutsideHide","modalStyles","apiKey","VUE_APP_LASTFM_API_KEY","apiSharedSecret","VUE_APP_LASTFM_API_SHARED_SECRET","baseUrl","origin","sign","sortParamsKeys","sort","sortedParams","reduce","acc","signature","md5","auth","authGetSession","token","axios","api_key","api_sig","sk","webpackContext","webpackContextResolve","baseURL","VUE_APP_ELECTRON_API_URL","service","withCredentials","interceptors","response","res","errMsg","userDetail","userAccount","userPlaylist","userLikedSongsIDs","dailySignin","likedAlbums","likedArtists","likedMVs","isTrackPlayable","playable","reason","privilege","cs","fee","vipType","noCopyrightRcmd","st","item","assign","randomNum","minNum","maxNum","arguments","parseInt","random","throttle","fn","isRun","lastDate","date","matches","querySelector","splitSoundtrackAlbumTitle","keyword","subtitle","splitAlbumTitle","bytesToSize","bytes","marker","decimal","kiloBytes","megaBytes","gigaBytes","toFixed","byAppleMusic","bigCat","db","Dexie","trackInfo","bitRate","responseType","trackSources","put","debug","countDBSize","trackSizes","each","byteLength","s1","s2","clearDB","tables","table","clear","stores","newAlbums","albumDynamicDetail","likeAAlbum","ids","likeATrack"],"mappings":"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AQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,OACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,MACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,MACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,MACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,MACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,OACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,MACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwmB,OAAQ,MAEV,CACE/wB,KAAM,KACNuK,QAAQ,EACRwm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","file":"js/index.375ea1a9.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"index\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-13d354b9\":\"73fa0959\",\"chunk-2ef9cd30\":\"a8dfa3b4\",\"chunk-35393fa8\":\"610e531d\",\"chunk-3aefd81f\":\"55b1ce5d\",\"chunk-3be54ae2\":\"1839bad8\",\"chunk-3c713cef\":\"24762b4e\",\"chunk-3fbdf7e6\":\"ed851d10\",\"chunk-4034ae0c\":\"b57af774\",\"chunk-40548718\":\"3c003179\",\"chunk-5647e7d7\":\"dbe593fa\",\"chunk-69ff310d\":\"b1802860\",\"chunk-6cfe0a72\":\"ddd7ab9c\",\"chunk-6fbcab9c\":\"a78d0328\",\"chunk-a3a08482\":\"9cb936c4\",\"chunk-aea5fbca\":\"3aed370f\",\"chunk-c58286d8\":\"2f8773ff\",\"chunk-d836364e\":\"3696b65c\",\"chunk-df053456\":\"73453a41\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-13d354b9\":1,\"chunk-2ef9cd30\":1,\"chunk-35393fa8\":1,\"chunk-3aefd81f\":1,\"chunk-3be54ae2\":1,\"chunk-3c713cef\":1,\"chunk-3fbdf7e6\":1,\"chunk-4034ae0c\":1,\"chunk-40548718\":1,\"chunk-5647e7d7\":1,\"chunk-69ff310d\":1,\"chunk-6cfe0a72\":1,\"chunk-6fbcab9c\":1,\"chunk-a3a08482\":1,\"chunk-aea5fbca\":1,\"chunk-c58286d8\":1,\"chunk-d836364e\":1,\"chunk-df053456\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-13d354b9\":\"3645394e\",\"chunk-2ef9cd30\":\"33970385\",\"chunk-35393fa8\":\"27235750\",\"chunk-3aefd81f\":\"e0939b94\",\"chunk-3be54ae2\":\"4c7baff3\",\"chunk-3c713cef\":\"a8f99d71\",\"chunk-3fbdf7e6\":\"8325bd12\",\"chunk-4034ae0c\":\"944acd24\",\"chunk-40548718\":\"8829c628\",\"chunk-5647e7d7\":\"babd9435\",\"chunk-69ff310d\":\"e0326e71\",\"chunk-6cfe0a72\":\"a561ed3d\",\"chunk-6fbcab9c\":\"a9f8bf2f\",\"chunk-a3a08482\":\"5c498acc\",\"chunk-aea5fbca\":\"a207133a\",\"chunk-c58286d8\":\"8aafe304\",\"chunk-d836364e\":\"9574906e\",\"chunk-df053456\":\"e1de9f9a\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{class:_vm.svgClass,attrs:{\"aria-hidden\":\"true\"}},[_c('use',{attrs:{\"xlink:href\":_vm.iconName}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SvgIcon.vue?vue&type=template&id=3a98b3eb&scoped=true&\"\nimport script from \"./SvgIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./SvgIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SvgIcon.vue?vue&type=style&index=0&id=3a98b3eb&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3a98b3eb\",\n null\n \n)\n\nexport default component.exports","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-next\",\n \"use\": \"icon-next-usage\",\n \"viewBox\": \"0 0 448 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-shuffle\",\n \"use\": \"icon-shuffle-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-previous\",\n \"use\": \"icon-previous-usage\",\n \"viewBox\": \"0 0 448 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalAddTrackToPlaylist.vue?vue&type=style&index=0&id=3ad5b03c&lang=scss&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-mobile\",\n \"use\": \"icon-mobile-usage\",\n \"viewBox\": \"0 0 320 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-more\",\n \"use\": \"icon-more-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-explicit\",\n \"use\": \"icon-explicit-usage\",\n \"viewBox\": \"0 0 24 24\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-github\",\n \"use\": \"icon-github-usage\",\n \"viewBox\": \"0 0 496 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--5-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--5-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--5-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgIcon.vue?vue&type=style&index=0&id=3a98b3eb&scoped=true&lang=css&\"","import request from \"@/utils/request\";\nimport { mapTrackPlayableStatus } from \"@/utils/common\";\n\n/**\n * 推荐歌单\n * 说明 : 调用此接口 , 可获取推荐歌单\n * - limit: 取出数量 , 默认为 30 (不支持 offset)\n * - 调用例子 : /personalized?limit=1\n * @param {Object} params\n * @param {number=} params.limit\n */\nexport function recommendPlaylist(params) {\n return request({\n url: \"/personalized\",\n method: \"get\",\n params,\n });\n}\n/**\n * 获取每日推荐歌单\n * 说明 : 调用此接口 , 可获得每日推荐歌单 ( 需要登录 )\n * @param {Object} params\n * @param {number=} params.limit\n */\nexport function dailyRecommendPlaylist(params) {\n return request({\n url: \"/recommend/resource\",\n method: \"get\",\n params,\n });\n}\n/**\n * 获取歌单详情\n * 说明 : 歌单能看到歌单名字, 但看不到具体歌单内容 , 调用此接口 , 传入歌单 id, 可以获取对应歌单内的所有的音乐(未登录状态只能获取不完整的歌单,登录后是完整的),\n * 但是返回的trackIds是完整的,tracks 则是不完整的,可拿全部 trackIds 请求一次 song/detail 接口\n * 获取所有歌曲的详情 (https://github.com/Binaryify/NeteaseCloudMusicApi/issues/452)\n * - id : 歌单 id\n * - s : 歌单最近的 s 个收藏者, 默认为8\n * @param {number} id\n * @param {boolean=} noCache\n */\nexport function getPlaylistDetail(id, noCache = false) {\n let params = { id };\n if (noCache) params.timestamp = new Date().getTime();\n return request({\n url: \"/playlist/detail\",\n method: \"get\",\n params,\n }).then((data) => {\n data.playlist.tracks = mapTrackPlayableStatus(\n data.playlist.tracks,\n data.privileges || []\n );\n return data;\n });\n}\n/**\n * 获取精品歌单\n * 说明 : 调用此接口 , 可获取精品歌单\n * - cat: tag, 比如 \" 华语 \"、\" 古风 \" 、\" 欧美 \"、\" 流行 \", 默认为 \"全部\", 可从精品歌单标签列表接口获取(/playlist/highquality/tags)\n * - limit: 取出歌单数量 , 默认为 20\n * - before: 分页参数,取上一页最后一个歌单的 updateTime 获取下一页数据\n * @param {Object} params\n * @param {string} params.cat\n * @param {number=} params.limit\n * @param {number} params.before\n */\nexport function highQualityPlaylist(params) {\n return request({\n url: \"/top/playlist/highquality\",\n method: \"get\",\n params,\n });\n}\n\n/**\n * 歌单 ( 网友精选碟 )\n * 说明 : 调用此接口 , 可获取网友精选碟歌单\n * - order: 可选值为 'new' 和 'hot', 分别对应最新和最热 , 默认为 'hot'\n * - cat: tag, 比如 \" 华语 \"、\" 古风 \" 、\" 欧美 \"、\" 流行 \", 默认为 \"全部\",可从歌单分类接口获取(/playlist/catlist)\n * - limit: 取出歌单数量 , 默认为 50\n * @param {Object} params\n * @param {string} params.order\n * @param {string} params.cat\n * @param {number=} params.limit\n */\nexport function topPlaylist(params) {\n return request({\n url: \"/top/playlist\",\n method: \"get\",\n params,\n });\n}\n\n/**\n * 歌单分类\n * 说明 : 调用此接口,可获取歌单分类,包含 category 信息\n */\nexport function playlistCatlist() {\n return request({\n url: \"/playlist/catlist\",\n method: \"get\",\n });\n}\n\n/**\n * 所有榜单\n * 说明 : 调用此接口,可获取所有榜单 接口地址 : /toplist\n */\nexport function toplists() {\n return request({\n url: \"/toplist\",\n method: \"get\",\n });\n}\n\n/**\n * 收藏/取消收藏歌单\n * 说明 : 调用此接口, 传入类型和歌单 id 可收藏歌单或者取消收藏歌单\n * - t : 类型,1:收藏,2:取消收藏\n * - id : 歌单 id\n * @param {Object} params\n * @param {number} params.t\n * @param {number} params.id\n */\nexport function subscribePlaylist(params) {\n params.timestamp = new Date().getTime();\n return request({\n url: \"/playlist/subscribe\",\n method: \"post\",\n params,\n });\n}\n\n/**\n * 删除歌单\n * 说明 : 调用此接口 , 传入歌单id可删除歌单\n * - id : 歌单id,可多个,用逗号隔开\n * * @param {number} id\n */\nexport function deletePlaylist(id) {\n return request({\n url: \"/playlist/delete\",\n method: \"post\",\n params: { id },\n });\n}\n\n/**\n * 新建歌单\n * 说明 : 调用此接口 , 传入歌单名字可新建歌单\n * - name : 歌单名\n * - privacy : 是否设置为隐私歌单,默认否,传'10'则设置成隐私歌单\n * - type : 歌单类型,默认'NORMAL',传 'VIDEO'则为视频歌单\n * @param {Object} params\n * @param {string} params.name\n * @param {number} params.privacy\n * @param {string} params.type\n */\nexport function createPlaylist(params) {\n params.timestamp = new Date().getTime();\n return request({\n url: \"/playlist/create\",\n method: \"post\",\n params,\n });\n}\n\n/**\n * 对歌单添加或删除歌曲\n * 说明 : 调用此接口 , 可以添加歌曲到歌单或者从歌单删除某首歌曲 ( 需要登录 )\n * - op: 从歌单增加单曲为 add, 删除为 del\n * - pid: 歌单 id tracks: 歌曲 id,可多个,用逗号隔开\n * @param {Object} params\n * @param {string} params.op\n * @param {string} params.pid\n */\nexport function addOrRemoveTrackFromPlaylist(params) {\n params.timestamp = new Date().getTime();\n return request({\n url: \"/playlist/tracks\",\n method: \"post\",\n params,\n });\n}\n\n/**\n * 每日推荐歌曲\n * 说明 : 调用此接口 , 可获得每日推荐歌曲 ( 需要登录 )\n * @param {Object} params\n * @param {string} params.op\n * @param {string} params.pid\n */\nexport function dailyRecommendTracks() {\n return request({\n url: \"/recommend/songs\",\n method: \"post\",\n params: { timestamp: new Date().getTime() },\n }).then((result) => {\n result.data.dailySongs = mapTrackPlayableStatus(\n result.data.dailySongs,\n result.data.privileges\n );\n return result;\n });\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"button-icon\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ButtonIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ButtonIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ButtonIcon.vue?vue&type=template&id=7ceaf348&scoped=true&\"\nimport script from \"./ButtonIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./ButtonIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ButtonIcon.vue?vue&type=style&index=0&id=7ceaf348&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7ceaf348\",\n null\n \n)\n\nexport default component.exports","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-volume-half\",\n \"use\": \"icon-volume-half-usage\",\n \"viewBox\": \"0 0 384 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import request from \"@/utils/request\";\n\n/**\n * 手机登录\n * - phone: 手机号码\n * - password: 密码\n * - countrycode: 国家码,用于国外手机号登录,例如美国传入:1\n * - md5_password: md5加密后的密码,传入后 password 将失效\n * @param {Object} params\n * @param {string} params.phone\n * @param {string} params.password\n * @param {string=} params.countrycode\n * @param {string=} params.md5_password\n */\nexport function loginWithPhone(params) {\n return request({\n url: \"/login/cellphone\",\n method: \"post\",\n params,\n });\n}\n/**\n * 邮箱登录\n * - email: 163 网易邮箱\n * - password: 密码\n * - md5_password: md5加密后的密码,传入后 password 将失效\n * @param {Object} params\n * @param {string} params.email\n * @param {string} params.password\n * @param {string=} params.md5_password\n */\nexport function loginWithEmail(params) {\n return request({\n url: \"/login\",\n method: \"post\",\n params,\n });\n}\n\n/**\n * 刷新登录\n * 说明 : 调用此接口 , 可刷新登录状态\n * - 调用例子 : /login/refresh\n */\nexport function refreshCookie() {\n return request({\n url: \"/login/refresh\",\n method: \"post\",\n });\n}\n\n/**\n * 退出登录\n * 说明 : 调用此接口 , 可退出登录\n */\nexport function logout() {\n return request({\n url: \"/logout\",\n method: \"post\",\n });\n}\n","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-mail\",\n \"use\": \"icon-mail-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import { playlistCategories } from \"@/utils/staticData\";\n\nlet localStorage = {\n player: {},\n settings: {\n playlistCategories,\n lang: null,\n appearance: \"auto\",\n musicQuality: 320000,\n lyricFontSize: 28,\n outputDevice: \"default\",\n showPlaylistsByAppleMusic: true,\n showUnavailableSongInGreyStyle: true,\n automaticallyCacheSongs: false,\n nyancatStyle: false,\n showLyricsTranslation: true,\n showLyricsDynamicBackground: false,\n minimizeToTray: false,\n enableDiscordRichPresence: false,\n enableGlobalShortcut: true,\n },\n data: {\n user: {},\n likedSongPlaylistID: 0,\n lastRefreshCookieDate: 0,\n loginMode: null,\n },\n};\n\nif (process.env.IS_ELECTRON === true) {\n localStorage.settings.automaticallyCacheSongs = true;\n localStorage.settings.showUnavailableSongInGreyStyle = false;\n}\n\nexport default localStorage;\n","import initLocalStorage from \"@/store/initLocalStorage.js\";\nimport pkg from \"../../package.json\";\n\nconst updateSetting = () => {\n const parsedSettings = JSON.parse(localStorage.getItem(\"settings\"));\n const {\n playlistCategories,\n showUnavailableSongInGreyStyle,\n automaticallyCacheSongs,\n nyancatStyle,\n showLyricsTranslation,\n minimizeToTray,\n } = initLocalStorage.settings;\n const settings = {\n playlistCategories,\n showUnavailableSongInGreyStyle,\n automaticallyCacheSongs,\n nyancatStyle,\n showLyricsTranslation,\n minimizeToTray,\n ...parsedSettings,\n };\n\n localStorage.setItem(\"settings\", JSON.stringify(settings));\n};\n\nconst updateData = () => {\n const parsedData = JSON.parse(localStorage.getItem(\"data\"));\n const data = {\n ...parsedData,\n };\n localStorage.setItem(\"data\", JSON.stringify(data));\n};\n\nconst updatePlayer = () => {\n let parsedData = JSON.parse(localStorage.getItem(\"player\"));\n let appVersion = localStorage.getItem(\"appVersion\");\n if (appVersion === `\"0.2.5\"`) parsedData = {}; // 0.2.6版本重构了player\n const data = {\n _repeatMode: \"off\",\n _shuffle: false,\n _list: [],\n _current: 0,\n _playlistSource: {},\n _volume: 1,\n _volumeBeforeMuted: 1,\n _currentTrack: {},\n _playNextList: [],\n _enabled: false,\n _shuffledList: [],\n _shuffledCurrent: 0,\n ...parsedData,\n };\n localStorage.setItem(\"player\", JSON.stringify(data));\n};\n\nconst removeOldStuff = () => {\n // remove old indexedDB databases created by localforage\n indexedDB.deleteDatabase(\"tracks\");\n};\n\nexport default function () {\n updateSetting();\n updateData();\n updatePlayer();\n removeOldStuff();\n localStorage.setItem(\"appVersion\", JSON.stringify(pkg.version));\n}\n","import initLocalStorage from \"./initLocalStorage\";\nimport pkg from \"../../package.json\";\nimport updateApp from \"@/utils/updateApp\";\n\nif (localStorage.getItem(\"appVersion\") === null) {\n localStorage.setItem(\"settings\", JSON.stringify(initLocalStorage.settings));\n localStorage.setItem(\"data\", JSON.stringify(initLocalStorage.data));\n localStorage.setItem(\"appVersion\", pkg.version);\n}\n\nupdateApp();\n\nexport default {\n showLyrics: false,\n liked: {\n songs: [],\n },\n contextMenu: {\n clickObjectID: 0,\n showMenu: false,\n },\n toast: {\n show: false,\n text: \"\",\n timer: null,\n },\n modals: {\n addTrackToPlaylistModal: {\n show: false,\n selectedTrackID: 0,\n },\n newPlaylistModal: {\n show: false,\n afterCreateAddTrackID: 0,\n },\n },\n dailyTracks: [],\n lastfm: JSON.parse(localStorage.getItem(\"lastfm\")) || {},\n player: JSON.parse(localStorage.getItem(\"player\")),\n settings: JSON.parse(localStorage.getItem(\"settings\")),\n data: JSON.parse(localStorage.getItem(\"data\")),\n};\n","export default {\n updateLikedSongs(state, trackIDs) {\n state.liked.songs = trackIDs;\n state.player.sendSelfToIpcMain();\n },\n changeLang(state, lang) {\n state.settings.lang = lang;\n },\n changeMusicQuality(state, value) {\n state.settings.musicQuality = value;\n },\n changeLyricFontSize(state, value) {\n state.settings.lyricFontSize = value;\n },\n changeOutputDevice(state, deviceId) {\n state.settings.outputDevice = deviceId;\n },\n updateSettings(state, { key, value }) {\n state.settings[key] = value;\n },\n updateData(state, { key, value }) {\n state.data[key] = value;\n },\n togglePlaylistCategory(state, name) {\n let cat = state.settings.playlistCategories.find((c) => c.name === name);\n cat.enable = !cat.enable;\n state.settings.playlistCategories = state.settings.playlistCategories.map(\n (c) => {\n if (c.name === name) {\n return cat;\n }\n return c;\n }\n );\n },\n updateToast(state, toast) {\n state.toast = toast;\n },\n updateModal(state, { modalName, key, value }) {\n state.modals[modalName][key] = value;\n },\n toggleLyrics(state) {\n state.showLyrics = !state.showLyrics;\n },\n updateDailyTracks(state, dailyTracks) {\n state.dailyTracks = dailyTracks;\n },\n updateLastfm(state, session) {\n state.lastfm = session;\n },\n};\n","export default {\n showToast({ state, commit }, text) {\n if (state.toast.timer !== null) {\n clearTimeout(state.toast.timer);\n commit(\"updateToast\", { show: false, text: \"\", timer: null });\n }\n commit(\"updateToast\", {\n show: true,\n text,\n timer: setTimeout(() => {\n commit(\"updateToast\", {\n show: false,\n text: state.toast.text,\n timer: null,\n });\n }, 3200),\n });\n },\n};\n","import { getTrackDetail, scrobble, getMP3 } from \"@/api/track\";\nimport { shuffle } from \"lodash\";\nimport { Howler, Howl } from \"howler\";\nimport { cacheTrackSource, getTrackSource } from \"@/utils/db\";\nimport { getAlbum } from \"@/api/album\";\nimport { getPlaylistDetail } from \"@/api/playlist\";\nimport { getArtist } from \"@/api/artist\";\nimport { personalFM, fmTrash } from \"@/api/others\";\nimport store from \"@/store\";\nimport { isAccountLoggedIn } from \"@/utils/auth\";\nimport { trackUpdateNowPlaying, trackScrobble } from \"@/api/lastfm\";\n\nconst electron =\n process.env.IS_ELECTRON === true ? window.require(\"electron\") : null;\nconst ipcRenderer =\n process.env.IS_ELECTRON === true ? electron.ipcRenderer : null;\n\nexport default class {\n constructor() {\n this._enabled = false;\n this._repeatMode = \"off\"; // off | on | one\n this._shuffle = false; // true | false\n this._volume = 1; // 0 to 1\n this._volumeBeforeMuted = 1; // 用于保存静音前的音量\n this._list = [];\n this._current = 0; // current track index\n this._shuffledList = [];\n this._shuffledCurrent = 0;\n this._playlistSource = { type: \"album\", id: 123 };\n this._currentTrack = { id: 86827685 };\n this._playNextList = []; // 当这个list不为空时,会优先播放这个list的歌\n this._playing = false;\n this._isPersonalFM = false;\n this._personalFMTrack = { id: 0 };\n this._personalFMNextTrack = { id: 0 };\n\n this._howler = null;\n Object.defineProperty(this, \"_howler\", {\n enumerable: false,\n });\n\n this._init();\n }\n\n get repeatMode() {\n return this._repeatMode;\n }\n set repeatMode(mode) {\n if (![\"off\", \"on\", \"one\"].includes(mode)) {\n console.warn(\"repeatMode: invalid args, must be 'on' | 'off' | 'one'\");\n return;\n }\n this._repeatMode = mode;\n }\n get shuffle() {\n return this._shuffle;\n }\n set shuffle(shuffle) {\n if (shuffle !== true && shuffle !== false) {\n console.warn(\"shuffle: invalid args, must be Boolean\");\n return;\n }\n this._shuffle = shuffle;\n if (shuffle) {\n this._shuffleTheList();\n }\n }\n get volume() {\n return this._volume;\n }\n set volume(volume) {\n this._volume = volume;\n Howler.volume(volume);\n }\n get list() {\n return this.shuffle ? this._shuffledList : this._list;\n }\n set list(list) {\n this._list = list;\n }\n get current() {\n return this.shuffle ? this._shuffledCurrent : this._current;\n }\n set current(current) {\n if (this.shuffle) {\n this._shuffledCurrent = current;\n } else {\n this._current = current;\n }\n }\n get enabled() {\n return this._enabled;\n }\n get playing() {\n return this._playing;\n }\n get currentTrack() {\n return this._currentTrack;\n }\n get playlistSource() {\n return this._playlistSource;\n }\n get playNextList() {\n return this._playNextList;\n }\n get isPersonalFM() {\n return this._isPersonalFM;\n }\n get personalFMTrack() {\n return this._personalFMTrack;\n }\n\n _init() {\n Howler.autoUnlock = false;\n Howler.usingWebAudio = true;\n this._loadSelfFromLocalStorage();\n if (this._enabled) {\n this._replaceCurrentTrack(this._currentTrack.id, false).then(() => {\n this._howler.seek(localStorage.getItem(\"playerCurrentTrackTime\") ?? 0);\n setInterval(\n () =>\n localStorage.setItem(\"playerCurrentTrackTime\", this._howler.seek()),\n 1000\n );\n }); // update audio source and init howler\n this._initMediaSession();\n }\n Howler.volume(this.volume);\n if (this._personalFMTrack.id === 0 || this._personalFMNextTrack.id === 0) {\n // init fm\n personalFM().then((result) => {\n this._personalFMTrack = result.data[0];\n this._personalFMNextTrack = result.data[1];\n return this._personalFMTrack;\n });\n }\n }\n _getNextTrack() {\n // 返回 [trackID, index]\n if (this._playNextList.length > 0) {\n let trackID = this._playNextList.shift();\n return [trackID, this.current];\n }\n if (this.list.length === this.current + 1 && this.repeatMode === \"on\") {\n // 当歌曲是列表最后一首 && 循环模式开启\n return [this.list[0], 0];\n }\n return [this.list[this.current + 1], this.current + 1];\n }\n _getPrevTrack() {\n if (this.current === 0 && this.repeatMode === \"on\") {\n // 当歌曲是列表第一首 && 循环模式开启\n return [this.list[this.list.length - 1], this.list.length - 1];\n }\n return [this.list[this.current - 1], this.current - 1];\n }\n async _shuffleTheList(firstTrackID = this._currentTrack.id) {\n let list = this._list.filter((tid) => tid !== firstTrackID);\n if (firstTrackID === \"first\") list = this._list;\n this._shuffledList = shuffle(list);\n if (firstTrackID !== \"first\") this._shuffledList.unshift(firstTrackID);\n }\n async _scrobble(track, time, complete = false) {\n const trackDuration = ~~(track.dt / 1000);\n time = complete ? trackDuration : time;\n scrobble({\n id: track.id,\n sourceid: this.playlistSource.id,\n time,\n });\n if (\n store.state.lastfm.key !== undefined &&\n (time >= trackDuration / 2 || time >= 240)\n ) {\n const timestamp = ~~(new Date().getTime() / 1000) - time;\n trackScrobble({\n artist: track.ar[0].name,\n track: track.name,\n timestamp,\n album: track.al.name,\n trackNumber: track.no,\n duration: trackDuration,\n });\n }\n }\n _playAudioSource(source, autoplay = true) {\n Howler.unload();\n this._howler = new Howl({\n src: [source],\n html5: true,\n format: [\"mp3\", \"flac\"],\n });\n if (autoplay) {\n this.play();\n document.title = `${this._currentTrack.name} · ${this._currentTrack.ar[0].name} - YesPlayMusic`;\n }\n this.setOutputDevice();\n this._howler.once(\"end\", () => {\n this._nextTrackCallback();\n });\n }\n _getAudioSourceFromCache(id) {\n return getTrackSource(id).then((t) => {\n if (!t) return null;\n const source = URL.createObjectURL(new Blob([t.source]));\n return source;\n });\n }\n _getAudioSourceFromNetease(track) {\n if (isAccountLoggedIn()) {\n return getMP3(track.id).then((result) => {\n if (!result.data[0]) return null;\n if (!result.data[0].url) return null;\n if (result.data[0].freeTrialInfo !== null) return null; // 跳过只能试听的歌曲\n const source = result.data[0].url.replace(/^http:/, \"https:\");\n if (store.state.settings.automaticallyCacheSongs) {\n cacheTrackSource(track, source, result.data[0].br);\n }\n return source;\n });\n } else {\n return new Promise((resolve) => {\n resolve(`https://music.163.com/song/media/outer/url?id=${track.id}`);\n });\n }\n }\n _getAudioSourceFromUnblockMusic(track) {\n if (process.env.IS_ELECTRON !== true) return null;\n const source = ipcRenderer.sendSync(\"unblock-music\", track);\n if (store.state.settings.automaticallyCacheSongs && source?.url) {\n // TODO: 将unblockMusic字样换成真正的来源(比如酷我咪咕等)\n cacheTrackSource(track, source.url, 128000, \"unblockMusic\");\n }\n return source?.url;\n }\n _getAudioSource(track) {\n return this._getAudioSourceFromCache(String(track.id))\n .then((source) => {\n return source ?? this._getAudioSourceFromNetease(track);\n })\n .then((source) => {\n return source ?? this._getAudioSourceFromUnblockMusic(track);\n });\n }\n _replaceCurrentTrack(\n id,\n autoplay = true,\n ifUnplayableThen = \"playNextTrack\"\n ) {\n if (autoplay) this._scrobble(this.currentTrack, this._howler.seek(), true);\n return getTrackDetail(id).then((data) => {\n let track = data.songs[0];\n this._currentTrack = track;\n this._updateMediaSessionMetaData(track);\n return this._getAudioSource(track).then((source) => {\n if (source) {\n this._playAudioSource(source, autoplay);\n this._cacheNextTrack();\n return source;\n } else {\n store.dispatch(\"showToast\", `无法播放 ${track.name}`);\n ifUnplayableThen === \"playNextTrack\"\n ? this.playNextTrack()\n : this.playPrevTrack();\n }\n });\n });\n }\n _cacheNextTrack() {\n const nextTrack = this._getNextTrack();\n getTrackDetail(nextTrack[0]).then((data) => {\n let track = data.songs[0];\n this._getAudioSource(track);\n });\n }\n _loadSelfFromLocalStorage() {\n const player = JSON.parse(localStorage.getItem(\"player\"));\n if (!player) return;\n for (const [key, value] of Object.entries(player)) {\n this[key] = value;\n }\n }\n _initMediaSession() {\n if (\"mediaSession\" in navigator) {\n navigator.mediaSession.setActionHandler(\"play\", () => {\n this.play();\n });\n navigator.mediaSession.setActionHandler(\"pause\", () => {\n this.pause();\n });\n navigator.mediaSession.setActionHandler(\"previoustrack\", () => {\n this.playPrevTrack();\n });\n navigator.mediaSession.setActionHandler(\"nexttrack\", () => {\n this.playNextTrack();\n });\n navigator.mediaSession.setActionHandler(\"stop\", () => {\n this.pause();\n });\n navigator.mediaSession.setActionHandler(\"seekto\", (event) => {\n this.seek(event.seekTime);\n this._updateMediaSessionPositionState();\n });\n navigator.mediaSession.setActionHandler(\"seekbackward\", (event) => {\n this.seek(this.seek() - (event.seekOffset || 10));\n this._updateMediaSessionPositionState();\n });\n navigator.mediaSession.setActionHandler(\"seekforward\", (event) => {\n this.seek(this.seek() + (event.seekOffset || 10));\n this._updateMediaSessionPositionState();\n });\n }\n }\n _updateMediaSessionMetaData(track) {\n if (\"mediaSession\" in navigator === false) {\n return;\n }\n let artists = track.ar.map((a) => a.name);\n navigator.mediaSession.metadata = new window.MediaMetadata({\n title: track.name,\n artist: artists.join(\",\"),\n album: track.al.name,\n artwork: [\n {\n src: track.al.picUrl + \"?param=512y512\",\n type: \"image/jpg\",\n sizes: \"512x512\",\n },\n ],\n });\n }\n _updateMediaSessionPositionState() {\n if (\"mediaSession\" in navigator === false) {\n return;\n }\n if (\"setPositionState\" in navigator.mediaSession) {\n navigator.mediaSession.setPositionState({\n duration: ~~(this.currentTrack.dt / 1000),\n playbackRate: 1.0,\n position: this.seek(),\n });\n }\n }\n _nextTrackCallback() {\n if (this.repeatMode === \"one\") {\n this._replaceCurrentTrack(this._currentTrack.id);\n } else {\n this.playNextTrack();\n }\n }\n _loadPersonalFMNextTrack() {\n return personalFM().then((result) => {\n this._personalFMNextTrack = result.data[0];\n return this._personalFMNextTrack;\n });\n }\n _playDiscordPresence(track, seekTime = 0) {\n if (\n process.env.IS_ELECTRON !== true ||\n store.state.settings.enableDiscordRichPresence === false\n ) {\n return null;\n }\n let copyTrack = { ...track };\n copyTrack.dt -= seekTime * 1000;\n ipcRenderer.send(\"playDiscordPresence\", copyTrack);\n }\n _pauseDiscordPresence(track) {\n if (\n process.env.IS_ELECTRON !== true ||\n store.state.settings.enableDiscordRichPresence === false\n ) {\n return null;\n }\n ipcRenderer.send(\"pauseDiscordPresence\", track);\n }\n\n currentTrackID() {\n const { list, current } = this._getListAndCurrent();\n return list[current];\n }\n appendTrack(trackID) {\n this.list.append(trackID);\n }\n playNextTrack(isFM = false) {\n if (this._isPersonalFM || isFM) {\n this._isPersonalFM = true;\n this._personalFMTrack = this._personalFMNextTrack;\n this._replaceCurrentTrack(this._personalFMTrack.id);\n this._loadPersonalFMNextTrack();\n return true;\n }\n // TODO: 切换歌曲时增加加载中的状态\n const [trackID, index] = this._getNextTrack();\n if (trackID === undefined) {\n this._howler.stop();\n this._playing = false;\n return false;\n }\n this.current = index;\n this._replaceCurrentTrack(trackID);\n return true;\n }\n playPrevTrack() {\n const [trackID, index] = this._getPrevTrack();\n if (trackID === undefined) return false;\n this.current = index;\n this._replaceCurrentTrack(trackID, true, \"playPrevTrack\");\n return true;\n }\n saveSelfToLocalStorage() {\n let player = {};\n for (let [key, value] of Object.entries(this)) {\n if (key === \"_playing\") continue;\n player[key] = value;\n }\n\n localStorage.setItem(\"player\", JSON.stringify(player));\n }\n\n pause() {\n this._howler.pause();\n this._playing = false;\n document.title = \"YesPlayMusic\";\n this._pauseDiscordPresence(this._currentTrack);\n }\n play() {\n if (this._howler.playing()) return;\n this._howler.play();\n this._playing = true;\n document.title = `${this._currentTrack.name} · ${this._currentTrack.ar[0].name} - YesPlayMusic`;\n this._playDiscordPresence(this._currentTrack, this.seek());\n if (store.state.lastfm.key !== undefined) {\n trackUpdateNowPlaying({\n artist: this.currentTrack.ar[0].name,\n track: this.currentTrack.name,\n album: this.currentTrack.al.name,\n trackNumber: this.currentTrack.no,\n duration: ~~(this.currentTrack.dt / 1000),\n });\n }\n }\n playOrPause() {\n if (this._howler.playing()) {\n this.pause();\n } else {\n this.play();\n }\n }\n seek(time = null) {\n if (time !== null) {\n this._howler.seek(time);\n if (this._playing)\n this._playDiscordPresence(this._currentTrack, this.seek());\n }\n return this._howler === null ? 0 : this._howler.seek();\n }\n mute() {\n if (this.volume === 0) {\n this.volume = this._volumeBeforeMuted;\n } else {\n this._volumeBeforeMuted = this.volume;\n this.volume = 0;\n }\n }\n setOutputDevice() {\n if (\n process.env.IS_ELECTRON !== true ||\n this._howler._sounds.length <= 0 ||\n !this._howler._sounds[0]._node\n ) {\n return;\n }\n this._howler._sounds[0]._node.setSinkId(store.state.settings.outputDevice);\n }\n\n replacePlaylist(\n trackIDs,\n playlistSourceID,\n playlistSourceType,\n autoPlayTrackID = \"first\"\n ) {\n this._isPersonalFM = false;\n if (!this._enabled) this._enabled = true;\n this.list = trackIDs;\n this.current = 0;\n this._playlistSource = {\n type: playlistSourceType,\n id: playlistSourceID,\n };\n if (this.shuffle) this._shuffleTheList(autoPlayTrackID);\n if (autoPlayTrackID === \"first\") {\n this._replaceCurrentTrack(this.list[0]);\n } else {\n this.current = trackIDs.indexOf(autoPlayTrackID);\n this._replaceCurrentTrack(autoPlayTrackID);\n }\n }\n playAlbumByID(id, trackID = \"first\") {\n getAlbum(id).then((data) => {\n let trackIDs = data.songs.map((t) => t.id);\n this.replacePlaylist(trackIDs, id, \"album\", trackID);\n });\n }\n playPlaylistByID(id, trackID = \"first\", noCache = false) {\n getPlaylistDetail(id, noCache).then((data) => {\n let trackIDs = data.playlist.trackIds.map((t) => t.id);\n this.replacePlaylist(trackIDs, id, \"playlist\", trackID);\n });\n }\n playArtistByID(id, trackID = \"first\") {\n getArtist(id).then((data) => {\n let trackIDs = data.hotSongs.map((t) => t.id);\n this.replacePlaylist(trackIDs, id, \"artist\", trackID);\n });\n }\n playTrackOnListByID(id, listName = \"default\") {\n if (listName === \"default\") {\n this._current = this._list.findIndex((t) => t === id);\n }\n this._replaceCurrentTrack(id);\n }\n addTrackToPlayNext(trackID, playNow = false) {\n this._playNextList.push(trackID);\n if (playNow) this.playNextTrack();\n }\n playPersonalFM() {\n this._isPersonalFM = true;\n if (!this._enabled) this._enabled = true;\n if (this._currentTrack.id !== this._personalFMTrack.id) {\n this._replaceCurrentTrack(this._personalFMTrack.id).then(() =>\n this.playOrPause()\n );\n } else {\n this.playOrPause();\n }\n }\n moveToFMTrash() {\n this._isPersonalFM = true;\n this.playNextTrack();\n fmTrash(this._personalFMTrack.id);\n }\n\n sendSelfToIpcMain() {\n if (process.env.IS_ELECTRON !== true) return false;\n ipcRenderer.send(\"player\", {\n playing: this.playing,\n likedCurrentTrack: store.state.liked.songs.includes(this.currentTrack.id),\n });\n }\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n // console.log(mutation);\n localStorage.setItem(\"settings\", JSON.stringify(state.settings));\n localStorage.setItem(\"data\", JSON.stringify(state.data));\n });\n};\n","export function getSendSettingsPlugin() {\n const electron = window.require(\"electron\");\n const ipcRenderer = electron.ipcRenderer;\n return (store) => {\n store.subscribe((mutation, state) => {\n // console.log(mutation);\n if (mutation.type !== \"updateSettings\") return;\n ipcRenderer.send(\"settings\", {\n minimizeToTray: state.settings.minimizeToTray,\n enableGlobalShortcut: state.settings.enableGlobalShortcut,\n appearance: state.settings.appearance,\n });\n });\n };\n}\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport state from \"./state\";\nimport mutations from \"./mutations\";\nimport actions from \"./actions\";\nimport { changeAppearance } from \"@/utils/common\";\nimport Player from \"@/utils/Player\";\n// vuex 自定义插件\nimport saveToLocalStorage from \"./plugins/localStorage\";\nimport { getSendSettingsPlugin } from \"./plugins/sendSettings\";\n\nVue.use(Vuex);\n\nlet plugins = [saveToLocalStorage];\nif (process.env.IS_ELECTRON === true) {\n let sendSettings = getSendSettingsPlugin();\n plugins.push(sendSettings);\n}\nconst options = {\n state,\n mutations,\n actions,\n plugins,\n};\n\nconst store = new Vuex.Store(options);\n\nif ([undefined, null].includes(store.state.settings.lang)) {\n const defaultLang = \"en\";\n const langMapper = new Map()\n .set(\"zh\", \"zh-CN\")\n .set(\"en\", \"en\")\n .set(\"tr\", \"tr\");\n store.state.settings.lang =\n langMapper.get(navigator.language.slice(0, 2)) || defaultLang;\n localStorage.setItem(\"settings\", JSON.stringify(store.state.settings));\n}\n\nchangeAppearance(store.state.settings.appearance);\n\nwindow\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .addEventListener(\"change\", () => {\n if (store.state.settings.appearance === \"auto\") {\n changeAppearance(store.state.settings.appearance);\n }\n });\n\nlet player = new Player();\nplayer = new Proxy(player, {\n set(target, prop, val) {\n // console.log({ prop, val });\n target[prop] = val;\n if (prop === \"_howler\") return true;\n target.saveSelfToLocalStorage();\n target.sendSelfToIpcMain();\n return true;\n },\n});\nstore.state.player = player;\n\nexport default store;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextMenu.vue?vue&type=style&index=0&id=7674b787&lang=scss&scoped=true&\"","import request from \"@/utils/request\";\nimport { mapTrackPlayableStatus } from \"@/utils/common\";\n\n/**\n * 获取歌手单曲\n * 说明 : 调用此接口 , 传入歌手 id, 可获得歌手部分信息和热门歌曲\n * @param {number} id - 歌手 id, 可由搜索接口获得\n */\nexport function getArtist(id) {\n return request({\n url: \"/artists\",\n method: \"get\",\n params: {\n id,\n timestamp: new Date().getTime(),\n },\n }).then((data) => {\n data.hotSongs = mapTrackPlayableStatus(data.hotSongs);\n return data;\n });\n}\n\n/**\n * 获取歌手专辑\n * 说明 : 调用此接口 , 传入歌手 id, 可获得歌手专辑内容\n * - id: 歌手 id\n * - limit: 取出数量 , 默认为 50\n * - offset: 偏移数量 , 用于分页 , 如 :( 页数 -1)*50, 其中 50 为 limit 的值 , 默认为 0\n * @param {Object} params\n * @param {number} params.id\n * @param {number=} params.limit\n * @param {number=} params.offset\n */\nexport function getArtistAlbum(params) {\n return request({\n url: \"/artist/album\",\n method: \"get\",\n params,\n });\n}\n\n/**\n * 歌手榜\n * 说明 : 调用此接口 , 可获取排行榜中的歌手榜\n * - type : 地区\n * 1: 华语\n * 2: 欧美\n * 3: 韩国\n * 4: 日本\n * @param {number=} type\n */\nexport function toplistOfArtists(type = null) {\n return request({\n url: \"/toplist/artist\",\n method: \"get\",\n params: {\n type,\n },\n });\n}\n/**\n * 获取歌手 mv\n * 说明 : 调用此接口 , 传入歌手 id, 可获得歌手 mv 信息 , 具体 mv 播放地址可调 用/mv传入此接口获得的 mvid 来拿到 , 如 : /artist/mv?id=6452,/mv?mvid=5461064\n * @param {number} params.id 歌手 id, 可由搜索接口获得\n * @param {number} params.offset\n * @param {number} params.limit\n */\nexport function artistMv(params) {\n return request({\n url: \"/artist/mv\",\n method: \"get\",\n params,\n });\n}\n\n/**\n * 收藏歌手\n * 说明 : 调用此接口 , 传入歌手 id, 可收藏歌手\n * - id: 歌手 id\n * - t: 操作,1 为收藏,其他为取消收藏\n * @param {Object} params\n * @param {number} params.id\n * @param {number} params.t\n */\nexport function followAArtist(params) {\n return request({\n url: \"/artist/sub\",\n method: \"post\",\n params,\n });\n}\n\n/**\n * 相似歌手\n * 说明 : 调用此接口 , 传入歌手 id, 可获得相似歌手\n * - id: 歌手 id\n * @param {number} id\n */\nexport function similarArtists(id) {\n return request({\n url: \"/simi/artist\",\n method: \"post\",\n params: { id },\n });\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Navbar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showNavbar),expression:\"showNavbar\"}],ref:\"navbar\"}),_c('main',{directives:[{name:\"show\",rawName:\"v-show\",value:(!this.$store.state.showLyrics),expression:\"!this.$store.state.showLyrics\"}]},[_c('keep-alive',[(_vm.$route.meta.keepAlive)?_c('router-view'):_vm._e()],1),(!_vm.$route.meta.keepAlive)?_c('router-view'):_vm._e()],1),_c('transition',{attrs:{\"name\":\"slide-up\"}},[(_vm.enablePlayer)?_c('Player',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPlayer),expression:\"showPlayer\"}],ref:\"player\"}):_vm._e()],1),_c('Toast'),(_vm.isAccountLoggedIn)?_c('ModalAddTrackToPlaylist'):_vm._e(),(_vm.isAccountLoggedIn)?_c('ModalNewPlaylist'):_vm._e(),(_vm.enablePlayer)?_c('transition',{attrs:{\"name\":\"slide-up\"}},[_c('Lyrics',{directives:[{name:\"show\",rawName:\"v-show\",value:(this.$store.state.showLyrics),expression:\"this.$store.state.showLyrics\"}]})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{staticClass:\"add-track-to-playlist-modal\",attrs:{\"show\":_vm.show,\"close\":_vm.close,\"showFooter\":false,\"title\":\"添加到歌单\",\"width\":\"25vw\"}},[_c('template',{slot:\"default\"},[_c('div',{staticClass:\"new-playlist-button\",on:{\"click\":_vm.newPlaylist}},[_c('svg-icon',{attrs:{\"icon-class\":\"plus\"}}),_vm._v(\"新建歌单\")],1),_vm._l((_vm.ownPlaylists),function(playlist){return _c('div',{key:playlist.id,staticClass:\"playlist\",on:{\"click\":function($event){return _vm.addTrackToPlaylist(playlist.id)}}},[_c('img',{attrs:{\"src\":_vm._f(\"resizeImage\")(playlist.coverImgUrl,224)}}),_c('div',{staticClass:\"info\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(playlist.name))]),_c('div',{staticClass:\"track-count\"},[_vm._v(_vm._s(playlist.trackCount)+\" 首\")])])])})],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n 新建歌单\n \n \n \n {{ playlist.name }}\n {{ playlist.trackCount }} 首\n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalAddTrackToPlaylist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalAddTrackToPlaylist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalAddTrackToPlaylist.vue?vue&type=template&id=3ad5b03c&scoped=true&\"\nimport script from \"./ModalAddTrackToPlaylist.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalAddTrackToPlaylist.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalAddTrackToPlaylist.vue?vue&type=style&index=0&id=3ad5b03c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ad5b03c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{staticClass:\"add-playlist-modal\",attrs:{\"show\":_vm.show,\"close\":_vm.close,\"title\":\"新建歌单\",\"width\":\"25vw\"}},[_c('template',{slot:\"default\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.title),expression:\"title\"}],attrs:{\"type\":\"text\",\"placeholder\":\"歌单标题\",\"maxlength\":\"40\"},domProps:{\"value\":(_vm.title)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.title=$event.target.value}}}),_c('div',{staticClass:\"checkbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.privatePlaylist),expression:\"privatePlaylist\"}],attrs:{\"type\":\"checkbox\",\"id\":\"checkbox-private\"},domProps:{\"checked\":Array.isArray(_vm.privatePlaylist)?_vm._i(_vm.privatePlaylist,null)>-1:(_vm.privatePlaylist)},on:{\"change\":function($event){var $$a=_vm.privatePlaylist,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.privatePlaylist=$$a.concat([$$v]))}else{$$i>-1&&(_vm.privatePlaylist=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.privatePlaylist=$$c}}}}),_c('label',{attrs:{\"for\":\"checkbox-private\"}},[_vm._v(\"设置为隐私歌单\")])])]),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"primary block\",on:{\"click\":_vm.createPlaylist}},[_vm._v(\"创建\")])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n 设置为隐私歌单\n \n \n \n 创建\n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalNewPlaylist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalNewPlaylist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ModalNewPlaylist.vue?vue&type=template&id=109c1e54&scoped=true&\"\nimport script from \"./ModalNewPlaylist.vue?vue&type=script&lang=js&\"\nexport * from \"./ModalNewPlaylist.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ModalNewPlaylist.vue?vue&type=style&index=0&id=109c1e54&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"109c1e54\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('nav',[_c('div',{staticClass:\"win32-titlebar\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"YesPlayMusic\")]),_c('div',{staticClass:\"controls\"},[_c('div',{staticClass:\"button minimize codicon codicon-chrome-minimize\",on:{\"click\":_vm.windowMinimize}}),_c('div',{staticClass:\"button max-restore codicon\",class:{\n 'codicon-chrome-restore': _vm.windowIsMaximized,\n 'codicon-chrome-maximize': !_vm.windowIsMaximized,\n },on:{\"click\":_vm.windowMaxRestore}}),_c('div',{staticClass:\"button close codicon codicon-chrome-close\",on:{\"click\":_vm.windowClose}})])]),_c('div',{staticClass:\"navigation-buttons\"},[_c('button-icon',{nativeOn:{\"click\":function($event){return _vm.go('back')}}},[_c('svg-icon',{attrs:{\"icon-class\":\"arrow-left\"}})],1),_c('button-icon',{nativeOn:{\"click\":function($event){return _vm.go('forward')}}},[_c('svg-icon',{attrs:{\"icon-class\":\"arrow-right\"}})],1)],1),_c('div',{staticClass:\"navigation-links\"},[_c('router-link',{class:{ active: this.$route.name === 'home' },attrs:{\"to\":\"/\"}},[_vm._v(_vm._s(_vm.$t(\"nav.home\")))]),_c('router-link',{class:{ active: this.$route.name === 'explore' },attrs:{\"to\":\"/explore\"}},[_vm._v(_vm._s(_vm.$t(\"nav.explore\")))]),_c('router-link',{class:{ active: this.$route.name === 'library' },attrs:{\"to\":\"/library\"}},[_vm._v(_vm._s(_vm.$t(\"nav.library\")))])],1),_c('div',{staticClass:\"right-part\"},[_c('div',{staticClass:\"search-box\"},[_c('div',{staticClass:\"container\",class:{ active: _vm.inputFocus }},[_c('svg-icon',{attrs:{\"icon-class\":\"search\"}}),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.keywords),expression:\"keywords\"}],ref:\"searchInput\",attrs:{\"placeholder\":_vm.inputFocus ? '' : _vm.$t('nav.search')},domProps:{\"value\":(_vm.keywords)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.doSearch($event)},\"focus\":function($event){_vm.inputFocus = true},\"blur\":function($event){_vm.inputFocus = false},\"input\":function($event){if($event.target.composing){ return; }_vm.keywords=$event.target.value}}})])],1)]),_c('img',{staticClass:\"avatar\",attrs:{\"src\":_vm.avatarUrl},on:{\"click\":_vm.showUserProfileMenu}})])]),_c('ContextMenu',{ref:\"userProfileMenu\"},[_c('div',{staticClass:\"item\",on:{\"click\":_vm.toSettings}},[_c('svg-icon',{attrs:{\"icon-class\":\"settings\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"library.userProfileMenu.settings\"))+\" \")],1),(!_vm.isLooseLoggedIn)?_c('div',{staticClass:\"item\",on:{\"click\":_vm.toLogin}},[_c('svg-icon',{attrs:{\"icon-class\":\"login\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.login\"))+\" \")],1):_vm._e(),(_vm.isLooseLoggedIn)?_c('div',{staticClass:\"item\",on:{\"click\":_vm.logout}},[_c('svg-icon',{attrs:{\"icon-class\":\"logout\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"library.userProfileMenu.logout\"))+\" \")],1):_vm._e(),_c('hr'),_c('div',{staticClass:\"item\",on:{\"click\":_vm.toGitHub}},[_c('svg-icon',{attrs:{\"icon-class\":\"github\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.github\"))+\" \")],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n YesPlayMusic\n \n \n \n \n \n \n \n \n \n \n \n {{\n $t(\"nav.home\")\n }}\n {{ $t(\"nav.explore\") }}\n {{ $t(\"nav.library\") }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n {{ $t(\"library.userProfileMenu.settings\") }}\n \n \n \n {{ $t(\"login.login\") }}\n \n \n \n {{ $t(\"library.userProfileMenu.logout\") }}\n \n \n \n \n {{ $t(\"nav.github\") }}\n \n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=05b2c7d8&scoped=true&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&id=05b2c7d8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05b2c7d8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"player\",on:{\"click\":_vm.toggleLyrics}},[_c('div',{staticClass:\"progress-bar\",class:{ nyancat: _vm.settings.nyancatStyle },on:{\"click\":function($event){$event.stopPropagation();}}},[_c('vue-slider',{ref:\"progress\",attrs:{\"min\":0,\"max\":_vm.progressMax,\"interval\":1,\"drag-on-click\":true,\"duration\":0,\"dotSize\":12,\"height\":2,\"tooltipFormatter\":_vm.formatTrackTime},on:{\"drag-end\":_vm.setSeek},model:{value:(_vm.progress),callback:function ($$v) {_vm.progress=$$v},expression:\"progress\"}})],1),_c('div',{staticClass:\"controls\"},[_c('div',{staticClass:\"playing\"},[_c('div',{staticClass:\"container\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('img',{attrs:{\"src\":_vm._f(\"resizeImage\")(_vm.currentTrack.al && _vm.currentTrack.al.picUrl,224)},on:{\"click\":_vm.goToAlbum}}),_c('div',{staticClass:\"track-info\",attrs:{\"title\":_vm.audioSource}},[_c('div',{staticClass:\"name\",on:{\"click\":_vm.goToList}},[_vm._v(\" \"+_vm._s(_vm.currentTrack.name)+\" \")]),_c('div',{staticClass:\"artist\"},_vm._l((_vm.currentTrack.ar),function(ar,index){return _c('span',{key:ar.id,on:{\"click\":function($event){return _vm.goToArtist(ar.id)}}},[_c('span',{staticClass:\"ar\"},[_vm._v(_vm._s(ar.name))]),(index !== _vm.currentTrack.ar.length - 1)?_c('span',[_vm._v(\", \")]):_vm._e()])}),0)]),_c('div',{staticClass:\"like-button\"},[_c('button-icon',{attrs:{\"title\":_vm.$t('player.like')},nativeOn:{\"click\":function($event){return _vm.likeCurrentSong($event)}}},[_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.liked.songs.includes(_vm.currentTrack.id)),expression:\"!liked.songs.includes(currentTrack.id)\"}],attrs:{\"icon-class\":\"heart\"}}),_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.liked.songs.includes(_vm.currentTrack.id)),expression:\"liked.songs.includes(currentTrack.id)\"}],attrs:{\"icon-class\":\"heart-solid\"}})],1)],1)]),_c('div',{staticClass:\"blank\"})]),_c('div',{staticClass:\"middle-control-buttons\"},[_c('div',{staticClass:\"blank\"}),_c('div',{staticClass:\"container\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('button-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.player.isPersonalFM),expression:\"!player.isPersonalFM\"}],attrs:{\"title\":_vm.$t('player.previous')},nativeOn:{\"click\":function($event){return _vm.previous($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"previous\"}})],1),_c('button-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.player.isPersonalFM),expression:\"player.isPersonalFM\"}],attrs:{\"title\":\"不喜欢\"},nativeOn:{\"click\":function($event){return _vm.moveToFMTrash($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"thumbs-down\"}})],1),_c('button-icon',{staticClass:\"play\",attrs:{\"title\":_vm.$t(_vm.player.playing ? 'player.pause' : 'player.play')},nativeOn:{\"click\":function($event){return _vm.play($event)}}},[_c('svg-icon',{attrs:{\"iconClass\":_vm.player.playing ? 'pause' : 'play'}})],1),_c('button-icon',{attrs:{\"title\":_vm.$t('player.next')},nativeOn:{\"click\":function($event){return _vm.next($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"next\"}})],1)],1),_c('div',{staticClass:\"blank\"})]),_c('div',{staticClass:\"right-control-buttons\"},[_c('div',{staticClass:\"blank\"}),_c('div',{staticClass:\"container\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('button-icon',{class:{\n active: this.$route.name === 'next',\n disabled: _vm.player.isPersonalFM,\n },attrs:{\"title\":_vm.$t('player.nextUp')},nativeOn:{\"click\":function($event){return _vm.goToNextTracksPage($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"list\"}})],1),_c('button-icon',{class:{\n active: _vm.player.repeatMode !== 'off',\n disabled: _vm.player.isPersonalFM,\n },attrs:{\"title\":_vm.player.repeatMode === 'one'\n ? _vm.$t('player.repeatTrack')\n : _vm.$t('player.repeat')},nativeOn:{\"click\":function($event){return _vm.repeat($event)}}},[_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.player.repeatMode !== 'one'),expression:\"player.repeatMode !== 'one'\"}],attrs:{\"icon-class\":\"repeat\"}}),_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.player.repeatMode === 'one'),expression:\"player.repeatMode === 'one'\"}],attrs:{\"icon-class\":\"repeat-1\"}})],1),_c('button-icon',{class:{ active: _vm.player.shuffle, disabled: _vm.player.isPersonalFM },attrs:{\"title\":_vm.$t('player.shuffle')},nativeOn:{\"click\":function($event){return _vm.shuffle($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"shuffle\"}})],1),_c('div',{staticClass:\"volume-control\"},[_c('button-icon',{attrs:{\"title\":_vm.$t('player.mute')},nativeOn:{\"click\":function($event){return _vm.player.mute($event)}}},[_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volume > 0.5),expression:\"volume > 0.5\"}],attrs:{\"icon-class\":\"volume\"}}),_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volume === 0),expression:\"volume === 0\"}],attrs:{\"icon-class\":\"volume-mute\"}}),_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.volume <= 0.5 && _vm.volume !== 0),expression:\"volume <= 0.5 && volume !== 0\"}],attrs:{\"icon-class\":\"volume-half\"}})],1),_c('div',{staticClass:\"volume-bar\"},[_c('vue-slider',{attrs:{\"min\":0,\"max\":1,\"interval\":0.01,\"drag-on-click\":true,\"duration\":0,\"tooltip\":\"none\",\"dotSize\":12},model:{value:(_vm.volume),callback:function ($$v) {_vm.volume=$$v},expression:\"volume\"}})],1)],1),_c('button-icon',{staticClass:\"lyrics-button\",staticStyle:{\"margin-left\":\"12px\"},attrs:{\"title\":\"歌词\"},nativeOn:{\"click\":function($event){$event.stopPropagation();return _vm.toggleLyrics($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"arrow-up\"}})],1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n \n \n \n \n {{ currentTrack.name }}\n \n \n \n {{ ar.name }}, \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0.5\" />\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Player.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Player.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Player.vue?vue&type=template&id=210bc1fc&scoped=true&\"\nimport script from \"./Player.vue?vue&type=script&lang=js&\"\nexport * from \"./Player.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Player.vue?vue&type=style&index=0&id=210bc1fc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"210bc1fc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.toast.show),expression:\"toast.show\"}],staticClass:\"toast\"},[_vm._v(_vm._s(_vm.toast.text))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n {{ toast.text }}\n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toast.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toast.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Toast.vue?vue&type=template&id=ec2cc052&scoped=true&\"\nimport script from \"./Toast.vue?vue&type=script&lang=js&\"\nexport * from \"./Toast.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Toast.vue?vue&type=style&index=0&id=ec2cc052&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ec2cc052\",\n null\n \n)\n\nexport default component.exports","export function ipcRenderer(vueInstance) {\n const self = vueInstance;\n // 添加专有的类名\n document.body.setAttribute(\"data-electron\", \"yes\");\n document.body.setAttribute(\n \"data-electron-os\",\n window.require(\"os\").platform()\n );\n // ipc message channel\n const electron = window.require(\"electron\");\n const ipcRenderer = electron.ipcRenderer;\n\n // listens to the main process 'changeRouteTo' event and changes the route from\n // inside this Vue instance, according to what path the main process requires.\n // responds to Menu click() events at the main process and changes the route accordingly.\n\n ipcRenderer.on(\"changeRouteTo\", (event, path) => {\n self.$router.push(path);\n });\n\n ipcRenderer.on(\"search\", () => {\n // 触发数据响应\n self.$refs.navbar.$refs.searchInput.focus();\n self.$refs.navbar.inputFocus = true;\n });\n\n ipcRenderer.on(\"play\", () => {\n self.$refs.player.play();\n });\n\n ipcRenderer.on(\"next\", () => {\n console.log(\"touchBar:next\");\n self.$refs.player.next();\n });\n\n ipcRenderer.on(\"previous\", () => {\n self.$refs.player.previous();\n });\n\n ipcRenderer.on(\"increaseVolume\", () => {\n if (self.$refs.player.volume + 0.1 >= 1) {\n return (self.$refs.player.volume = 1);\n }\n self.$refs.player.volume += 0.1;\n });\n\n ipcRenderer.on(\"decreaseVolume\", () => {\n if (self.$refs.player.volume - 0.1 <= 0) {\n return (self.$refs.player.volume = 0);\n }\n self.$refs.player.volume -= 0.1;\n });\n\n ipcRenderer.on(\"like\", () => {\n self.$refs.player.likeCurrentSong();\n });\n\n ipcRenderer.on(\"repeat\", () => {\n self.$refs.player.repeat();\n });\n\n ipcRenderer.on(\"shuffle\", () => {\n self.$refs.player.shuffle();\n });\n\n ipcRenderer.on(\"routerGo\", (event, where) => {\n console.log(where);\n self.$refs.navbar.go(where);\n });\n\n ipcRenderer.on(\"nextUp\", () => {\n self.$refs.player.goToNextTracksPage();\n });\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"slide-up\"}},[_c('div',{staticClass:\"lyrics-page\",class:{ 'no-lyric': _vm.noLyric }},[(this.$store.state.settings.showLyricsDynamicBackground)?_c('div',{staticClass:\"dynamic-background\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(this.$store.state.showLyrics),expression:\"this.$store.state.showLyrics\"}]},[_c('div',{staticClass:\"top-right\",style:({ backgroundImage: (\"url(\" + _vm.imageUrl + \")\") })}),_c('div',{staticClass:\"bottom-left\",style:({ backgroundImage: (\"url(\" + _vm.imageUrl + \")\") })})])]):_vm._e(),_c('div',{staticClass:\"left-side\"},[_c('div',[_c('div',{staticClass:\"cover\"},[_c('div',{staticClass:\"cover-container\"},[_c('img',{attrs:{\"src\":_vm.imageUrl}}),_c('div',{staticClass:\"shadow\",style:({ backgroundImage: (\"url(\" + _vm.imageUrl + \")\") })})])]),_c('div',{staticClass:\"controls\"},[_c('div',{staticClass:\"top-part\"},[_c('div',{staticClass:\"track-info\"},[_c('div',{staticClass:\"title\",attrs:{\"title\":_vm.currentTrack.name}},[_c('router-link',{attrs:{\"to\":(\"/\" + (_vm.player.playlistSource.type) + \"/\" + (_vm.player.playlistSource.id))},nativeOn:{\"click\":function($event){return _vm.toggleLyrics($event)}}},[_vm._v(_vm._s(_vm.currentTrack.name)+\" \")])],1),_c('div',{staticClass:\"subtitle\"},[_c('router-link',{attrs:{\"to\":(\"/artist/\" + (_vm.currentTrack.ar[0].id))},nativeOn:{\"click\":function($event){return _vm.toggleLyrics($event)}}},[_vm._v(_vm._s(_vm.currentTrack.ar[0].name)+\" \")]),_vm._v(\" - \"),_c('router-link',{attrs:{\"to\":(\"/album/\" + (_vm.currentTrack.al.id)),\"title\":_vm.currentTrack.al.name},nativeOn:{\"click\":function($event){return _vm.toggleLyrics($event)}}},[_vm._v(_vm._s(_vm.currentTrack.al.name)+\" \")])],1)]),_c('div',{staticClass:\"buttons\"},[_c('button-icon',{attrs:{\"title\":_vm.$t('player.like')},nativeOn:{\"click\":function($event){return _vm.playerRef.likeCurrentSong($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":_vm.playerRef.isCurrentTrackLiked ? 'heart-solid' : 'heart'}})],1)],1)]),_c('div',{staticClass:\"progress-bar\"},[_c('span',[_vm._v(_vm._s(_vm.formatTrackTime(_vm.progress) || \"0:00\"))]),_c('div',{staticClass:\"slider\"},[_c('vue-slider',{ref:\"progress\",attrs:{\"min\":0,\"max\":_vm.progressMax,\"interval\":1,\"drag-on-click\":true,\"duration\":0,\"dotSize\":12,\"height\":2,\"tooltipFormatter\":_vm.formatTrackTime},on:{\"drag-end\":_vm.setSeek},model:{value:(_vm.progress),callback:function ($$v) {_vm.progress=$$v},expression:\"progress\"}})],1),_c('span',[_vm._v(_vm._s(_vm.formatTrackTime(_vm.progressMax)))])]),_c('div',{staticClass:\"media-controls\"},[_c('button-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.player.isPersonalFM),expression:\"!player.isPersonalFM\"}],class:{ active: _vm.player.repeatMode !== 'off' },attrs:{\"title\":_vm.player.repeatMode === 'one'\n ? _vm.$t('player.repeatTrack')\n : _vm.$t('player.repeat')},nativeOn:{\"click\":function($event){return _vm.playerRef.repeat($event)}}},[_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.player.repeatMode !== 'one'),expression:\"player.repeatMode !== 'one'\"}],attrs:{\"icon-class\":\"repeat\"}}),_c('svg-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.player.repeatMode === 'one'),expression:\"player.repeatMode === 'one'\"}],attrs:{\"icon-class\":\"repeat-1\"}})],1),_c('div',{staticClass:\"middle\"},[_c('button-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.player.isPersonalFM),expression:\"!player.isPersonalFM\"}],attrs:{\"title\":_vm.$t('player.previous')},nativeOn:{\"click\":function($event){return _vm.playerRef.previous($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"previous\"}})],1),_c('button-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.player.isPersonalFM),expression:\"player.isPersonalFM\"}],attrs:{\"title\":\"不喜欢\"},nativeOn:{\"click\":function($event){return _vm.moveToFMTrash($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"thumbs-down\"}})],1),_c('button-icon',{attrs:{\"id\":\"play\",\"title\":_vm.$t(_vm.player.playing ? 'player.pause' : 'player.play')},nativeOn:{\"click\":function($event){return _vm.playerRef.play($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":_vm.playerRef.playing ? 'pause' : 'play'}})],1),_c('button-icon',{attrs:{\"title\":_vm.$t('player.next')},nativeOn:{\"click\":function($event){return _vm.playerRef.next($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"next\"}})],1)],1),_c('button-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.player.isPersonalFM),expression:\"!player.isPersonalFM\"}],class:{ active: _vm.player.shuffle },attrs:{\"title\":_vm.$t('player.shuffle')},nativeOn:{\"click\":function($event){return _vm.playerRef.shuffle($event)}}},[_c('svg-icon',{attrs:{\"icon-class\":\"shuffle\"}})],1)],1)])])]),_c('div',{staticClass:\"right-side\"},[_c('transition',{attrs:{\"name\":\"slide-fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.noLyric),expression:\"!noLyric\"}],ref:\"lyricsContainer\",staticClass:\"lyrics-container\",style:(_vm.lyricFontSize)},[_c('div',{staticClass:\"line\",attrs:{\"id\":\"line-1\"}}),_vm._l((_vm.lyricWithTranslation),function(line,index){return _c('div',{key:index,staticClass:\"line\",class:{\n highlight: _vm.highlightLyricIndex === index,\n },attrs:{\"id\":(\"line\" + index)},on:{\"click\":function($event){return _vm.clickLyricLine(line.time)}}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.formatLine(line))}})])})],2)])],1),_c('div',{staticClass:\"close-button\",on:{\"click\":_vm.toggleLyrics}},[_c('button',[_c('svg-icon',{attrs:{\"icon-class\":\"arrow-down\"}})],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// copy from https://github.com/sl1673495/vue-netease-music/blob/master/src/utils/lrcparse.js\n\nexport function lyricParser(lrc) {\n return {\n lyric: parseLyric(lrc?.lrc?.lyric || \"\"),\n tlyric: parseLyric(lrc?.tlyric?.lyric || \"\"),\n lyricuser: lrc.lyricUser,\n transuser: lrc.transUser,\n };\n}\n\nexport function parseLyric(lrc) {\n const lyrics = lrc.split(\"\\n\");\n const lrcObj = [];\n for (let i = 0; i < lyrics.length; i++) {\n const lyric = decodeURIComponent(lyrics[i]);\n const timeReg = /\\[\\d*:\\d*((\\.|:)\\d*)*\\]/g;\n const timeRegExpArr = lyric.match(timeReg);\n if (!timeRegExpArr) continue;\n const content = lyric.replace(timeReg, \"\");\n for (let k = 0, h = timeRegExpArr.length; k < h; k++) {\n const t = timeRegExpArr[k];\n const min = Number(String(t.match(/\\[\\d*/i)).slice(1));\n const sec = Number(String(t.match(/:\\d*/i)).slice(1));\n const ms = Number(t.match(/\\d*\\]/i)[0].slice(0, 2)) / 100;\n const time = min * 60 + sec + ms;\n if (content !== \"\") {\n lrcObj.push({ time: time, rawTime: timeRegExpArr[0], content });\n }\n }\n }\n return lrcObj;\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ currentTrack.name }}\n \n \n \n {{ currentTrack.ar[0].name }}\n \n -\n {{ currentTrack.al.name }}\n \n \n \n \n \n \n \n \n \n \n \n {{ formatTrackTime(progress) || \"0:00\" }}\n \n \n \n {{ formatTrackTime(progressMax) }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lyrics.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lyrics.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./lyrics.vue?vue&type=template&id=5d57e27d&scoped=true&\"\nimport script from \"./lyrics.vue?vue&type=script&lang=js&\"\nexport * from \"./lyrics.vue?vue&type=script&lang=js&\"\nimport style0 from \"./lyrics.vue?vue&type=style&index=0&id=5d57e27d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d57e27d\",\n null\n \n)\n\nexport default component.exports","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--11-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--11-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=051b0f7c&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport VueRouter from \"vue-router\";\nimport NProgress from \"nprogress\";\nimport \"@/assets/css/nprogress.css\";\nimport { isLooseLoggedIn } from \"@/utils/auth\";\n\nNProgress.configure({ showSpinner: false, trickleSpeed: 100 });\n\nVue.use(VueRouter);\nconst routes = [\n {\n path: \"/\",\n name: \"home\",\n component: () => import(\"@/views/home.vue\"),\n meta: {\n keepAlive: true,\n },\n },\n {\n path: \"/login\",\n name: \"login\",\n component: () => import(\"@/views/login.vue\"),\n },\n {\n path: \"/login/username\",\n name: \"loginUsername\",\n component: () => import(\"@/views/loginUsername.vue\"),\n },\n {\n path: \"/login/account\",\n name: \"loginAccount\",\n component: () => import(\"@/views/loginAccount.vue\"),\n },\n {\n path: \"/playlist/:id\",\n name: \"playlist\",\n component: () => import(\"@/views/playlist.vue\"),\n },\n {\n path: \"/album/:id\",\n name: \"album\",\n component: () => import(\"@/views/album.vue\"),\n },\n {\n path: \"/artist/:id\",\n name: \"artist\",\n component: () => import(\"@/views/artist.vue\"),\n meta: {\n keepAlive: true,\n },\n },\n {\n path: \"/artist/:id/mv\",\n name: \"artistMV\",\n component: () => import(\"@/views/artistMV.vue\"),\n meta: {\n keepAlive: true,\n },\n },\n {\n path: \"/mv/:id\",\n name: \"mv\",\n component: () => import(\"@/views/mv.vue\"),\n },\n {\n path: \"/next\",\n name: \"next\",\n component: () => import(\"@/views/next.vue\"),\n meta: {\n keepAlive: true,\n },\n },\n {\n path: \"/search/:keywords?\",\n name: \"search\",\n component: () => import(\"@/views/search.vue\"),\n meta: {\n keepAlive: true,\n },\n },\n {\n path: \"/search/:keywords/:type\",\n name: \"searchType\",\n component: () => import(\"@/views/searchType.vue\"),\n },\n {\n path: \"/new-album\",\n name: \"newAlbum\",\n component: () => import(\"@/views/newAlbum.vue\"),\n },\n {\n path: \"/explore\",\n name: \"explore\",\n component: () => import(\"@/views/explore.vue\"),\n meta: {\n keepAlive: true,\n },\n },\n {\n path: \"/library\",\n name: \"library\",\n component: () => import(\"@/views/library.vue\"),\n meta: {\n requireLogin: true,\n keepAlive: true,\n },\n },\n {\n path: \"/library/liked-songs\",\n name: \"likedSongs\",\n component: () => import(\"@/views/playlist.vue\"),\n meta: {\n requireLogin: true,\n },\n },\n {\n path: \"/settings\",\n name: \"settings\",\n component: () => import(\"@/views/settings.vue\"),\n },\n {\n path: \"/daily/songs\",\n name: \"dailySongs\",\n component: () => import(\"@/views/dailyTracks.vue\"),\n },\n {\n path: \"/lastfm/callback\",\n name: \"lastfmCallback\",\n component: () => import(\"@/views/lastfmCallback.vue\"),\n },\n];\nconst router = new VueRouter({\n routes,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition;\n } else {\n return { x: 0, y: 0 };\n }\n },\n});\n\nconst originalPush = VueRouter.prototype.push;\nVueRouter.prototype.push = function push(location) {\n return originalPush.call(this, location).catch((err) => err);\n};\n\nrouter.beforeEach((to, from, next) => {\n // 需要登录的逻辑\n if (to.meta.requireLogin) {\n if (isLooseLoggedIn()) {\n next();\n } else {\n if (process.env.IS_ELECTRON === true) {\n next({ path: \"/login/account\" });\n } else {\n next({ path: \"/login\" });\n }\n }\n } else {\n next();\n }\n});\n\nrouter.afterEach((to) => {\n if (\n to.matched.some((record) => !record.meta.keepAlive) &&\n ![\"settings\", \"dailySongs\", \"lastfmCallback\"].includes(to.name)\n ) {\n NProgress.start();\n }\n});\n\nexport default router;\n","export default {\n common: {\n play: \"PLAY\",\n songs: \"Songs\",\n },\n nav: {\n home: \"Home\",\n explore: \"Explore\",\n library: \"Library\",\n search: \"Search\",\n github: \"GitHub Repo\",\n },\n footer: {\n settings: \"Settings\",\n },\n home: {\n recommendPlaylist: \"Recommended Playlists\",\n recommendArtist: \"Recommended Artists\",\n newAlbum: \"Latest Albums\",\n seeMore: \"SEE MORE\",\n charts: \"Charts\",\n },\n library: {\n sLibrary: \"'s Library\",\n likedSongs: \"Liked Songs\",\n sLikedSongs: \"'s Liked Songs\",\n playlists: \"Playlists\",\n albums: \"Albums\",\n artists: \"Artists\",\n mvs: \"MVs\",\n newPlayList: \"New Playlist\",\n userProfileMenu: {\n settings: \"Settings\",\n logout: \"Logout\",\n },\n },\n explore: {\n explore: \"Explore\",\n loadMore: \"Load More\",\n },\n artist: {\n latestRelease: \"Latest Releases\",\n popularSongs: \"Popular Songs\",\n showMore: \"SHOW MORE\",\n showLess: \"SHOW LESS\",\n EPsSingles: \"EPs & Singles\",\n albums: \"Albums\",\n withAlbums: \"Albums\",\n artist: \"Artist\",\n videos: \"Music Videos\",\n following: \"Following\",\n follow: \"Follow\",\n },\n album: {\n released: \"Released\",\n },\n playlist: {\n playlist: \"Playlists\",\n updatedAt: \"Updated at\",\n search: \"Search in playlist\",\n },\n login: {\n accessToAll: \"Access to all data\",\n loginText: \"Login to Netease\",\n search: \"Search account\",\n readonly: \"Only access to public data\",\n usernameLogin: \"Username Login\",\n searchHolder: \"Your account username\",\n enterTip: \"Press 'enter' to search\",\n choose: \"Choose your account\",\n confirm: \"Confirm\",\n countryCode: \"Country code\",\n phone: \"Phone\",\n email: \"Email address\",\n password: \"Password\",\n login: \"Login\",\n loginWithEmail: \"Login with Email\",\n loginWithPhone: \"Login with Phone\",\n notice: `YesPlayMusic promises not to save any of your account information to the cloud.\n Your password will be MD5 encrypted locally and then transmitted to NetEase Music API.\n YesPlayMusic is not the official website of NetEase Music, please consider carefully before entering account information. You can also go to YesPlayMusic's GitHub repository to build and use the self-hosted NetEase Music API.`,\n noticeElectron: `Your password will be MD5 encrypted locally and then transmitted to NetEase Music API.\n YesPlayMusic promises not to save any of your account information to the cloud.`,\n },\n mv: {\n moreVideo: \"More Videos\",\n },\n next: {\n nowPlaying: \"Now Playing\",\n nextUp: \"Next Up\",\n },\n player: {\n like: \"Like\",\n previous: \"Previous Song\",\n next: \"Next Song\",\n repeat: \"Repeat\",\n repeatTrack: \"Repeat Track\",\n shuffle: \"Shuffle\",\n play: \"Play\",\n pause: \"Pause\",\n mute: \"Mute\",\n nextUp: \"Next Up\",\n },\n modal: {\n close: \"Close\",\n },\n search: {\n artist: \"Artists\",\n album: \"Albums\",\n song: \"Songs\",\n mv: \"Music Videos\",\n playlist: \"Playlists\",\n noResult: \"No Results\",\n searchFor: \"Search for\",\n },\n settings: {\n settings: \"Settings\",\n logout: \"LOGOUT\",\n language: \"Languages\",\n musicQuality: {\n text: \"Music Quality\",\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\",\n lossless: \"Lossless\",\n },\n lyricFontSize: {\n text: \"Lyric Font Size\",\n small: \"Small\",\n medium: \"Medium\",\n large: \"Large(Default)\",\n xlarge: \"X-Large\",\n },\n deviceSelector: \"Audio Output Device\",\n permissionRequired: \"Microphone Permission Required\",\n appearance: {\n text: \"Appearance\",\n auto: \"Auto\",\n light: \"Light\",\n dark: \"Dark\",\n },\n automaticallyCacheSongs: \"Automatically cache songs\",\n clearSongsCache: \"Clear Songs Cache\",\n cacheCount: \"Cached {song} songs ({size})\",\n showLyricsTranslation: \"Show lyrics translation\",\n showLyricsDynamicBackground: \"Show lyrics dynamic background\",\n minimizeToTray: \"Minimize to tray\",\n showGitHubIcon: \"Show GitHub icon\",\n showUnavailableSongInGreyStyle: \"Show unavailable song in grey style\",\n showPlaylistsByAppleMusic: \"Show playlists by Apple Music\",\n enableDiscordRichPresence: \"Enable Discord Rich Presence\",\n enableGlobalShortcut: \"Enable Global Shortcut\",\n },\n contextMenu: {\n play: \"Play\",\n playNext: \"Play Next\",\n saveToMyLikedSongs: \"Save to my Liked Songs\",\n removeFromMyLikedSongs: \"Remove from my Liked Songs\",\n },\n toast: {\n savedToMyLikedSongs: \"Saved to my Liked Songs\",\n removedFromMyLikedSongs: \"Removed from my Liked Songs\",\n },\n};\n","export default {\n common: {\n play: \"播放\",\n songs: \"首歌\",\n },\n nav: {\n home: \"首页\",\n explore: \"发现\",\n library: \"音乐库\",\n search: \"搜索\",\n github: \"GitHub 仓库\",\n },\n home: {\n recommendPlaylist: \"推荐歌单\",\n recommendArtist: \"推荐艺人\",\n newAlbum: \"新专速递\",\n seeMore: \"查看全部\",\n charts: \"排行榜\",\n },\n library: {\n sLibrary: \"的音乐库\",\n likedSongs: \"我喜欢的音乐\",\n sLikedSongs: \"喜欢的音乐\",\n playlists: \"歌单\",\n albums: \"专辑\",\n artists: \"艺人\",\n mvs: \"MV\",\n newPlayList: \"新建歌单\",\n userProfileMenu: {\n settings: \"设置\",\n logout: \"登出\",\n },\n },\n explore: {\n explore: \"发现\",\n loadMore: \"加载更多\",\n },\n artist: {\n latestRelease: \"最新发布\",\n popularSongs: \"热门歌曲\",\n showMore: \"显示更多\",\n showLess: \"收起\",\n EPsSingles: \"EP和单曲\",\n albums: \"专辑\",\n withAlbums: \"张专辑\",\n artist: \"艺人\",\n videos: \"个MV\",\n following: \"已关注\",\n follow: \"关注\",\n },\n album: {\n released: \"发行于\",\n },\n playlist: {\n playlist: \"歌单\",\n updatedAt: \"最后更新于\",\n search: \"搜索歌单音乐\",\n },\n login: {\n accessToAll: \"可访问全部数据\",\n loginText: \"登录网易云账号\",\n search: \"搜索网易云账号\",\n readonly: \"只能读取账号公开数据\",\n usernameLogin: \"用户名登录\",\n searchHolder: \"请输入你的网易云用户名\",\n enterTip: \"按 Enter 搜索\",\n choose: \"在列表中选中你的账号\",\n confirm: \"确认\",\n countryCode: \"国际区号\",\n phone: \"手机号\",\n email: \"邮箱\",\n password: \"密码\",\n login: \"登录\",\n loginWithEmail: \"使用邮箱登录\",\n loginWithPhone: \"使用手机号登录\",\n notice: `YesPlayMusic 承诺不会保存你的任何账号信息到云端。\n 你的密码会在本地进行 MD5 加密后再传输到网易云 API。\n YesPlayMusic 并非网易云官方网站,输入账号信息前请慎重考虑。 你也可以前往\n YesPlayMusic 的 GitHub 源代码仓库\n 自行构建并使用自托管的网易云 API。`,\n noticeElectron: `你的密码会在本地进行 MD5 加密后再传输到网易云 API。\n YesPlayMusic 不会传输你的账号数据到任何非网易云音乐官方的服务器。`,\n },\n mv: {\n moreVideo: \"更多视频\",\n },\n next: {\n nowPlaying: \"正在播放\",\n nextUp: \"即将播放\",\n },\n player: {\n like: \"喜欢\",\n previous: \"上一首\",\n next: \"下一首\",\n repeat: \"循环播放\",\n repeatTrack: \"单曲循环\",\n shuffle: \"随机播放\",\n play: \"播放\",\n pause: \"暂停\",\n mute: \"静音\",\n nextUp: \"播放列表\",\n },\n modal: {\n close: \"关闭\",\n },\n search: {\n artist: \"艺人\",\n album: \"专辑\",\n song: \"歌曲\",\n mv: \"视频\",\n playlist: \"歌单\",\n noResult: \"暂无结果\",\n searchFor: \"搜索\",\n },\n settings: {\n settings: \"设置\",\n logout: \"登出\",\n language: \"语言\",\n musicQuality: {\n text: \"音质选择\",\n low: \"普通\",\n medium: \"较高\",\n high: \"极高\",\n lossless: \"无损\",\n },\n lyricFontSize: {\n text: \"歌词字体大小\",\n small: \"小\",\n medium: \"中\",\n large: \"大(默认)\",\n xlarge: \"超大\",\n },\n deviceSelector: \"音频输出设备\",\n permissionRequired: \"需要麦克风权限\",\n appearance: {\n text: \"外观\",\n auto: \"自动\",\n light: \"浅色\",\n dark: \"深色\",\n },\n automaticallyCacheSongs: \"自动缓存歌曲\",\n clearSongsCache: \"清除歌曲缓存\",\n cacheCount: \"已缓存 {song} 首 ({size})\",\n showLyricsTranslation: \"显示歌词翻译\",\n showLyricsDynamicBackground: \"显示歌词动态背景\",\n minimizeToTray: \"最小化到托盘\",\n showGitHubIcon: \"显示 GitHub 图标\",\n showUnavailableSongInGreyStyle: \"显示不可播放的歌曲为灰色\",\n showPlaylistsByAppleMusic: \"首页显示来自 Apple Music 的歌单\",\n enableDiscordRichPresence: \"启用 Discord Rich Presence\",\n enableGlobalShortcut: \"启用全局快捷键\",\n },\n contextMenu: {\n play: \"播放\",\n playNext: \"下一首播放\",\n saveToMyLikedSongs: \"添加到我喜欢的音乐\",\n removeFromMyLikedSongs: \"从喜欢的音乐中删除\",\n },\n toast: {\n savedToMyLikedSongs: \"已添加到我喜欢的音乐\",\n removedFromMyLikedSongs: \"已从喜欢的音乐中删除\",\n },\n};\n","export default {\n common: {\n play: \"OYNAT\",\n songs: \"Müzikler\",\n },\n nav: {\n home: \"Anasayfa\",\n explore: \"Keşfet\",\n library: \"Kitaplık\",\n search: \"Ara\",\n github: \"GitHub Repo\",\n },\n footer: {\n settings: \"Ayarlar\",\n },\n home: {\n recommendPlaylist: \"Önerilen Çalma Listeier\",\n recommendArtist: \"Önerilen Sanatçılar\",\n newAlbum: \"Son Çıkan Albümler\",\n seeMore: \"DAHA FAZLASI\",\n charts: \"Listeler\",\n },\n library: {\n sLibrary: \"'in Kütüphanesi\",\n likedSongs: \"Beğenilen Müzikler\",\n sLikedSongs: \"'in Beğendiği Müzikler\",\n playlists: \"Çalma Listeleri\",\n albums: \"Albümler\",\n artists: \"Sanatçılar\",\n mvs: \"MVs\",\n newPlayList: \"Yeni Çalma Listesi\",\n userProfileMenu: {\n settings: \"Ayarlar\",\n logout: \"Çıkış Yap\",\n },\n },\n explore: {\n explore: \"Keşfet\",\n loadMore: \"Daha Fazlası\",\n },\n artist: {\n latestRelease: \"Son Çıkanlar\",\n popularSongs: \"Popüler Müzikler\",\n showMore: \"Daha Fazlası\",\n showLess: \"Daha Azı\",\n EPsSingles: \"EPs & Singles\",\n albums: \"Albümler\",\n withAlbums: \"Albümler\",\n artist: \"Sanatçı\",\n videos: \"Müzik Videoları\",\n following: \"Takip Ediyor\",\n follow: \"Takip Et\",\n },\n album: {\n released: \"Yayınlandı\",\n },\n playlist: {\n playlist: \"Çalma Listeleri\",\n updatedAt: \"Tarihinde Güncellendş\",\n search: \"Çalma Listesinde Ara\",\n },\n login: {\n accessToAll: \"Tüm verilere eriş\",\n loginText: \"Netease'e giriş yap\",\n search: \"Hesap ara\",\n readonly: \"Sadece halka açık verilere erişir\",\n usernameLogin: \"Kullanıcı adı giriş\",\n searchHolder: \"Hesabının kullanıcı adı\",\n enterTip: \"Aramak için 'enter'e basınız\",\n choose: \"Hesabını seç\",\n confirm: \"Onayla\",\n countryCode: \"Ülke kodu\",\n phone: \"Telefon\",\n email: \"Email adresi\",\n password: \"Şifre\",\n login: \"Giriş Yap\",\n loginWithEmail: \"Email ile giriş yap\",\n loginWithPhone: \"Phone ile giriş yap\",\n notice: `YesPlayMusic hesabınızın hiçbir bilgisini kaydetmeyeceğine dair söz veriyor\n Şifren MD5 şifreleme ile yerel olarak şifrelenir ve daha sonra NetEase Müzik API'sine gönderilir\n YesPlayMusic, NetEase Music'in resmi websitesi değildir, lütfen hesap bilgilerinizi girmeden önce dikkatlice düşününüz. Aynı zamanda, Kendi NetEase Musix API'nızı host etmek için YesPlayMusic'in GitHub Repo'suna gidebilirsiniz.`,\n noticeElectron: `YesPlayMusic hesabınızın hiçbir bilgisini kaydetmeyeceğine dair söz veriyor\n Şifren MD5 şifreleme ile yerel olarak şifrelenir ve daha sonra NetEase Müzik API'sine gönderilir`,\n },\n mv: {\n moreVideo: \"Daha Fazla Video\",\n },\n next: {\n nowPlaying: \"Şuan çalıyor\",\n nextUp: \"Sıradaki\",\n },\n player: {\n like: \"Beğen\",\n previous: \"Önceki Müzik\",\n next: \"Sonraki Müzik\",\n repeat: \"Tekrarla\",\n repeatTrack: \"Parçayı Tekrarla\",\n shuffle: \"Karıştır\",\n play: \"Oynat\",\n pause: \"Durdur\",\n mute: \"Sesi kapat\",\n nextUp: \"Sıradaki\",\n },\n modal: {\n close: \"Kapat\",\n },\n search: {\n artist: \"Sanatçılar\",\n album: \"Albümler\",\n song: \"Müzikler\",\n mv: \"Müzik Videoları\",\n playlist: \"Çalma Listeleri\",\n noResult: \"Sonuç Bulunamadı\",\n searchFor: \"Search for\",\n },\n settings: {\n settings: \"Ayarlar\",\n logout: \"ÇIKIŞ YAP\",\n language: \"Diller\",\n musicQuality: {\n text: \"Müzik Kalitesi\",\n low: \"Düşük\",\n medium: \"Orta\",\n high: \"Yüksek\",\n lossless: \"Kaliteli\",\n },\n lyricFontSize: {\n text: \"Şarkı Sözleri Yazı Boyutu\",\n small: \"Küçük\",\n medium: \"Orta\",\n large: \"Büyük(Varsayılan)\",\n xlarge: \"Çok-Büyük\",\n },\n deviceSelector: \"Ses Çıkış Cihazı\",\n permissionRequired: \"Mikrofon izni gerekiyor\",\n appearance: {\n text: \"Görünüş\",\n auto: \"Otomatik\",\n light: \"Aydınlık\",\n dark: \"Karanlık\",\n },\n automaticallyCacheSongs: \"Müzikleri otomatik çerezle\",\n clearSongsCache: \"Müzik çerezlerini temizle\",\n cacheCount: \"Çerezlenen {song} Müzikler ({size})\",\n showLyricsTranslation: \"Müzik sözlerinin çevirilerini göster\",\n showLyricsDynamicBackground: \"Dinamik arkaplanda müzik sözlerini gsöter\",\n minimizeToTray: \"Küçült\",\n showGitHubIcon: \"GitHub ikonunu göster\",\n showUnavailableSongInGreyStyle: \"Erişilemeyen müzikleri gri stilde göster\",\n showPlaylistsByAppleMusic: \"Apple Music'in Çalma Listelerini Göster\",\n enableDiscordRichPresence: \"Discord gösterimini aktifleştir\",\n },\n contextMenu: {\n play: \"Oynat\",\n playNext: \"Sonrakini Oynat\",\n saveToMyLikedSongs: \"Beğendiğim Müziklere Kaydet\",\n removeFromMyLikedMüzikler: \"Beğendiğim Müziklerden Kaldır\",\n },\n toast: {\n savedToMyLikedSongs: \"Beğendiğim Müziklere Kaydet\",\n removedFromMyLikedSongs: \"Beğendiğim Müziklerden Kaldır\",\n },\n};\n","import Vue from \"vue\";\nimport VueI18n from \"vue-i18n\";\nimport store from \"@/store\";\n\nimport en from \"./lang/en.js\";\nimport zhCN from \"./lang/zh-CN.js\";\nimport tr from \"./lang/tr.js\";\n\nVue.use(VueI18n);\n\nconst i18n = new VueI18n({\n locale: store.state.settings.lang,\n messages: {\n en,\n \"zh-CN\": zhCN,\n tr,\n },\n silentTranslationWarn: true,\n});\n\nexport default i18n;\n","import Vue from \"vue\";\nimport SvgIcon from \"@/components/SvgIcon\";\n\nVue.component(\"svg-icon\", SvgIcon);\nconst requireAll = (requireContext) =>\n requireContext.keys().map(requireContext);\nconst req = require.context(\"./\", true, /\\.svg$/);\nrequireAll(req);\n","import Vue from \"vue\";\nimport dayjs from \"dayjs\";\nimport duration from \"dayjs/plugin/duration\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\nimport locale from \"@/locale\";\n\nVue.filter(\"formatTime\", (Milliseconds, format = \"HH:MM:SS\") => {\n if (!Milliseconds) return \"\";\n dayjs.extend(duration);\n dayjs.extend(relativeTime);\n\n let time = dayjs.duration(Milliseconds);\n let hours = time.hours().toString();\n let mins = time.minutes().toString();\n let seconds = time.seconds().toString().padStart(2, \"0\");\n\n if (format === \"HH:MM:SS\") {\n return hours !== \"0\"\n ? `${hours}:${mins.padStart(2, \"0\")}:${seconds}`\n : `${mins}:${seconds}`;\n } else if (format === \"Human\") {\n const hoursUnit = locale.locale === \"zh-CN\" ? \"小时\" : \"hr\";\n const minitesUnit = locale.locale === \"zh-CN\" ? \"分钟\" : \"min\";\n return hours !== \"0\"\n ? `${hours} ${hoursUnit} ${mins} ${minitesUnit}`\n : `${mins} ${minitesUnit}`;\n }\n});\n\nVue.filter(\"formatDate\", (timestamp, format = \"MMM D, YYYY\") => {\n if (!timestamp) return \"\";\n if (locale.locale === \"zh-CN\") format = \"YYYY年MM月DD日\";\n return dayjs(timestamp).format(format);\n});\n\nVue.filter(\"formatAlbumType\", (type, album) => {\n if (!type) return \"\";\n if (type === \"EP/Single\") {\n return album.size === 1 ? \"Single\" : \"EP\";\n } else if (type === \"Single\") {\n return \"Single\";\n } else if (type === \"专辑\") {\n return \"Album\";\n } else {\n return type;\n }\n});\n\nVue.filter(\"resizeImage\", (imgUrl, size = 512) => {\n if (!imgUrl) return \"\";\n let httpsImgUrl = imgUrl;\n if (imgUrl.slice(0, 5) !== \"https\") {\n httpsImgUrl = \"https\" + imgUrl.slice(4);\n }\n return `${httpsImgUrl}?param=${size}y${size}`;\n});\n\nVue.filter(\"formatPlayCount\", (count) => {\n if (!count) return \"\";\n if (locale.locale === \"zh-CN\") {\n if (count > 100000000) {\n return `${Math.floor((count / 100000000) * 100) / 100}亿`; // 2.32 亿\n }\n if (count > 100000) {\n return `${Math.floor((count / 10000) * 10) / 10}万`; // 232.1 万\n }\n if (count > 10000) {\n return `${Math.floor((count / 10000) * 100) / 100}万`; // 2.3 万\n }\n return count;\n } else {\n if (count > 10000000) {\n return `${Math.floor((count / 1000000) * 10) / 10}M`; // 233.2M\n }\n if (count > 1000000) {\n return `${Math.floor((count / 1000000) * 100) / 100}M`; // 2.3M\n }\n if (count > 1000) {\n return `${Math.floor((count / 1000) * 100) / 100}K`; // 233.23K\n }\n return count;\n }\n});\n\nVue.filter(\"toHttps\", (url) => {\n if (!url) return \"\";\n return url.replace(/^http:/, \"https:\");\n});\n","/* eslint-disable no-console */\n\nimport { register } from \"register-service-worker\";\n\nregister(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n // console.log(\n // \"App is being served from cache by a service worker.\\n\" +\n // \"For more details, visit https://goo.gl/AFskqB\"\n // );\n },\n registered() {\n // console.log(\"Service worker has been registered.\");\n },\n cached() {\n // console.log(\"Content has been cached for offline use.\");\n },\n updatefound() {\n // console.log(\"New content is downloading.\");\n },\n updated() {\n // console.log(\"New content is available; please refresh.\");\n },\n offline() {\n // console.log(\n // \"No internet connection found. App is running in offline mode.\"\n // );\n },\n error(error) {\n console.error(\"Error during service worker registration:\", error);\n },\n});\n","import Vue from \"vue\";\nimport VueAnalytics from \"vue-analytics\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport store from \"./store\";\nimport i18n from \"@/locale\";\nimport \"@/assets/icons\";\nimport \"@/utils/filters\";\nimport \"./registerServiceWorker\";\nimport { dailyTask } from \"@/utils/common\";\n\nimport * as Sentry from \"@sentry/browser\";\nimport { Vue as VueIntegration } from \"@sentry/integrations\";\nimport { Integrations } from \"@sentry/tracing\";\n\nVue.use(VueAnalytics, {\n id: \"UA-180189423-1\",\n router,\n});\n\nVue.config.productionTip = false;\n\nif (process.env.VUE_APP_ENABLE_SENTRY === \"true\") {\n Sentry.init({\n dsn:\n \"https://30aaa25152974f48971912a394ab6bc3@o436528.ingest.sentry.io/5477409\",\n integrations: [\n new VueIntegration({\n Vue,\n tracing: true,\n }),\n new Integrations.BrowserTracing(),\n ],\n\n // We recommend adjusting this value in production, or using tracesSampler\n // for finer control\n tracesSampleRate: 1.0,\n });\n}\n\ndailyTask();\n\nnew Vue({\n i18n,\n store,\n router,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import Cookies from \"js-cookie\";\nimport { logout } from \"@/api/auth\";\nimport store from \"@/store\";\n\nexport function doLogout() {\n logout();\n // 网易云的接口会自动移除该 cookies\n // Cookies.remove(\"MUSIC_U\");\n // 更新状态仓库中的用户信息\n store.commit(\"updateData\", { key: \"user\", value: {} });\n // 更新状态仓库中的登录状态\n store.commit(\"updateData\", { key: \"loginMode\", value: null });\n}\n\n// MUSIC_U 只有在账户登录的情况下才有\nexport function isLoggedIn() {\n return Cookies.get(\"MUSIC_U\") !== undefined ? true : false;\n}\n\n// 账号登录\nexport function isAccountLoggedIn() {\n return (\n Cookies.get(\"MUSIC_U\") !== undefined &&\n store.state.data.loginMode === \"account\"\n );\n}\n\n// 用户名搜索(用户数据为只读)\nexport function isUsernameLoggedIn() {\n return store.state.data.loginMode === \"username\";\n}\n\n// 账户登录或者用户名搜索都判断为登录,宽松检查\nexport function isLooseLoggedIn() {\n return isAccountLoggedIn() || isUsernameLoggedIn();\n}\n\nexport function getMusicU(string) {\n const temp = string.split(\";\");\n if (!temp.length) {\n return undefined;\n }\n const MUSIC_U = temp.find((item) => item.includes(\"MUSIC_U\"));\n if (MUSIC_U) {\n return MUSIC_U.split(\"=\")[1];\n }\n return \"\";\n}\n\nexport function setMusicU(key, value) {\n return Cookies.set(key, value);\n}\n\nexport function setCookies(string) {\n const cookies = string.split(\";;\");\n cookies.map((cookie) => {\n document.cookie = cookie;\n console.log(cookie);\n });\n}\n","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-pause\",\n \"use\": \"icon-pause-usage\",\n \"viewBox\": \"0 0 448 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"contextMenu\",staticClass:\"context-menu\"},[(_vm.showMenu)?_c('div',{ref:\"menu\",staticClass:\"menu\",style:({ top: _vm.top, left: _vm.left }),attrs:{\"tabindex\":\"-1\"},on:{\"blur\":_vm.closeMenu,\"click\":_vm.closeMenu}},[_vm._t(\"default\")],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContextMenu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContextMenu.vue?vue&type=template&id=7674b787&scoped=true&\"\nimport script from \"./ContextMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./ContextMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContextMenu.vue?vue&type=style&index=0&id=7674b787&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7674b787\",\n null\n \n)\n\nexport default component.exports","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-logout\",\n \"use\": \"icon-logout-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-volume-mute\",\n \"use\": \"icon-volume-mute-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show),expression:\"show\"}],staticClass:\"shade\",on:{\"click\":_vm.clickOutside}},[_c('div',{staticClass:\"modal\",style:(_vm.modalStyles),on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"header\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))]),_c('button',{staticClass:\"close\",on:{\"click\":_vm.close}},[_c('svg-icon',{attrs:{\"icon-class\":\"x\"}})],1)]),_c('div',{staticClass:\"content\"},[_vm._t(\"default\")],2),(_vm.showFooter)?_c('div',{staticClass:\"footer\"},[_vm._t(\"footer\")],2):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n {{ title }}\n \n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--11-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Modal.vue?vue&type=template&id=c5288a46&scoped=true&\"\nimport script from \"./Modal.vue?vue&type=script&lang=js&\"\nexport * from \"./Modal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Modal.vue?vue&type=style&index=0&id=c5288a46&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c5288a46\",\n null\n \n)\n\nexport default component.exports","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-x\",\n \"use\": \"icon-x-usage\",\n \"viewBox\": \"0 0 352 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// Last.fm API documents 👉 https://www.last.fm/api\n\nimport axios from \"axios\";\nimport md5 from \"crypto-js/md5\";\n\nconst apiKey = process.env.VUE_APP_LASTFM_API_KEY;\nconst apiSharedSecret = process.env.VUE_APP_LASTFM_API_SHARED_SECRET;\nconst baseUrl = window.location.origin;\nconst url = \"https://ws.audioscrobbler.com/2.0/\";\n\nconst sign = (params) => {\n const sortParamsKeys = Object.keys(params).sort();\n const sortedParams = sortParamsKeys.reduce((acc, key) => {\n acc[key] = params[key];\n return acc;\n }, {});\n let signature = \"\";\n for (const [key, value] of Object.entries(sortedParams)) {\n signature += `${key}${value}`;\n }\n return md5(signature + apiSharedSecret).toString();\n};\n\nexport function auth() {\n window.open(\n `https://www.last.fm/api/auth/?api_key=${apiKey}&cb=${baseUrl}/#/lastfm/callback`\n );\n}\n\nexport function authGetSession(token) {\n const signature = md5(\n `api_key${apiKey}methodauth.getSessiontoken${token}${apiSharedSecret}`\n ).toString();\n return axios({\n url,\n method: \"GET\",\n params: {\n method: \"auth.getSession\",\n format: \"json\",\n api_key: apiKey,\n api_sig: signature,\n token,\n },\n });\n}\n\nexport function trackUpdateNowPlaying(params) {\n params.api_key = apiKey;\n params.method = \"track.updateNowPlaying\";\n params.sk = JSON.parse(localStorage.getItem(\"lastfm\"))[\"key\"];\n const signature = sign(params);\n\n return axios({\n url,\n method: \"POST\",\n params: {\n ...params,\n api_sig: signature,\n format: \"json\",\n },\n });\n}\n\nexport function trackScrobble(params) {\n params.api_key = apiKey;\n params.method = \"track.scrobble\";\n params.sk = JSON.parse(localStorage.getItem(\"lastfm\"))[\"key\"];\n const signature = sign(params);\n\n return axios({\n url,\n method: \"POST\",\n params: {\n ...params,\n api_sig: signature,\n format: \"json\",\n },\n });\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./lyrics.vue?vue&type=style&index=0&id=5d57e27d&lang=scss&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-heart\",\n \"use\": \"icon-heart-usage\",\n \"viewBox\": \"0 0 30 30\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-expand\",\n \"use\": \"icon-expand-usage\",\n \"viewBox\": \"0 0 448 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-volume\",\n \"use\": \"icon-volume-usage\",\n \"viewBox\": \"0 0 480 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-settings\",\n \"use\": \"icon-settings-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-lock\",\n \"use\": \"icon-lock-usage\",\n \"viewBox\": \"0 0 448 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-fm\",\n \"use\": \"icon-fm-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-list\",\n \"use\": \"icon-list-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-thumbs-down\",\n \"use\": \"icon-thumbs-down-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=05b2c7d8&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toast.vue?vue&type=style&index=0&id=ec2cc052&lang=scss&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-arrow-up\",\n \"use\": \"icon-arrow-up-usage\",\n \"viewBox\": \"0 0 32 32\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-lyrics\",\n \"use\": \"icon-lyrics-usage\",\n \"viewBox\": \"0 0 30 30\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-arrow-left\",\n \"use\": \"icon-arrow-left-usage\",\n \"viewBox\": \"0 0 256 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-circle\",\n \"use\": \"icon-circle-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var map = {\n\t\"./arrow-down.svg\": \"c874\",\n\t\"./arrow-left.svg\": \"ac3b\",\n\t\"./arrow-right.svg\": \"cd8c\",\n\t\"./arrow-up.svg\": \"a3f8\",\n\t\"./circle.svg\": \"b289\",\n\t\"./expand.svg\": \"8336\",\n\t\"./explicit.svg\": \"12b7\",\n\t\"./fm.svg\": \"970f\",\n\t\"./github.svg\": \"14f6\",\n\t\"./heart-solid.svg\": \"b877\",\n\t\"./heart.svg\": \"7d16\",\n\t\"./list.svg\": \"99ad\",\n\t\"./lock.svg\": \"9619\",\n\t\"./login.svg\": \"ca2f\",\n\t\"./logout.svg\": \"69e3\",\n\t\"./lyrics.svg\": \"aaad\",\n\t\"./mail.svg\": \"3ae9\",\n\t\"./mobile.svg\": \"0df4\",\n\t\"./more.svg\": \"0f4c\",\n\t\"./next.svg\": \"0043\",\n\t\"./pause.svg\": \"644b\",\n\t\"./play.svg\": \"dab1\",\n\t\"./plus.svg\": \"eb38\",\n\t\"./previous.svg\": \"01ed\",\n\t\"./repeat-1.svg\": \"eca5\",\n\t\"./repeat.svg\": \"c015\",\n\t\"./search.svg\": \"d103\",\n\t\"./settings.svg\": \"9174\",\n\t\"./shuffle.svg\": \"00e6\",\n\t\"./thumbs-down.svg\": \"9a65\",\n\t\"./translation.svg\": \"ec3b\",\n\t\"./volume-half.svg\": \"27c2\",\n\t\"./volume-mute.svg\": \"6a7b\",\n\t\"./volume.svg\": \"8901\",\n\t\"./x.svg\": \"7387\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"b422\";","import axios from \"axios\";\nimport Cookies from \"js-cookie\";\n\nlet baseURL = \"\";\n// Web 和 Electron 跑在不同端口避免同时启动时冲突\nif (process.env.IS_ELECTRON) {\n if (process.env.NODE_ENV === \"production\") {\n baseURL = process.env.VUE_APP_ELECTRON_API_URL;\n } else {\n baseURL = process.env.VUE_APP_ELECTRON_API_URL_DEV;\n }\n} else {\n baseURL = process.env.VUE_APP_NETEASE_API_URL;\n}\n\nconst service = axios.create({\n baseURL,\n withCredentials: true,\n timeout: 15000,\n});\n\nservice.interceptors.request.use(function (config) {\n if (!config.params) config.params = {};\n if (baseURL[0] !== \"/\") {\n config.params.cookie = `MUSIC_U=${Cookies.get(\"MUSIC_U\")};`;\n }\n return config;\n});\n\nservice.interceptors.response.use(\n (response) => {\n const res = response.data;\n return res;\n },\n (error) => {\n const errMsg = `error: ${error}`;\n console.log(errMsg);\n\n return Promise.reject(error);\n }\n);\n\nexport default service;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Player.vue?vue&type=style&index=0&id=210bc1fc&lang=scss&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-heart-solid\",\n \"use\": \"icon-heart-solid-usage\",\n \"viewBox\": \"0 0 30 30\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-repeat\",\n \"use\": \"icon-repeat-usage\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import request from \"@/utils/request\";\n\n/**\n * 获取用户详情\n * 说明 : 登录后调用此接口 , 传入用户 id, 可以获取用户详情\n * - uid : 用户 id\n * @param {number} uid\n */\nexport function userDetail(uid) {\n return request({\n url: \"/user/detail\",\n method: \"get\",\n params: {\n uid,\n },\n });\n}\n\n/**\n * 获取账号详情\n * 说明 : 登录后调用此接口 ,可获取用户账号信息\n */\nexport function userAccount() {\n return request({\n url: \"/user/account\",\n method: \"get\",\n params: {\n timestamp: new Date().getTime(),\n },\n });\n}\n\n/**\n * 获取用户歌单\n * 说明 : 登录后调用此接口 , 传入用户 id, 可以获取用户歌单\n * - uid : 用户 id\n * - limit : 返回数量 , 默认为 30\n * - offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0\n * @param {Object} params\n * @param {number} params.uid\n * @param {number} params.limit\n * @param {number=} params.offset\n */\nexport function userPlaylist(params) {\n return request({\n url: \"/user/playlist\",\n method: \"get\",\n params,\n });\n}\n\n/**\n * 喜欢音乐列表(需要登录)\n * 说明 : 调用此接口 , 传入用户 id, 可获取已喜欢音乐id列表(id数组)\n * - uid: 用户 id\n * @param {number} uid\n */\nexport function userLikedSongsIDs(uid) {\n return request({\n url: \"/likelist\",\n method: \"get\",\n params: {\n uid,\n timestamp: new Date().getTime(),\n },\n });\n}\n\n/**\n * 每日签到\n * 说明 : 调用此接口可签到获取积分\n * - type: 签到类型 , 默认 0, 其中 0 为安卓端签到 ,1 为 web/PC 签到\n * @param {number} type\n */\nexport function dailySignin(type = 0) {\n return request({\n url: \"/daily_signin\",\n method: \"post\",\n params: {\n type,\n timestamp: new Date().getTime(),\n },\n });\n}\n\n/**\n * 获取收藏的专辑(需要登录)\n * 说明 : 调用此接口可获取到用户收藏的专辑\n * - limit : 返回数量 , 默认为 30\n * - offset : 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0\n * @param {Object} params\n * @param {number} params.limit\n * @param {number=} params.offset\n */\nexport function likedAlbums() {\n return request({\n url: \"/album/sublist\",\n method: \"get\",\n params: {\n timestamp: new Date().getTime(),\n },\n });\n}\n\n/**\n * 获取收藏的歌手(需要登录)\n * 说明 : 调用此接口可获取到用户收藏的歌手\n */\nexport function likedArtists() {\n return request({\n url: \"/artist/sublist\",\n method: \"get\",\n params: {\n timestamp: new Date().getTime(),\n },\n });\n}\n\n/**\n * 获取收藏的MV(需要登录)\n * 说明 : 调用此接口可获取到用户收藏的MV\n */\nexport function likedMVs() {\n return request({\n url: \"/mv/sublist\",\n method: \"get\",\n params: {\n timestamp: new Date().getTime(),\n },\n });\n}\n","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-arrow-down\",\n \"use\": \"icon-arrow-down-usage\",\n \"viewBox\": \"0 0 32 32\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-login\",\n \"use\": \"icon-login-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-arrow-right\",\n \"use\": \"icon-arrow-right-usage\",\n \"viewBox\": \"0 0 256 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import { isAccountLoggedIn } from \"./auth\";\nimport { refreshCookie } from \"@/api/auth\";\nimport { dailySignin } from \"@/api/user\";\nimport dayjs from \"dayjs\";\nimport store from \"@/store\";\n\nexport function isTrackPlayable(track) {\n let result = {\n playable: true,\n reason: \"\",\n };\n // cloud storage judgement logic\n if (isAccountLoggedIn() && track?.privilege?.cs) {\n return result;\n }\n if (track.fee === 1 || track.privilege?.fee === 1) {\n if (isAccountLoggedIn() && store.state.data.user.vipType === 11) {\n result.playable = true;\n } else {\n result.playable = false;\n result.reason = \"VIP Only\";\n }\n } else if (track.fee === 4 || track.privilege?.fee === 4) {\n result.playable = false;\n result.reason = \"付费专辑\";\n } else if (\n track.noCopyrightRcmd !== null &&\n track.noCopyrightRcmd !== undefined\n ) {\n result.playable = false;\n result.reason = \"无版权\";\n } else if (track.privilege?.st < 0 && isAccountLoggedIn()) {\n result.playable = false;\n result.reason = \"已下架\";\n }\n return result;\n}\n\nexport function mapTrackPlayableStatus(tracks, privileges = []) {\n return tracks.map((t) => {\n const privilege = privileges.find((item) => item.id === t.id) || {};\n if (t.privilege) {\n Object.assign(t.privilege, privilege);\n } else {\n t.privilege = privilege;\n }\n let result = isTrackPlayable(t);\n t.playable = result.playable;\n t.reason = result.reason;\n return t;\n });\n}\n\nexport function randomNum(minNum, maxNum) {\n switch (arguments.length) {\n case 1:\n return parseInt(Math.random() * minNum + 1, 10);\n case 2:\n return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);\n default:\n return 0;\n }\n}\n\nexport function shuffleAList(list) {\n let sortsList = list.map((t) => t.sort);\n for (let i = 1; i < sortsList.length; i++) {\n const random = Math.floor(Math.random() * (i + 1));\n [sortsList[i], sortsList[random]] = [sortsList[random], sortsList[i]];\n }\n let newSorts = {};\n list.map((track) => {\n newSorts[track.id] = sortsList.pop();\n });\n return newSorts;\n}\n\nexport function throttle(fn, time) {\n let isRun = false;\n return function () {\n if (isRun) return;\n isRun = true;\n fn.apply(this, arguments);\n setTimeout(() => {\n isRun = false;\n }, time);\n };\n}\n\nexport function updateHttps(url) {\n if (!url) return \"\";\n return url.replace(/^http:/, \"https:\");\n}\n\nexport function dailyTask() {\n let lastDate = store.state.data.lastRefreshCookieDate;\n if (\n isAccountLoggedIn() &&\n (lastDate === undefined || lastDate !== dayjs().date())\n ) {\n console.log(\"execute dailyTask\");\n store.commit(\"updateData\", {\n key: \"lastRefreshCookieDate\",\n value: dayjs().date(),\n });\n refreshCookie();\n dailySignin(0);\n dailySignin(1);\n }\n}\n\nexport function changeAppearance(appearance) {\n if (appearance === \"auto\" || appearance === undefined) {\n appearance = window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n }\n document.body.setAttribute(\"data-theme\", appearance);\n document\n .querySelector('meta[name=\"theme-color\"]')\n .setAttribute(\"content\", appearance === \"dark\" ? \"#222\" : \"#fff\");\n}\n\nexport function splitSoundtrackAlbumTitle(title) {\n let keywords = [\n \"Music from the Original Motion Picture Score\",\n \"The Original Motion Picture Soundtrack\",\n \"Original MGM Motion Picture Soundtrack\",\n \"Complete Original Motion Picture Score\",\n \"Original Music From The Motion Picture\",\n \"Music From The Disney+ Original Movie\",\n \"Original Music From The Netflix Film\",\n \"Original Score to the Motion Picture\",\n \"Original Motion Picture Soundtrack\",\n \"Soundtrack from the Motion Picture\",\n \"Original Television Soundtrack\",\n \"Original Motion Picture Score\",\n \"Music From the Motion Picture\",\n \"Music From The Motion Picture\",\n \"Complete Motion Picture Score\",\n \"Music from the Motion Picture\",\n \"Original Videogame Soundtrack\",\n \"La Bande Originale du Film\",\n \"Music from the Miniseries\",\n \"Bande Originale du Film\",\n \"Die Original Filmmusik\",\n \"Original Soundtrack\",\n \"Complete Score\",\n \"Original Score\",\n ];\n for (let keyword of keywords) {\n if (title.includes(keyword) === false) continue;\n return {\n title: title\n .replace(`(${keyword})`, \"\")\n .replace(`: ${keyword}`, \"\")\n .replace(`[${keyword}]`, \"\")\n .replace(`- ${keyword}`, \"\")\n .replace(`${keyword}`, \"\"),\n subtitle: keyword,\n };\n }\n return {\n title: title,\n subtitle: \"\",\n };\n}\n\nexport function splitAlbumTitle(title) {\n let keywords = [\n \"Bonus Tracks Edition\",\n \"Complete Edition\",\n \"Deluxe Edition\",\n \"Deluxe Version\",\n \"Tour Edition\",\n ];\n for (let keyword of keywords) {\n if (title.includes(keyword) === false) continue;\n return {\n title: title\n .replace(`(${keyword})`, \"\")\n .replace(`: ${keyword}`, \"\")\n .replace(`[${keyword}]`, \"\")\n .replace(`- ${keyword}`, \"\")\n .replace(`${keyword}`, \"\"),\n subtitle: keyword,\n };\n }\n return {\n title: title,\n subtitle: \"\",\n };\n}\n\nexport function bytesToSize(bytes) {\n let marker = 1024; // Change to 1000 if required\n let decimal = 2; // Change as required\n let kiloBytes = marker;\n let megaBytes = marker * marker;\n let gigaBytes = marker * marker * marker;\n\n let lang = store.state.settings.lang;\n\n if (bytes < kiloBytes) return bytes + (lang === \"en\" ? \" Bytes\" : \"字节\");\n else if (bytes < megaBytes)\n return (bytes / kiloBytes).toFixed(decimal) + \" KB\";\n else if (bytes < gigaBytes)\n return (bytes / megaBytes).toFixed(decimal) + \" MB\";\n else return (bytes / gigaBytes).toFixed(decimal) + \" GB\";\n}\n\nexport function formatTrackTime(value) {\n if (!value) return \"\";\n let min = ~~((value / 60) % 60);\n let sec = (~~(value % 60)).toString().padStart(2, \"0\");\n return `${min}:${sec}`;\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ButtonIcon.vue?vue&type=style&index=0&id=7ceaf348&lang=scss&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-search\",\n \"use\": \"icon-search-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalNewPlaylist.vue?vue&type=style&index=0&id=109c1e54&lang=scss&scoped=true&\"","export const byAppleMusic = [\n {\n coverImgUrl:\n \"https://p2.music.126.net/GvYQoflE99eoeGi9jG4Bsw==/109951165375336156.jpg\",\n name: \"Happy Hits\",\n id: 5278068783,\n },\n {\n coverImgUrl:\n \"https://p2.music.126.net/5CJeYN35LnzRDsv5Lcs0-Q==/109951165374966765.jpg\",\n name: \"\\u4e2d\\u563b\\u5408\\u74a7\",\n id: 5277771961,\n },\n\n {\n coverImgUrl:\n \"https://p1.music.126.net/cPaBXr1wZSg86ddl47AK7Q==/109951165375130918.jpg\",\n name: \"Heartbreak Pop\",\n id: 5277965913,\n },\n {\n coverImgUrl:\n \"https://p2.music.126.net/FDtX55P2NjccDna-LBj9PA==/109951165375065973.jpg\",\n name: \"Festival Bangers\",\n id: 5277969451,\n },\n {\n coverImgUrl:\n \"https://p2.music.126.net/hC0q2dGbOWHVfg4nkhIXPg==/109951165374881177.jpg\",\n name: \"Bedtime Beats\",\n id: 5277778542,\n },\n];\n\nexport const playlistCategories = [\n {\n name: \"全部\",\n enable: true,\n bigCat: \"static\",\n },\n {\n name: \"推荐歌单\",\n enable: true,\n bigCat: \"static\",\n },\n // {\n // name: \"最新专辑\",\n // enable: false,\n // bigCat: \"static\",\n // },\n {\n name: \"精品歌单\",\n enable: true,\n bigCat: \"static\",\n },\n {\n name: \"官方\",\n enable: true,\n bigCat: \"static\",\n },\n {\n name: \"排行榜\",\n enable: true,\n bigCat: \"static\",\n },\n {\n name: \"华语\",\n enable: false,\n bigCat: \"语种\",\n },\n {\n name: \"欧美\",\n enable: true,\n bigCat: \"语种\",\n },\n {\n name: \"日语\",\n enable: false,\n bigCat: \"语种\",\n },\n {\n name: \"韩语\",\n enable: false,\n bigCat: \"语种\",\n },\n {\n name: \"粤语\",\n enable: false,\n bigCat: \"语种\",\n },\n {\n name: \"流行\",\n enable: true,\n bigCat: \"风格\",\n },\n {\n name: \"摇滚\",\n enable: true,\n bigCat: \"风格\",\n },\n {\n name: \"民谣\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"电子\",\n enable: true,\n bigCat: \"风格\",\n },\n {\n name: \"舞曲\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"说唱\",\n enable: true,\n bigCat: \"风格\",\n },\n {\n name: \"轻音乐\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"爵士\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"乡村\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"R&B/Soul\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"古典\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"民族\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"英伦\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"金属\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"朋克\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"蓝调\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"雷鬼\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"世界音乐\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"拉丁\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"New Age\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"古风\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"后摇\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"Bossa Nova\",\n enable: false,\n bigCat: \"风格\",\n },\n {\n name: \"清晨\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"夜晚\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"学习\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"工作\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"午休\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"下午茶\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"地铁\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"驾车\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"运动\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"旅行\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"散步\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"酒吧\",\n enable: false,\n bigCat: \"场景\",\n },\n {\n name: \"怀旧\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"清新\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"浪漫\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"伤感\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"治愈\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"放松\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"孤独\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"感动\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"兴奋\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"快乐\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"安静\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"思念\",\n enable: false,\n bigCat: \"情感\",\n },\n {\n name: \"综艺\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"影视原声\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"ACG\",\n enable: true,\n bigCat: \"主题\",\n },\n {\n name: \"儿童\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"校园\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"游戏\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"70后\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"80后\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"90后\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"网络歌曲\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"KTV\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"经典\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"翻唱\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"吉他\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"钢琴\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"器乐\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"榜单\",\n enable: false,\n bigCat: \"主题\",\n },\n {\n name: \"00后\",\n enable: false,\n bigCat: \"主题\",\n },\n];\n","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-play\",\n \"use\": \"icon-play-usage\",\n \"viewBox\": \"0 0 448 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import request from \"@/utils/request\";\nimport { mapTrackPlayableStatus } from \"@/utils/common\";\n\n/**\n * 搜索\n * 说明 : 调用此接口 , 传入搜索关键词可以搜索该音乐 / 专辑 / 歌手 / 歌单 / 用户 , 关键词可以多个 , 以空格隔开 ,\n * 如 \" 周杰伦 搁浅 \"( 不需要登录 ), 搜索获取的 mp3url 不能直接用 , 可通过 /song/url 接口传入歌曲 id 获取具体的播放链接\n * - keywords : 关键词\n * - limit : 返回数量 , 默认为 30\n * - offset : 偏移数量,用于分页 , 如 : 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0\n * - type: 搜索类型;默认为 1 即单曲 , 取值意义 : 1: 单曲, 10: 专辑, 100: 歌手, 1000: 歌单, 1002: 用户, 1004: MV, 1006: 歌词, 1009: 电台, 1014: 视频, 1018:综合\n * - 调用例子 : /search?keywords=海阔天空 /cloudsearch?keywords=海阔天空(更全)\n * @param {Object} params\n * @param {string} params.keywords\n * @param {number=} params.limit\n * @param {number=} params.offset\n * @param {number=} params.type\n */\nexport function search(params) {\n return request({\n url: \"/search\",\n method: \"get\",\n params,\n }).then((data) => {\n if (data.result?.song !== undefined)\n data.result.song.songs = mapTrackPlayableStatus(data.result.song.songs);\n return data;\n });\n}\n\nexport function personalFM() {\n return request({\n url: \"/personal_fm\",\n method: \"get\",\n params: {\n timestamp: new Date().getTime(),\n },\n });\n}\n\nexport function fmTrash(id) {\n return request({\n url: \"/fm_trash\",\n method: \"post\",\n params: {\n timestamp: new Date().getTime(),\n id,\n },\n });\n}\n","import axios from \"axios\";\nimport Dexie from \"dexie\";\n// import pkg from \"../../package.json\";\n\nconst db = new Dexie(\"yesplaymusic\");\ndb.version(1).stores({\n trackSources: \"&id\",\n});\n\nexport function cacheTrackSource(trackInfo, url, bitRate, from = \"netease\") {\n const name = trackInfo.name;\n const artist = trackInfo.ar[0]?.name || trackInfo.artists[0]?.name;\n return axios\n .get(url, {\n responseType: \"arraybuffer\",\n })\n .then((response) => {\n db.trackSources.put({\n id: trackInfo.id,\n source: response.data,\n bitRate,\n from,\n name,\n artist,\n });\n console.debug(`[debug][db.js] cached track 👉 ${name} by ${artist}`);\n return { trackID: trackInfo.id, source: response.data, bitRate };\n });\n}\n\nexport function getTrackSource(id) {\n return db.trackSources.get(Number(id)).then((track) => {\n if (!track) return null;\n console.debug(\n `[debug][db.js] get track from cache 👉 ${track.name} by ${track.artist}`\n );\n return track;\n });\n}\n\nexport function countDBSize() {\n let trackSizes = [];\n return db.trackSources\n .each((track) => {\n trackSizes.push(track.source.byteLength);\n })\n .then(() => {\n return {\n bytes: trackSizes.reduce((s1, s2) => s1 + s2, 0),\n length: trackSizes.length,\n };\n });\n}\n\nexport function clearDB() {\n return new Promise((resolve) => {\n db.tables.forEach(function (table) {\n table.clear();\n });\n resolve();\n });\n}\n","import request from \"@/utils/request\";\nimport { mapTrackPlayableStatus } from \"@/utils/common\";\n\n/**\n * 获取专辑内容\n * 说明 : 调用此接口 , 传入专辑 id, 可获得专辑内容\n * @param {number} id\n */\nexport function getAlbum(id) {\n return request({\n url: \"/album\",\n method: \"get\",\n params: {\n id,\n },\n }).then((data) => {\n data.songs = mapTrackPlayableStatus(data.songs);\n return data;\n });\n}\n\n/**\n * 全部新碟\n * 说明 : 登录后调用此接口 ,可获取全部新碟\n * - limit - 返回数量 , 默认为 30\n * - offset - 偏移数量,用于分页 , 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0\n * - area - ALL:全部,ZH:华语,EA:欧美,KR:韩国,JP:日本\n * @param {Object} params\n * @param {number} params.limit\n * @param {number=} params.offset\n * @param {string} params.area\n */\nexport function newAlbums(params) {\n return request({\n url: \"/album/new\",\n method: \"get\",\n params,\n });\n}\n\n/**\n * 专辑动态信息\n * 说明 : 调用此接口 , 传入专辑 id, 可获得专辑动态信息,如是否收藏,收藏数,评论数,分享数\n * - id - 专辑id\n * @param {number} id\n */\nexport function albumDynamicDetail(id) {\n return request({\n url: \"/album/detail/dynamic\",\n method: \"get\",\n params: { id, timestamp: new Date().getTime() },\n });\n}\n\n/**\n * 收藏/取消收藏专辑\n * 说明 : 调用此接口,可收藏/取消收藏专辑\n * - id - 返专辑 id\n * - t - 1 为收藏,其他为取消收藏\n * @param {Object} params\n * @param {number} params.id\n * @param {number} params.t\n */\nexport function likeAAlbum(params) {\n return request({\n url: \"/album/sub\",\n method: \"post\",\n params,\n });\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--7-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&id=c5288a46&lang=scss&scoped=true&\"","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-plus\",\n \"use\": \"icon-plus-usage\",\n \"viewBox\": \"0 0 512 512\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-translation\",\n \"use\": \"icon-translation-usage\",\n \"viewBox\": \"0 0 1024 500\",\n \"content\": \"\\n \\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"../../../node_modules/svg-baker-runtime/browser-symbol.js\";\nimport sprite from \"../../../node_modules/svg-sprite-loader/runtime/browser-sprite.build.js\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-repeat-1\",\n \"use\": \"icon-repeat-1-usage\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import store from \"@/store\";\nimport request from \"@/utils/request\";\nimport { mapTrackPlayableStatus } from \"@/utils/common\";\n/**\n * 获取音乐 url\n * 说明 : 使用歌单详情接口后 , 能得到的音乐的 id, 但不能得到的音乐 url, 调用此接口, 传入的音乐 id( 可多个 , 用逗号隔开 ), 可以获取对应的音乐的 url,\n * !!!未登录状态返回试听片段(返回字段包含被截取的正常歌曲的开始时间和结束时间)\n * @param {string} id - 音乐的 id,例如 id=405998841,33894312\n */\nexport function getMP3(id) {\n let br =\n store.state.settings?.musicQuality !== undefined\n ? store.state.settings.musicQuality\n : 320000;\n return request({\n url: \"/song/url\",\n method: \"get\",\n params: {\n id,\n br,\n },\n });\n}\n/**\n * 获取歌曲详情\n * 说明 : 调用此接口 , 传入音乐 id(支持多个 id, 用 , 隔开), 可获得歌曲详情(注意:歌曲封面现在需要通过专辑内容接口获取)\n * @param {string} ids - 音乐 id, 例如 ids=405998841,33894312\n */\nexport function getTrackDetail(ids) {\n return request({\n url: \"/song/detail\",\n method: \"get\",\n params: {\n ids,\n },\n }).then((data) => {\n data.songs = mapTrackPlayableStatus(data.songs, data.privileges);\n return data;\n });\n}\n/**\n * 获取歌词\n * 说明 : 调用此接口 , 传入音乐 id 可获得对应音乐的歌词 ( 不需要登录 )\n * @param {number} id - 音乐 id\n */\n\nexport function getLyric(id) {\n return request({\n url: \"/lyric\",\n method: \"get\",\n params: {\n id,\n },\n });\n}\n/**\n * 新歌速递\n * 说明 : 调用此接口 , 可获取新歌速递\n * @param {number} type - 地区类型 id, 对应以下: 全部:0 华语:7 欧美:96 日本:8 韩国:16\n */\nexport function topSong(type) {\n return request({\n url: \"/top/song\",\n method: \"get\",\n params: {\n type,\n },\n });\n}\n/**\n * 喜欢音乐\n * 说明 : 调用此接口 , 传入音乐 id, 可喜欢该音乐\n * - id - 歌曲 id\n * - like - 默认为 true 即喜欢 , 若传 false, 则取消喜欢\n * @param {Object} params\n * @param {number} params.id\n * @param {boolean=} [params.like]\n */\nexport function likeATrack(params) {\n params.timestamp = new Date().getTime();\n return request({\n url: \"/like\",\n method: \"get\",\n params,\n });\n}\n\n/**\n * 听歌打卡\n * 说明 : 调用此接口 , 传入音乐 id, 来源 id,歌曲时间 time,更新听歌排行数据\n * - id - 歌曲 id\n * - sourceid - 歌单或专辑 id\n * - time - 歌曲播放时间,单位为秒\n * @param {Object} params\n * @param {number} params.id\n * @param {number} params.sourceid\n * @param {number=} params.time\n */\nexport function scrobble(params) {\n params.timestamp = new Date().getTime();\n return request({\n url: \"/scrobble\",\n method: \"get\",\n params,\n });\n}\n"],"sourceRoot":""}