gitextract_wcq2bc9m/ ├── .babelrc ├── .editorconfig ├── .eslintrc.base.cjs ├── .eslintrc.cjs ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.yml │ │ └── feature.yml │ ├── actions/ │ │ └── setup/ │ │ └── action.yml │ └── workflows/ │ ├── beta-pack.yml │ ├── build-test.yml │ ├── publish-version-info.yml │ └── release.yml ├── .gitignore ├── .ncurc.js ├── .vscode/ │ ├── i18n-ally-custom-framework.yml │ ├── javascript.code-snippets │ ├── settings.json │ └── typescript.code-snippets ├── CHANGELOG.md ├── FAQ.md ├── LICENSE ├── README.md ├── build-config/ │ ├── build-after-pack.js │ ├── build-before-pack.js │ ├── build-pack.js │ ├── css-loader.config.js │ ├── dependencies-patch.js │ ├── lib/ │ │ ├── better_sqlite3_electron-v136-linux-arm.node │ │ ├── better_sqlite3_electron-v136-linux-arm64.node │ │ ├── better_sqlite3_electron-v136-linux-x64.node │ │ ├── qrc_decode_electron-v110-win32-arm64.node │ │ ├── qrc_decode_electron-v110-win32-ia32.node │ │ ├── qrc_decode_electron-v110-win32-x64.node │ │ ├── qrc_decode_electron-v136-darwin-arm64.node │ │ ├── qrc_decode_electron-v136-darwin-x64.node │ │ ├── qrc_decode_electron-v136-linux-arm.node │ │ ├── qrc_decode_electron-v136-linux-arm64.node │ │ ├── qrc_decode_electron-v136-linux-x64.node │ │ ├── qrc_decode_electron-v136-win32-arm64.node │ │ ├── qrc_decode_electron-v136-win32-ia32.node │ │ └── qrc_decode_electron-v136-win32-x64.node │ ├── lib-update.js │ ├── main/ │ │ ├── webpack.config.base.js │ │ ├── webpack.config.dev.js │ │ └── webpack.config.prod.js │ ├── pack.js │ ├── post-install.js │ ├── renderer/ │ │ ├── webpack.config.base.js │ │ ├── webpack.config.dev.js │ │ └── webpack.config.prod.js │ ├── renderer-lyric/ │ │ ├── webpack.config.base.js │ │ ├── webpack.config.dev.js │ │ └── webpack.config.prod.js │ ├── renderer-scripts/ │ │ ├── webpack.config.base.js │ │ ├── webpack.config.dev.js │ │ └── webpack.config.prod.js │ ├── runner-dev.js │ ├── utils.js │ ├── vue-loader.config.js │ └── webpack-build-config.js ├── jsconfig.json ├── licenses/ │ ├── license.rtf │ ├── license_en.txt │ └── license_zh.txt ├── package.json ├── postcss.config.js ├── publish/ │ ├── changeLog.md │ ├── index.js │ ├── utils/ │ │ ├── clearAssets.js │ │ ├── compileAssets.js │ │ ├── copyFile.js │ │ ├── cos.js │ │ ├── cosConfig.js │ │ ├── githubRelease.js │ │ ├── index.js │ │ ├── packAssets.js │ │ ├── parseChangelog.js │ │ └── updateChangeLog.js │ └── version.json ├── resources/ │ └── icons/ │ └── icon.icns ├── src/ │ ├── common/ │ │ ├── .eslintrc.cjs │ │ ├── config.ts │ │ ├── constants.ts │ │ ├── constants_sync.ts │ │ ├── defaultHotKey.ts │ │ ├── defaultSetting.ts │ │ ├── error.ts │ │ ├── hotKey.ts │ │ ├── ipcNames.ts │ │ ├── mainIpc.ts │ │ ├── rendererIpc.ts │ │ ├── theme/ │ │ │ ├── colorUtils.js │ │ │ ├── createThemes.js │ │ │ ├── index.json │ │ │ └── utils.js │ │ ├── tsconfig.json │ │ ├── types/ │ │ │ ├── app_setting.d.ts │ │ │ ├── common.d.ts │ │ │ ├── config_files.d.ts │ │ │ ├── desktop_lyric.d.ts │ │ │ ├── dislike_list.d.ts │ │ │ ├── dislike_list_sync.d.ts │ │ │ ├── download_list.d.ts │ │ │ ├── ipc_main.d.ts │ │ │ ├── ipc_renderer.d.ts │ │ │ ├── list.d.ts │ │ │ ├── list_sync.d.ts │ │ │ ├── music.d.ts │ │ │ ├── music_metadata.d.ts │ │ │ ├── open_api.d.ts │ │ │ ├── player.d.ts │ │ │ ├── shims_vue.d.ts │ │ │ ├── sound_effect.d.ts │ │ │ ├── sync.d.ts │ │ │ ├── theme.d.ts │ │ │ ├── user_api.d.ts │ │ │ └── utils.d.ts │ │ └── utils/ │ │ ├── common.ts │ │ ├── download/ │ │ │ ├── Downloader.ts │ │ │ ├── index.ts │ │ │ ├── request.ts │ │ │ └── util.ts │ │ ├── effects/ │ │ │ └── cursor-effects/ │ │ │ └── bubbleCursor.js │ │ ├── electron.ts │ │ ├── index.ts │ │ ├── lyric-font-player/ │ │ │ ├── font-player.js │ │ │ ├── index.js │ │ │ ├── line-player.js │ │ │ └── utils.js │ │ ├── lyricUtils/ │ │ │ ├── kg.js │ │ │ └── util.ts │ │ ├── migrateSetting.ts │ │ ├── musicMeta/ │ │ │ ├── downloader.js │ │ │ ├── flac-metadata/ │ │ │ │ ├── index.js │ │ │ │ └── lib/ │ │ │ │ ├── MetaDataBlock.js │ │ │ │ ├── MetaDataBlockPicture.js │ │ │ │ ├── MetaDataBlockStreamInfo.js │ │ │ │ └── MetaDataBlockVorbisComment.js │ │ │ ├── flacMeta.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── mp3Meta.js │ │ ├── nodejs.ts │ │ ├── pinyin/ │ │ │ ├── kMandarin_8105.txt │ │ │ ├── parser.js │ │ │ └── pinyin.json │ │ ├── renderer.ts │ │ ├── request.ts │ │ ├── request_node16.ts │ │ ├── tools.ts │ │ ├── vueRouter.ts │ │ └── vueTools.ts │ ├── lang/ │ │ ├── .eslintrc.cjs │ │ ├── Readme.md │ │ ├── en-us.json │ │ ├── i18n.ts │ │ ├── index.ts │ │ ├── languages.json │ │ ├── tsconfig.json │ │ ├── zh-cn.json │ │ └── zh-tw.json │ ├── main/ │ │ ├── .eslintrc.cjs │ │ ├── app.ts │ │ ├── event/ │ │ │ ├── AppEvent.ts │ │ │ ├── DislikeEvent.ts │ │ │ ├── ListEvent.ts │ │ │ └── index.ts │ │ ├── index-dev.ts │ │ ├── index.ts │ │ ├── modules/ │ │ │ ├── appMenu.ts │ │ │ ├── commonRenderers/ │ │ │ │ ├── common/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── rendererEvent.ts │ │ │ │ │ └── winRendererEvent.ts │ │ │ │ ├── dislike/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── rendererEvent.ts │ │ │ │ │ └── winRendererEvent.ts │ │ │ │ ├── index.ts │ │ │ │ └── list/ │ │ │ │ ├── index.ts │ │ │ │ ├── rendererEvent.ts │ │ │ │ └── winRendererEvent.ts │ │ │ ├── hotKey/ │ │ │ │ ├── index.ts │ │ │ │ ├── rendererEvent.ts │ │ │ │ └── utils.ts │ │ │ ├── index.ts │ │ │ ├── openApi/ │ │ │ │ └── index.ts │ │ │ ├── sync/ │ │ │ │ ├── client/ │ │ │ │ │ ├── auth.ts │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── data.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── dislike/ │ │ │ │ │ │ │ ├── handler.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── localEvent.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── list/ │ │ │ │ │ │ ├── handler.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── localEvent.ts │ │ │ │ │ ├── sync/ │ │ │ │ │ │ ├── handler.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── dislikeEvent.ts │ │ │ │ ├── index.ts │ │ │ │ ├── listEvent.ts │ │ │ │ ├── log.ts │ │ │ │ ├── migrate.ts │ │ │ │ ├── server/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── dislike/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── manage.ts │ │ │ │ │ │ │ ├── snapshotDataManage.ts │ │ │ │ │ │ │ ├── sync/ │ │ │ │ │ │ │ │ ├── handler.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── localEvent.ts │ │ │ │ │ │ │ │ └── sync.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── list/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── manage.ts │ │ │ │ │ │ ├── snapshotDataManage.ts │ │ │ │ │ │ └── sync/ │ │ │ │ │ │ ├── handler.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── localEvent.ts │ │ │ │ │ │ └── sync.ts │ │ │ │ │ ├── server/ │ │ │ │ │ │ ├── auth.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── server.ts │ │ │ │ │ │ └── sync/ │ │ │ │ │ │ ├── event.ts │ │ │ │ │ │ ├── handler.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── sync.ts │ │ │ │ │ ├── user/ │ │ │ │ │ │ ├── data.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── tools.ts │ │ │ │ └── utils.ts │ │ │ ├── tray.ts │ │ │ ├── userApi/ │ │ │ │ ├── config/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── main.ts │ │ │ │ ├── renderer/ │ │ │ │ │ ├── preload.js │ │ │ │ │ └── user-api.html │ │ │ │ ├── rendererEvent/ │ │ │ │ │ ├── name.js │ │ │ │ │ └── rendererEvent.ts │ │ │ │ └── utils.ts │ │ │ ├── winLyric/ │ │ │ │ ├── config.ts │ │ │ │ ├── index.ts │ │ │ │ ├── main.ts │ │ │ │ ├── rendererEvent.ts │ │ │ │ └── utils.ts │ │ │ └── winMain/ │ │ │ ├── autoUpdate.ts │ │ │ ├── index.ts │ │ │ ├── main.ts │ │ │ ├── rendererEvent/ │ │ │ │ ├── app.ts │ │ │ │ ├── data.ts │ │ │ │ ├── download.ts │ │ │ │ ├── hotKey.ts │ │ │ │ ├── index.ts │ │ │ │ ├── kw_decodeLyric.ts │ │ │ │ ├── music.ts │ │ │ │ ├── openAPI.ts │ │ │ │ ├── process.ts │ │ │ │ ├── soundEffect.ts │ │ │ │ ├── sync.ts │ │ │ │ ├── tx_decodeLyric.ts │ │ │ │ └── userApi.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── types/ │ │ │ ├── app.d.ts │ │ │ ├── common.d.ts │ │ │ ├── db_service.d.ts │ │ │ ├── global.d.ts │ │ │ ├── sync.d.ts │ │ │ ├── sync_common.d.ts │ │ │ └── worker.d.ts │ │ ├── utils/ │ │ │ ├── fontManage.ts │ │ │ ├── index.ts │ │ │ ├── logInit.ts │ │ │ ├── migrate.ts │ │ │ ├── request.ts │ │ │ └── store.ts │ │ └── worker/ │ │ ├── dbService/ │ │ │ ├── db.ts │ │ │ ├── index.ts │ │ │ ├── migrate.ts │ │ │ ├── modules/ │ │ │ │ ├── dislike_list/ │ │ │ │ │ ├── dbHelper.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── statements.ts │ │ │ │ ├── download/ │ │ │ │ │ ├── dbHelper.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── statements.ts │ │ │ │ ├── index.ts │ │ │ │ ├── list/ │ │ │ │ │ ├── dbHelper.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── statements.ts │ │ │ │ ├── lyric/ │ │ │ │ │ ├── dbHelper.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── statements.ts │ │ │ │ ├── music_other_source/ │ │ │ │ │ ├── dbHelper.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── statements.ts │ │ │ │ └── music_url/ │ │ │ │ ├── dbHelper.ts │ │ │ │ ├── index.ts │ │ │ │ └── statements.ts │ │ │ ├── tables.ts │ │ │ └── verifyDB.ts │ │ ├── index.ts │ │ └── utils/ │ │ ├── index.ts │ │ └── worker.ts │ ├── renderer/ │ │ ├── .eslintrc.cjs │ │ ├── App.vue │ │ ├── assets/ │ │ │ └── styles/ │ │ │ ├── animate.less │ │ │ ├── colors.less │ │ │ ├── index.less │ │ │ ├── layout.less │ │ │ ├── reset.less │ │ │ └── variables.less │ │ ├── components/ │ │ │ ├── base/ │ │ │ │ ├── Btn.vue │ │ │ │ ├── Checkbox.vue │ │ │ │ ├── Input.vue │ │ │ │ ├── Menu.vue │ │ │ │ ├── MusicList.vue │ │ │ │ ├── Popup.vue │ │ │ │ ├── Selection.vue │ │ │ │ ├── SliderBar.vue │ │ │ │ ├── Tab.vue │ │ │ │ ├── VirtualizedList.vue │ │ │ │ └── useVirtualizedList.ts │ │ │ ├── common/ │ │ │ │ ├── AudioVisualizer.vue │ │ │ │ ├── DownloadModal.vue │ │ │ │ ├── DownloadMultipleModal.vue │ │ │ │ ├── ListAddModal.vue │ │ │ │ ├── ListAddMultipleModal.vue │ │ │ │ ├── PlaybackRateBtn.vue │ │ │ │ ├── ProgressBar.vue │ │ │ │ ├── SoundEffectBtn/ │ │ │ │ │ ├── AddConvolutionPresetBtn.vue │ │ │ │ │ ├── AddEQPresetBtn.vue │ │ │ │ │ ├── AudioConvolution.vue │ │ │ │ │ ├── AudioPanner.vue │ │ │ │ │ ├── BiquadFilter.vue │ │ │ │ │ ├── PitchShifter.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── TogglePlayModeBtn.vue │ │ │ │ └── VolumeBtn.vue │ │ │ ├── index.js │ │ │ ├── layout/ │ │ │ │ ├── Aside/ │ │ │ │ │ ├── ControlBtns.vue │ │ │ │ │ ├── NavBar.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── ChangeLogModal.vue │ │ │ │ ├── Icons.vue │ │ │ │ ├── PactModal.vue │ │ │ │ ├── PlayBar/ │ │ │ │ │ ├── ControlBtns.vue │ │ │ │ │ ├── FullWidthProgress.vue │ │ │ │ │ ├── MiddleWidthProgress.vue │ │ │ │ │ ├── MiniWidthProgress.vue │ │ │ │ │ ├── PlayProgress.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── PlayDetail/ │ │ │ │ │ ├── ControlBtnsLeftHeader.vue │ │ │ │ │ ├── ControlBtnsRightHeader.vue │ │ │ │ │ ├── LyricPlayer.vue │ │ │ │ │ ├── PlayBar.vue │ │ │ │ │ ├── autoHideMounse.js │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ControlBtns.vue │ │ │ │ │ │ ├── LyricMenu.vue │ │ │ │ │ │ └── MusicComment/ │ │ │ │ │ │ ├── CommentFloor.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── useSelectAllLrc.js │ │ │ │ ├── SyncAuthCodeModal.vue │ │ │ │ ├── SyncModeModal.vue │ │ │ │ ├── Toolbar/ │ │ │ │ │ ├── ControlBtns.vue │ │ │ │ │ ├── SearchInput.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── UpdateModal.vue │ │ │ │ └── View.vue │ │ │ └── material/ │ │ │ ├── ListButtons.vue │ │ │ ├── Modal.vue │ │ │ ├── OnlineList/ │ │ │ │ ├── index.vue │ │ │ │ ├── useList.ts │ │ │ │ ├── useMenu.js │ │ │ │ ├── useMusicActions.js │ │ │ │ ├── useMusicAdd.js │ │ │ │ ├── useMusicDownload.js │ │ │ │ └── usePlay.ts │ │ │ ├── Pagination.vue │ │ │ ├── PopupBtn.vue │ │ │ ├── SearchInput.vue │ │ │ └── SongList.vue │ │ ├── core/ │ │ │ ├── apiSource.ts │ │ │ ├── dislikeList.ts │ │ │ ├── globalData.ts │ │ │ ├── lyric.ts │ │ │ ├── music/ │ │ │ │ ├── download.ts │ │ │ │ ├── index.ts │ │ │ │ ├── local.ts │ │ │ │ ├── online.ts │ │ │ │ └── utils.ts │ │ │ ├── player/ │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ ├── timeoutStop.ts │ │ │ │ └── utils.ts │ │ │ └── useApp/ │ │ │ ├── compositions/ │ │ │ │ └── usePlaySonglist.ts │ │ │ ├── index.ts │ │ │ ├── listAutoUpdate.ts │ │ │ ├── useDataInit.ts │ │ │ ├── useDeeplink/ │ │ │ │ ├── index.ts │ │ │ │ ├── useMusicAction.js │ │ │ │ ├── usePlayerAction.ts │ │ │ │ ├── useSonglistAction.js │ │ │ │ └── utils.js │ │ │ ├── useEventListener.ts │ │ │ ├── useHandleEnvParams.ts │ │ │ ├── useInitUserApi.ts │ │ │ ├── useOpenAPI.ts │ │ │ ├── usePlayer/ │ │ │ │ ├── index.ts │ │ │ │ ├── useLyric.ts │ │ │ │ ├── useMaxOutputChannelCount.ts │ │ │ │ ├── useMediaDevice.ts │ │ │ │ ├── useMediaSessionInfo.ts │ │ │ │ ├── usePlayEvent.ts │ │ │ │ ├── usePlayProgress.ts │ │ │ │ ├── usePlayStatus.ts │ │ │ │ ├── usePlaybackRate.ts │ │ │ │ ├── usePlayer.ts │ │ │ │ ├── usePlayerEvent.ts │ │ │ │ ├── usePreloadNextMusic.ts │ │ │ │ ├── useSoundEffect.ts │ │ │ │ ├── useVolume.ts │ │ │ │ └── useWatchList.ts │ │ │ ├── useSettingSync.ts │ │ │ ├── useStatusbarLyric.ts │ │ │ ├── useSync.ts │ │ │ └── useUpdate.ts │ │ ├── event/ │ │ │ ├── Event.ts │ │ │ ├── appEvent.ts │ │ │ ├── index.ts │ │ │ └── keyEvent.ts │ │ ├── index.html │ │ ├── main.ts │ │ ├── plugins/ │ │ │ ├── Dialog/ │ │ │ │ ├── Dialog.vue │ │ │ │ └── index.js │ │ │ ├── SvgIcon/ │ │ │ │ ├── SvgIcon.vue │ │ │ │ └── index.js │ │ │ ├── Tips/ │ │ │ │ ├── Tips.js │ │ │ │ ├── Tips.vue │ │ │ │ └── index.js │ │ │ ├── i18n.ts │ │ │ ├── index.ts │ │ │ └── player/ │ │ │ ├── index.ts │ │ │ └── pitch-shifter/ │ │ │ ├── fft.js │ │ │ ├── ola-processor.js │ │ │ └── phase-vocoder.js │ │ ├── router.ts │ │ ├── store/ │ │ │ ├── dislikeList/ │ │ │ │ ├── action.ts │ │ │ │ ├── index.ts │ │ │ │ └── state.ts │ │ │ ├── download/ │ │ │ │ ├── action.ts │ │ │ │ ├── state.ts │ │ │ │ └── utils.ts │ │ │ ├── hotSearch.ts │ │ │ ├── index.ts │ │ │ ├── leaderboard/ │ │ │ │ ├── action.ts │ │ │ │ └── state.ts │ │ │ ├── list/ │ │ │ │ ├── action.ts │ │ │ │ ├── listManage/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── rendererListManage.ts │ │ │ │ │ └── state.ts │ │ │ │ ├── state.ts │ │ │ │ └── syncSourceList.ts │ │ │ ├── player/ │ │ │ │ ├── action.ts │ │ │ │ ├── lyric.ts │ │ │ │ ├── playProgress.ts │ │ │ │ ├── playbackRate.ts │ │ │ │ ├── state.ts │ │ │ │ └── volume.ts │ │ │ ├── search/ │ │ │ │ ├── action.ts │ │ │ │ ├── music/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── state.ts │ │ │ │ ├── songlist/ │ │ │ │ │ ├── action.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── state.ts │ │ │ │ └── state.ts │ │ │ ├── setting.ts │ │ │ ├── songList/ │ │ │ │ ├── action.ts │ │ │ │ └── state.ts │ │ │ ├── soundEffect.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── types/ │ │ │ ├── app.d.ts │ │ │ ├── common.d.ts │ │ │ ├── i18n.d.ts │ │ │ ├── player.d.ts │ │ │ └── worker.d.ts │ │ ├── utils/ │ │ │ ├── compositions/ │ │ │ │ ├── useDrag.js │ │ │ │ ├── useIconSize.ts │ │ │ │ ├── useImportTip.js │ │ │ │ ├── useKeyDown.ts │ │ │ │ ├── useLyric.js │ │ │ │ ├── useMenuLocation.js │ │ │ │ ├── useNextTogglePlay.ts │ │ │ │ ├── usePlayProgress.js │ │ │ │ └── useToggleDesktopLyric.js │ │ │ ├── data.ts │ │ │ ├── env.js │ │ │ ├── index.ts │ │ │ ├── ipc.ts │ │ │ ├── keyBind.ts │ │ │ ├── message.ts │ │ │ ├── music.ts │ │ │ ├── musicSdk/ │ │ │ │ ├── api-source-info.ts │ │ │ │ ├── api-source.js │ │ │ │ ├── bd/ │ │ │ │ │ ├── api-test.js │ │ │ │ │ ├── hotSearch.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── leaderboard.js │ │ │ │ │ ├── musicInfo.js │ │ │ │ │ ├── musicSearch.js │ │ │ │ │ └── songList.js │ │ │ │ ├── index.js │ │ │ │ ├── kg/ │ │ │ │ │ ├── album.js │ │ │ │ │ ├── api-test.js │ │ │ │ │ ├── comment.js │ │ │ │ │ ├── hotSearch.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── leaderboard.js │ │ │ │ │ ├── lyric.js │ │ │ │ │ ├── musicInfo.js │ │ │ │ │ ├── musicSearch.js │ │ │ │ │ ├── pic.js │ │ │ │ │ ├── singer.js │ │ │ │ │ ├── songList.js │ │ │ │ │ ├── temp/ │ │ │ │ │ │ ├── musicSearch-new.js │ │ │ │ │ │ └── songList-new.js │ │ │ │ │ ├── tipSearch.js │ │ │ │ │ └── util.js │ │ │ │ ├── kw/ │ │ │ │ │ ├── album.js │ │ │ │ │ ├── api-temp.js │ │ │ │ │ ├── api-test.js │ │ │ │ │ ├── comment.js │ │ │ │ │ ├── hotSearch.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── leaderboard.js │ │ │ │ │ ├── lyric.js │ │ │ │ │ ├── musicSearch.js │ │ │ │ │ ├── pic.js │ │ │ │ │ ├── songList.js │ │ │ │ │ ├── tipSearch.js │ │ │ │ │ └── util.js │ │ │ │ ├── mg/ │ │ │ │ │ ├── album.js │ │ │ │ │ ├── api-test.js │ │ │ │ │ ├── comment.js │ │ │ │ │ ├── hotSearch.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── leaderboard.js │ │ │ │ │ ├── lyric.js │ │ │ │ │ ├── musicInfo.js │ │ │ │ │ ├── musicSearch.js │ │ │ │ │ ├── pic.js │ │ │ │ │ ├── songId.js │ │ │ │ │ ├── songList.js │ │ │ │ │ ├── temp/ │ │ │ │ │ │ └── leaderboard-old.js │ │ │ │ │ ├── tipSearch.js │ │ │ │ │ └── utils/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── mrc.js │ │ │ │ ├── options.js │ │ │ │ ├── tx/ │ │ │ │ │ ├── api-test.js │ │ │ │ │ ├── comment.js │ │ │ │ │ ├── hotSearch.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── leaderboard.js │ │ │ │ │ ├── lyric.js │ │ │ │ │ ├── musicInfo.js │ │ │ │ │ ├── musicSearch.js │ │ │ │ │ ├── singer.js │ │ │ │ │ ├── songList.js │ │ │ │ │ └── tipSearch.js │ │ │ │ ├── utils.js │ │ │ │ ├── wy/ │ │ │ │ │ ├── api-test.js │ │ │ │ │ ├── comment.js │ │ │ │ │ ├── hotSearch.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── leaderboard.js │ │ │ │ │ ├── lyric.js │ │ │ │ │ ├── musicDetail.js │ │ │ │ │ ├── musicInfo.js │ │ │ │ │ ├── musicSearch.js │ │ │ │ │ ├── singer.js │ │ │ │ │ ├── songList.js │ │ │ │ │ ├── tipSearch.js │ │ │ │ │ └── utils/ │ │ │ │ │ ├── crypto.js │ │ │ │ │ └── index.js │ │ │ │ └── xm.js │ │ │ ├── pickrTools.ts │ │ │ ├── request.js │ │ │ ├── simplify-chinese-main/ │ │ │ │ ├── LICENSE.md │ │ │ │ ├── README.md │ │ │ │ ├── chinese.js │ │ │ │ ├── index.d.ts │ │ │ │ └── index.js │ │ │ └── update.js │ │ ├── views/ │ │ │ ├── Download/ │ │ │ │ ├── index.vue │ │ │ │ ├── useList.js │ │ │ │ ├── useListInfo.js │ │ │ │ ├── useMenu.js │ │ │ │ ├── useMusicAdd.js │ │ │ │ ├── usePlay.js │ │ │ │ ├── useTab.js │ │ │ │ └── useTaskActions.js │ │ │ ├── Leaderboard/ │ │ │ │ ├── BoardList/ │ │ │ │ │ ├── index.vue │ │ │ │ │ └── useMenu.js │ │ │ │ ├── MusicList/ │ │ │ │ │ ├── index.vue │ │ │ │ │ └── useList.ts │ │ │ │ ├── action.ts │ │ │ │ └── index.vue │ │ │ ├── List/ │ │ │ │ ├── MusicList/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── MusicSortModal.vue │ │ │ │ │ │ ├── MusicToggleModal.vue │ │ │ │ │ │ └── SearchList.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ ├── useList.js │ │ │ │ │ ├── useListInfo.js │ │ │ │ │ ├── useListScroll.js │ │ │ │ │ ├── useMenu.js │ │ │ │ │ ├── useMusicActions.js │ │ │ │ │ ├── useMusicAdd.js │ │ │ │ │ ├── useMusicDownload.js │ │ │ │ │ ├── useMusicToggle.js │ │ │ │ │ ├── usePlay.js │ │ │ │ │ ├── useSearch.js │ │ │ │ │ └── useSort.js │ │ │ │ ├── MyList/ │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── DuplicateMusicModal.vue │ │ │ │ │ │ ├── ListSortModal.vue │ │ │ │ │ │ ├── ListUpdateModal.vue │ │ │ │ │ │ └── MusicSortModal.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ ├── useDarg.ts │ │ │ │ │ ├── useDuplicate.ts │ │ │ │ │ ├── useEditList.ts │ │ │ │ │ ├── useListScroll.ts │ │ │ │ │ ├── useListUpdate.ts │ │ │ │ │ ├── useMenu.js │ │ │ │ │ ├── useShare.ts │ │ │ │ │ └── useSort.js │ │ │ │ └── index.vue │ │ │ ├── Search/ │ │ │ │ ├── MusicList/ │ │ │ │ │ ├── index.vue │ │ │ │ │ └── useList.ts │ │ │ │ ├── SongListList/ │ │ │ │ │ ├── index.vue │ │ │ │ │ └── useList.ts │ │ │ │ ├── components/ │ │ │ │ │ └── BlankView.vue │ │ │ │ └── index.vue │ │ │ ├── Setting/ │ │ │ │ ├── components/ │ │ │ │ │ ├── DislikeListModal.vue │ │ │ │ │ ├── PlayTimeoutModal.vue │ │ │ │ │ ├── SettingAbout.vue │ │ │ │ │ ├── SettingBackup.vue │ │ │ │ │ ├── SettingBasic.vue │ │ │ │ │ ├── SettingDesktopLyric.vue │ │ │ │ │ ├── SettingDownload.vue │ │ │ │ │ ├── SettingHotKey.vue │ │ │ │ │ ├── SettingList.vue │ │ │ │ │ ├── SettingNetwork.vue │ │ │ │ │ ├── SettingOdc.vue │ │ │ │ │ ├── SettingOpenAPI.vue │ │ │ │ │ ├── SettingOther.vue │ │ │ │ │ ├── SettingPlay.vue │ │ │ │ │ ├── SettingPlayDetail.vue │ │ │ │ │ ├── SettingSearch.vue │ │ │ │ │ ├── SettingSync/ │ │ │ │ │ │ ├── ServerDeviceListModal.vue │ │ │ │ │ │ ├── SyncClient.vue │ │ │ │ │ │ ├── SyncServer.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── SettingUpdate.vue │ │ │ │ │ ├── ThemeEditModal/ │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ ├── useAppBgColor.ts │ │ │ │ │ │ ├── useAsideFontColor.ts │ │ │ │ │ │ ├── useBadgePrimaryColor.ts │ │ │ │ │ │ ├── useBadgeSecondaryColor.ts │ │ │ │ │ │ ├── useBadgeTertiaryColor.ts │ │ │ │ │ │ ├── useCloseBtnColor.ts │ │ │ │ │ │ ├── useFontColor.ts │ │ │ │ │ │ ├── useHideBtnColor.ts │ │ │ │ │ │ ├── useMainBgColor.ts │ │ │ │ │ │ ├── useMainColor.ts │ │ │ │ │ │ └── useMinBtnColor.ts │ │ │ │ │ ├── ThemeSelectorModal.vue │ │ │ │ │ ├── UserApiModal.vue │ │ │ │ │ └── UserApiOnlineImportModal.vue │ │ │ │ └── index.vue │ │ │ └── songList/ │ │ │ ├── Detail/ │ │ │ │ ├── action.ts │ │ │ │ ├── index.vue │ │ │ │ ├── useKeyBack.ts │ │ │ │ └── useList.ts │ │ │ └── List/ │ │ │ ├── ListView.vue │ │ │ ├── components/ │ │ │ │ ├── OpenListModal.vue │ │ │ │ ├── SongList.vue │ │ │ │ ├── SortTab.vue │ │ │ │ └── TagList.vue │ │ │ └── index.vue │ │ └── worker/ │ │ ├── download/ │ │ │ ├── common.ts │ │ │ ├── download.ts │ │ │ ├── index.ts │ │ │ ├── lrcTool.ts │ │ │ └── utils.ts │ │ ├── index.ts │ │ ├── main/ │ │ │ ├── common.ts │ │ │ ├── index.ts │ │ │ ├── list.ts │ │ │ └── music.ts │ │ └── utils/ │ │ ├── index.ts │ │ └── worker.ts │ └── renderer-lyric/ │ ├── .eslintrc.cjs │ ├── App.vue │ ├── assets/ │ │ └── styles/ │ │ ├── animate.less │ │ ├── colors.less │ │ ├── index.less │ │ ├── layout.less │ │ ├── reset.less │ │ └── variables.less │ ├── components/ │ │ ├── common/ │ │ │ └── AudioVisualizer.vue │ │ ├── index.js │ │ └── layout/ │ │ ├── ControlBar.vue │ │ ├── Icons.vue │ │ ├── LyricHorizontal/ │ │ │ ├── index.vue │ │ │ └── useLyric.js │ │ ├── LyricVertical/ │ │ │ ├── index.vue │ │ │ └── useLyric.js │ │ └── useDrag.js │ ├── core/ │ │ ├── lyric.ts │ │ └── mainWindowChannel.ts │ ├── index.html │ ├── main.ts │ ├── plugins/ │ │ └── i18n.ts │ ├── store/ │ │ ├── action.ts │ │ ├── lyric.ts │ │ └── state.ts │ ├── tsconfig.json │ ├── types/ │ │ ├── app.d.ts │ │ └── common.d.ts │ ├── useApp/ │ │ ├── useCommon.ts │ │ ├── useHoverHide.ts │ │ ├── useLyric.ts │ │ ├── usePauseHide.ts │ │ ├── useTheme.ts │ │ └── useWindowSize.ts │ └── utils/ │ └── ipc.ts └── tsconfig.json