个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证The Yesify app. A clean native built music player with a glass morphism design
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A small, native Windows music player (C# / WPF, no WebView, no Electron). Paste a Spotify link and it plays, with the audio coming from YouTube. No account, no Premium, no ads, no skip limits, no telemetry, no obfuscated code.
Yesify.exe --tray starts straight into the tray.Long playlists: the first 100 songs come from Spotify's public embed page, and the rest load in the background through Spotify's player backend, using the anonymous token the embed page hands every visitor. That backend is undocumented. If Spotify changes it, you'll get the first 100 songs instead of an error.
Needs the .NET 8 SDK on Windows 10 or 11.
dotnet run -c Release
Or double-click Yesify.bat, which runs the published exe if there is one and otherwise builds from
source.
To build the single portable exe that Yesify.bat launches (about 160 MB, no .NET install needed). It
is left uncompressed on purpose: Windows maps it from disk on demand, while a compressed exe would have
to unpack itself into RAM.
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=none -o publish
Yesify.exe "some song" or Yesify.exe <link> opens straight to that search or link.
Everything stays on your PC, in %APPDATA%\Yesify:
| File | Contents |
|---|---|
settings.json | Settings and the playlists/albums imported into your library |
liked.json | Liked Songs |
playlists.json | Your own playlists (their pictures are in covers\) |
session.json | The song, position and queue to pick up where you left off |
library-tracks.json | Songs of imported playlists, for library search |
covers.json, spotify-tracks-v2.json, matches-v3.json | Caches: cover URLs, track details, and which YouTube upload each song plays |
Writes go to a temp file first and are then swapped in, so a crash can't corrupt them. Audio is cached
in %LOCALAPPDATA%\Yesify\cache.
| File | Role |
|---|---|
Services/SpotifyEmbedService.cs | Reads track lists from Spotify's public embed page (open.spotify.com/embed/...) |
Services/CoverService.cs | Per-song covers from Spotify's public oEmbed endpoint |
Services/YouTubeService.cs | Matches each song to a YouTube Music upload (artist, title, duration, explicit version) and downloads the audio with YoutubeExplode |
Services/Mp4Fixer.cs | Removes an edit-list box that makes Windows decode some YouTube files as silence |
Services/AudioPlayer.cs | NAudio + Windows Media Foundation playback, plus a smooth playback clock for lyrics |
Services/PreciseSeekReader.cs | Sample-exact seeking (Media Foundation's own seeking lands up to 14 s off on these files) |
Services/LyricsService.cs | NetEase word-timed lyrics, LRCLIB fallback, LRC parsing |
Services/LibraryService.cs | Your playlists and the library search index |
Services/LikedService.cs | Local Liked Songs |
Services/DiscordPresence.cs | Discord Rich Presence over Discord's local pipe (no SDK) |
MediaSession.cs | Windows media session (SystemMediaTransportControls) through plain COM calls |
LyricsAnimator.cs | The Apple Music-style word sweep and the dots during instrumental breaks |
Frost.cs | Frosted-glass pop-ups (blurs a live picture of the window behind them) |
ViewModels/MainViewModel*.cs | Playback, queue, shuffle and repeat, library, playlists, settings |
Note: streaming audio from YouTube outside YouTube's own apps goes against YouTube's Terms of Service. If YouTube changes something and playback breaks, update the YoutubeExplode package first.