-
-
Notifications
You must be signed in to change notification settings - Fork 1
Add ICY metadata extraction for now playing info #44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Co-authored-by: TheJoeFin <7809853+TheJoeFin@users.noreply.github.com>
…iency Co-authored-by: TheJoeFin <7809853+TheJoeFin@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add metadata retrieval for streaming content
Add ICY metadata extraction for now playing info
Dec 4, 2025
Owner
|
@copilot looks great! Also update the Tooltip on the NotifyIcon with the song details if available |
Co-authored-by: TheJoeFin <7809853+TheJoeFin@users.noreply.github.com>
Contributor
Author
Done in f0afcaf. The tray icon tooltip now shows the current song when playing:
Long song titles are truncated to 60 characters to keep the tooltip readable. |
Introduced a new "Now Playing" page to display detailed stream metadata, including artist, title, and stream information. Added a ViewModel to manage metadata and handle Discogs search. Updated project file to include the new page in the build process.
Enhanced BooleanToVisibilityConverter with inversion logic. Added "Now Playing" button to PlayingPage with navigation support to details page. Updated ShellViewModel for page navigation.
Refactored `NavigationService` and `ShellViewModel` to use `ObservableObject` from `CommunityToolkit.Mvvm`, simplifying property change notifications. Added `RelayCommand` attributes for navigation commands in `ShellViewModel`. Updated `AddStation.xaml.cs` to reset navigation stack history after saving. Improved null checks and added debug logging in `NavigationService`. Included `CommunityToolkit.Mvvm` package reference in `Trdo.csproj`. Performed general cleanup and formatting improvements.
Introduced a "Search on Spotify" feature alongside the existing "Search on Discogs" functionality. Updated the UI to include a new button with an SVG icon for Spotify. Added backend logic to handle Spotify searches via the app or web fallback. Included the `spotify.svg` asset in the project.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Internet radio streams often embed track metadata via ICY (Icecast/Shoutcast) protocol. This PR extracts and displays "now playing" information when available.
Changes
StreamMetadatamodel - Holds parsed metadata (StreamTitle, Artist, Title) with display formattingStreamMetadataService- Connects withIcy-MetaData: 1header, readsicy-metaintintervals, parsesStreamTitle='Artist - Song';format, polls every 15sRadioPlayerServiceintegration - Starts/stops metadata polling on play/pause, exposesCurrentMetadataproperty andStreamMetadataChangedeventPlayerViewModel- ExposesNowPlayingandHasNowPlayingfor UI bindingPlayingPage.xaml- Displays now playing section when metadata availableApp.xaml.cs- Updates tray icon tooltip with current song details when playing (truncated to 60 chars for readability)How ICY metadata works
The service reads past the audio chunk, extracts the metadata block, and parses artist/title from common separator formats (
-,–,—).Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.