How devhoss/blobtunes works
Blobtunes is a desktop, audio-only YouTube player. Its main workflow is paste a video URL or search YouTube, resolve a playable stream, manage tracks in the queue, and play/control audio through Rust-owned libmpv. The graph includes the frontend state and controls, backend resolution/playback, and documented Windows media-session/tray capabilities. Several Rust modules are represented from README descriptions and module declarations; their internal call wiring is not inferred where source excerpts were unavailable.
Main entry points: App.tsx Player UI · lib.rs Search commands · player.rs Playback engine · smtc.rs Media session
Components 19
Player interface
- Player UI
src/App.tsx - Blob display
src/components/Blob.tsx - Seek control
src/components/SquiggleSeek.tsx
Discovery and queue
- Queue state
src/lib/queue.ts - Result mapping
src/lib/search.ts - URL handling
src/lib/youtube.ts - YouTube search
src-tauri/src/search.rs
Playback backend
- Search commands
src-tauri/src/lib.rs - URL probe command
src-tauri/src/lib.rs - Stream resolution
src-tauri/src/ytdlp.rs - Player commands
src-tauri/src/lib.rs - Playback engine
src-tauri/src/player.rs
Windows integration
- Media session
src-tauri/src/smtc.rs - Tray and window
src-tauri/src/tray.rs - WebView profile
src-tauri/src/webview_profile.rs
Other components
- Listener
- YouTube Data API
- libmpv
- Windows media controls
Connections 21
- Listener → Player UI: uses
- Player UI → Search commands: invokes search
- Search commands → YouTube search: calls
- YouTube search → YouTube Data API: queries
- Search commands → Player UI: returns results
- Player UI → Result mapping: maps results
- Player UI → Queue state: updates tracks
- Player UI → URL probe command: invokes probe
- URL probe command → Stream resolution: runs probe
- Player UI → Player commands: sends controls
- Player commands → Playback engine: dispatches commands
- Playback engine → libmpv: controls audio
- Player UI → Blob display: renders state
- Player UI → Seek control: renders progress
- Player UI → URL handling: validates links
- Playback engine → Media session: publishes playback
- Media session → Windows media controls: exposes controls
- Windows media controls → Media session: sends commands
- Player UI → Player commands: sends session metadata
- Tray and window → Windows media controls: integrates tray
- WebView profile → Windows media controls: isolates WebView data