]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
xmltv: fixed parsing of star-rating
authorJohn Törnblom <john@workstation.(none)>
Thu, 7 Mar 2013 22:36:30 +0000 (23:36 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Tue, 26 Mar 2013 10:34:15 +0000 (10:34 +0000)
src/epggrab/module/xmltv.c
src/main.c

index d8616f9a02788cc1f09b30d064bffe1ca8ddb143..e00d002bee4e89efd6d9e08c0ba2a8a4bdb739ba 100644 (file)
@@ -354,14 +354,22 @@ static int _xmltv_parse_previously_shown
  * Star rating
  */
 static int _xmltv_parse_star_rating
-  ( epggrab_module_t *mod, epg_episode_t *ee, htsmsg_t *tags )
+  ( epggrab_module_t *mod, epg_episode_t *ee, htsmsg_t *body )
 {
-  int a, b;
-  const char *stars;
-  if (!mod || !ee || !tags) return 0;
-  if (!(stars = htsmsg_xml_get_cdata_str(tags, "star-rating"))) return 0;
-  if (sscanf(stars, "%d/%d", &a, &b) != 2) return 0;
-  return epg_episode_set_star_rating(ee, (5 * a) / b, mod);
+  double a, b;
+  htsmsg_t *stars, *tags;
+  const char *s1, *s2;
+
+  if (!mod || !ee || !body) return 0;
+  if (!(stars = htsmsg_get_map(body, "star-rating"))) return 0;
+  if (!(tags  = htsmsg_get_map(stars, "tags"))) return 0;
+  if (!(s1 = htsmsg_xml_get_cdata_str(tags, "value"))) return 0;
+  if (!(s2 = strstr(s1, "/"))) return 0;
+
+  a = atof(s1);
+  b = atof(s2 + 1);
+
+  return epg_episode_set_star_rating(ee, (100 * a) / b, mod);
 }
 
 /*
index 77ee86d84e8b1b458748528ce1aedaa53110fee3..128e5d5c2edaef178d1f83a74f500217d176f6cd 100644 (file)
@@ -487,6 +487,7 @@ main(int argc, char **argv)
 
   /* Set locale */
   setlocale(LC_ALL, "");
+  setlocale(LC_NUMERIC, "C");
 
   /* make sure the timezone is set */
   tzset();