[vlc-commits] [Git][videolan/vlc][master] 4 commits: service discovery/radio: move meta helper functions before Run()
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Sat Oct 10 06:36:40 UTC 2026
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
947555fb by Nicolas Pomepuy at 2026-10-10T08:26:26+02:00
service discovery/radio: move meta helper functions before Run()
- - - - -
8bad01ae by Nicolas Pomepuy at 2026-10-10T08:26:26+02:00
service discovery/radio: expose country station count metadata
- - - - -
c6a0ce0b by Nicolas Pomepuy at 2026-10-10T08:26:26+02:00
service discovery/radio: expose additional station metadata (votes, clicks)
- - - - -
182830d9 by Nicolas Pomepuy at 2026-10-10T08:26:26+02:00
service discovery/radio: use lowercase single-word extra metadata keys for codec and bitrate
- - - - -
1 changed file:
- modules/services_discovery/radio.c
Changes:
=====================================
modules/services_discovery/radio.c
=====================================
@@ -277,6 +277,30 @@ static csv_parser *csv_parser_init(void *data, char *psz_url, int max_fields)
return parser;
}
+/* Radio Browser's CSV API serializes missing optional values as "null". */
+static bool FieldHasValue(csv_parser *parser, int index)
+{
+ return index >= 0 && parser->fields[index] != NULL &&
+ parser->fields[index][0] != '\0' &&
+ strcmp(parser->fields[index], "null") != 0;
+}
+
+static void SetMetaFromField(input_item_t *item, csv_parser *parser, int index, vlc_meta_type_t type)
+{
+ if (!FieldHasValue(parser, index))
+ return;
+
+ input_item_SetMeta(item, type, parser->fields[index]);
+}
+
+static void SetMetaExtraFromField(input_item_t *item, csv_parser *parser, int index, const char *name)
+{
+ if (!FieldHasValue(parser, index))
+ return;
+
+ input_item_SetMetaExtra(item, name, parser->fields[index]);
+}
+
static void *Run(void *data)
{
@@ -308,6 +332,7 @@ static void *Run(void *data)
}
int name_index = csv_parser_get_field_index(parser, "name");
int iso_3166_1_index = csv_parser_get_field_index(parser, "iso_3166_1");
+ int stationcount_index = csv_parser_get_field_index(parser, "stationcount");
if (name_index < 0 || iso_3166_1_index < 0)
{
@@ -347,6 +372,7 @@ static void *Run(void *data)
char flag[256];
snprintf(flag, sizeof(flag), "https://flags.videolan.org/%s/flat/64.png", parser->fields[iso_3166_1_index]);
input_item_SetMeta(country_node, vlc_meta_ArtworkURL, flag);
+ SetMetaExtraFromField(country_node, parser, stationcount_index, "stationcount");
services_discovery_AddItem(p_sd, country_node);
}
@@ -391,30 +417,6 @@ static void Close(vlc_object_t *p_this)
free(p_sys);
}
-/* Radio Browser's CSV API serializes missing optional values as "null". */
-static bool FieldHasValue(csv_parser *parser, int index)
-{
- return index >= 0 && parser->fields[index] != NULL &&
- parser->fields[index][0] != '\0' &&
- strcmp(parser->fields[index], "null") != 0;
-}
-
-static void SetMetaFromField(input_item_t *item, csv_parser *parser, int index, vlc_meta_type_t type)
-{
- if (!FieldHasValue(parser, index))
- return;
-
- input_item_SetMeta(item, type, parser->fields[index]);
-}
-
-static void SetMetaExtraFromField(input_item_t *item, csv_parser *parser, int index, const char *name)
-{
- if (!FieldHasValue(parser, index))
- return;
-
- input_item_SetMetaExtra(item, name, parser->fields[index]);
-}
-
static int ReadDirectory(stream_t *p_access, input_item_node_t *p_node)
{
access_sys_t *p_sys = p_access->p_sys;
@@ -458,6 +460,10 @@ static int ReadDirectory(stream_t *p_access, input_item_node_t *p_node)
int language_index = csv_parser_get_field_index(parser, "language");
int codec_index = csv_parser_get_field_index(parser, "codec");
int bitrate_index = csv_parser_get_field_index(parser, "bitrate");
+ int votes_index = csv_parser_get_field_index(parser, "votes");
+ int clickcount_index = csv_parser_get_field_index(parser, "clickcount");
+ int state_index = csv_parser_get_field_index(parser, "state");
+ int countrycode_index = csv_parser_get_field_index(parser, "countrycode");
if (name_index < 0 || url_index < 0)
{
msg_Err(p_access, "Missing required fields in station data");
@@ -499,8 +505,12 @@ static int ReadDirectory(stream_t *p_access, input_item_node_t *p_node)
SetMetaFromField(station_item, parser, tags_index, vlc_meta_Genre);
SetMetaFromField(station_item, parser, language_index, vlc_meta_Language);
- SetMetaExtraFromField(station_item, parser, codec_index, "Codec");
- SetMetaExtraFromField(station_item, parser, bitrate_index, "Bitrate (kb/s)");
+ SetMetaExtraFromField(station_item, parser, codec_index, "codec");
+ SetMetaExtraFromField(station_item, parser, bitrate_index, "bitrate");
+ SetMetaExtraFromField(station_item, parser, votes_index, "votes");
+ SetMetaExtraFromField(station_item, parser, clickcount_index, "clickcount");
+ SetMetaExtraFromField(station_item, parser, state_index, "state");
+ SetMetaExtraFromField(station_item, parser, countrycode_index, "countrycode");
input_item_node_AppendItem(p_node, station_item);
input_item_Release(station_item);
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/a8b776a10757ac6f7136278177592fc20ba381bb...182830d9743092f26588ade116035d20cbd28db3
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/a8b776a10757ac6f7136278177592fc20ba381bb...182830d9743092f26588ade116035d20cbd28db3
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help
More information about the vlc-commits
mailing list