static void metadata_update(int delay) { ices_stream_t* stream; shout_metadata_t* metadata; char song[1024]; char* playlist_metadata; char* value; int rc; if (delay) usleep(delay); if (!(playlist_metadata = ices_playlist_get_metadata())) { if (Title) { if (Artist) snprintf(song, sizeof(song), "%s - %s", Artist, Title); else snprintf(song, sizeof(song), "%s", Title); } else snprintf(song, sizeof(song), "%s", Filename); value = song; } else value = playlist_metadata; if (!(metadata = shout_metadata_new())) { ices_log_error("Error allocating metadata structure"); ices_util_free(playlist_metadata); return; } if (shout_metadata_add(metadata, "song", value) != SHOUTERR_SUCCESS) { ices_log_error_output("Error adding info to metadata structure"); ices_util_free(playlist_metadata); shout_metadata_free(metadata); return; } for (stream = ices_config.streams; stream; stream = stream->next) { rc = shout_set_metadata(stream->conn, metadata); if (rc != SHOUTERR_SUCCESS) ices_log_error_output("Updating metadata on %s failed.", stream->mount); else ices_log_debug("Updated metadata on %s to: %s", stream->mount, value); } ices_util_free(playlist_metadata); shout_metadata_free(metadata); }
static void metadata_update (input_stream_t* source, int delay) { ices_stream_t* stream; char song[1024]; char* playlist_metadata; char* metadata; int rc; if (delay) usleep (delay); if (! (playlist_metadata = ices_playlist_get_metadata ())) { if (Title) { if (Artist) snprintf (song, sizeof (song), "%s - %s", Artist, Title); else snprintf (song, sizeof (song), "%s", Title); } else metadata_clean_filename (source->path, song, sizeof (song)); metadata = song; } else metadata = playlist_metadata; for (stream = ices_config.streams; stream; stream = stream->next) { rc = shout_update_metadata (&stream->conn, metadata); if (rc != 1) ices_log_error ("Updating metadata on %s failed.", stream->mount); else ices_log_debug ("Updated metadata on %s to: %s", stream->mount, metadata); } ices_util_free (playlist_metadata); }