From 8e7eb4c53439e13a0286ecfb80ce5cdc995fe1e0 Mon Sep 17 00:00:00 2001 From: Goldenkrew3000 Date: Mon, 2 Feb 2026 15:26:15 +1000 Subject: [PATCH] DiscordRPC: Added internet radio station support --- src/discordrpc.c | 17 +++++++++++++++-- src/discordrpc.h | 6 ++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/discordrpc.c b/src/discordrpc.c index aa4f63a..bfa2e6e 100644 --- a/src/discordrpc.c +++ b/src/discordrpc.c @@ -60,7 +60,7 @@ static void handleDiscordError(int errcode, const char* message) } int discordrpc_init() { - printf("[DiscordRPC] Initializing...\n"); + printf("[DiscordRPC] Initializing.\n"); DiscordEventHandlers handlers; memset(&handlers, 0, sizeof(handlers)); handlers.ready = handleDiscordReady; @@ -87,7 +87,8 @@ void discordrpc_update(discordrpc_data** discordrpc_struct) { if ((*discordrpc_struct)->state == DISCORDRPC_STATE_IDLE) { asprintf(&detailsString, "Idle"); presence.details = detailsString; - } else if ((*discordrpc_struct)->state == DISCORDRPC_STATE_PLAYING) { + } else if ((*discordrpc_struct)->state == DISCORDRPC_STATE_PLAYING_SONG) { + // Playing a song time_t currentTime = time(NULL); asprintf(&detailsString, "%s", (*discordrpc_struct)->songTitle); asprintf(&stateString, "by %s", (*discordrpc_struct)->songArtist); @@ -99,6 +100,18 @@ void discordrpc_update(discordrpc_data** discordrpc_struct) { if (configObj->discordrpc_showSysDetails) { presence.largeImageText = discordrpc_osString; } + } else if ((*discordrpc_struct)->state == DISCORDRPC_STATE_PLAYING_RADIO) { + // Playing an internet radio station + time_t currentTime = time(NULL); + asprintf(&detailsString, "%s", (*discordrpc_struct)->songTitle); + asprintf(&stateString, "Internet radio station"); + presence.details = detailsString; + presence.state = stateString; + presence.largeImageKey = (*discordrpc_struct)->coverArtUrl; + presence.startTimestamp = (long)currentTime; + if (configObj->discordrpc_showSysDetails) { + presence.largeImageText = discordrpc_osString; + } } else if ((*discordrpc_struct)->state == DISCORDRPC_STATE_PAUSED) { } diff --git a/src/discordrpc.h b/src/discordrpc.h index 634b9e9..13fbad2 100644 --- a/src/discordrpc.h +++ b/src/discordrpc.h @@ -8,8 +8,9 @@ #define _DISCORDRPC_H #define DISCORDRPC_STATE_IDLE 0 -#define DISCORDRPC_STATE_PLAYING 1 -#define DISCORDRPC_STATE_PAUSED 2 +#define DISCORDRPC_STATE_PLAYING_SONG 1 +#define DISCORDRPC_STATE_PLAYING_RADIO 2 +#define DISCORDRPC_STATE_PAUSED 4 typedef struct { int state; @@ -17,6 +18,7 @@ typedef struct { char* songTitle; char* songArtist; char* coverArtUrl; + int isRadio; } discordrpc_data;