$ show qier222/YesPlayMusic
YesPlayMusic is a third-party Netease Music player built as a Vue 2 single-page application with an Electron desktop wrapper. It provides a full-featured music playback experience including personal FM, daily recommendations, playlists, albums, artists, MVs, and synchronized lyrics. The application integrates with the Netease Music API for all content, supports UnblockNeteaseMusic for alternative audio sources, and offers Last.fm scrobbling, Discord Rich Presence, MPRIS (Linux), Touch Bar (macOS), and global shortcuts. The architecture follows a Vuex store pattern with a singleton Player class proxied into the state, and uses IndexedDB (Dexie) for caching track sources, lyrics, and album data. The Electron main process handles IPC for tray, menu, touchbar, and system integration, while the renderer process runs the Vue app with lazy-loaded routes and i18n support for multiple languages. The codebase is well-structured with reusable UI components (Cover, TrackList, ContextMenu, Modal, SvgIcon) and utility modules (lyrics parser, auth helpers, request interceptor). However, it relies on aging dependencies (Vue 2, Electron 13, Node 14/16) and is in maintenance mode per the README, with a new 2.0 alpha in development. Security concerns include disabled TLS verification in Docker and Electron webSecurity disabled. Despite these issues, the project demonstrates solid engineering practices for a feature-rich music player and offers several components that could be extracted for other Vue projects.
The LLM identified 5 files worth highlighting for reuse:
A Vue component that displays an album or playlist cover image with an optional play button overlay. Accepts props for image URL, size, link, and play action. Emits a click event. Self-contained and easily extractable for any music or media application.
A generic right-click context menu component with a blur backdrop. Accepts an array of menu items with labels, icons, and click handlers. Positions itself at cursor coordinates. Can be reused in any Vue project requiring custom context menus.
A reusable modal overlay component with configurable width, close-on-backdrop, and slot-based content. Includes transition animations and emits close events. Suitable for any Vue application needing modal dialogs.
A lightweight SVG icon component that loads inline SVG files from a sprite or direct file. Accepts icon name and size props. Provides a clean way to use SVG icons in Vue without external icon libraries.
A standalone JavaScript module that parses LRC lyrics format into an array of time-tagged lines. Handles multiple lyric lines per timestamp and returns a structured object. Can be extracted and used in any application that needs to parse LRC lyrics.