cache.clear(sourceId);
}
+ String kijkwijzerCategorie(char c) {
+ switch (c) {
+ case 'a':
+ return("Angst");
+ case 'd':
+ return("Discriminatie");
+ case 's':
+ return("Seks");
+ case 'h':
+ return("Drugs/Alcohol");
+ case 'g':
+ return("Geweld");
+ case 't':
+ return("Grof taalgebruik");
+ default:
+ return null;
+ }
+ }
+
+
List<String> parseKijkwijzer(String s) {
List<String> result = new ArrayList<String>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
- switch (c) {
- case 'a':
- result.add("Angst");
- break;
- case 'd':
- result.add("Discriminatie");
- break;
- case 's':
- result.add("Seks");
- break;
- case 'h':
- result.add("Drugs/Alcohol");
- break;
- case 'g':
- result.add("Geweld");
- break;
- case 't':
- result.add("Grof taalgebruik");
- break;
- case '1':
- result.add("Voor alle leeftijden");
- break;
- case '2':
- result.add("Afgeraden voor kinderen jonger dan 6 jaar");
- break;
- case '9':
- result.add("Afgeraden voor kinderen jonger dan 9 jaar");
- break;
- case '3':
- result.add("Afgeraden voor kinderen jonger dan 12 jaar");
- break;
- case '4':
- result.add("Afgeraden voor kinderen jonger dan 16 jaar");
- break;
- case '5':
- break; // Lijkt op een foutje van RTL, bedoeld wordt wrsch
- // "12 jaar en ouder". Wordt op RTL tvgids niet
- // weegegeven.
- default:
- if (!config.quiet) {
- logger.warn("Unknown kijkwijzer character: " + c
- + " in string " + s);
- }
+ String tekst = kijkwijzerCategorie(c);
+ if(tekst!=null) {
+ result.add(tekst);
+ } else {
+ switch (c) {
+ case '1':
+ result.add("Voor alle leeftijden");
+ break;
+ case '2':
+ result.add("Afgeraden voor kinderen jonger dan 6 jaar");
+ break;
+ case '9':
+ result.add("Afgeraden voor kinderen jonger dan 9 jaar");
+ break;
+ case '3':
+ result.add("Afgeraden voor kinderen jonger dan 12 jaar");
+ break;
+ case '4':
+ result.add("Afgeraden voor kinderen jonger dan 16 jaar");
+ break;
+ case '5':
+ break; // Lijkt op een foutje van RTL, bedoeld wordt wrsch
+ // "12 jaar en ouder". Wordt op RTL tvgids niet
+ // weegegeven.
+ default:
+ if (!config.quiet) {
+ logger.warn("Unknown kijkwijzer character: " + c
+ + " in string " + s);
+ }
+ }
}
}
return result;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
List<Channel> result = new ArrayList<Channel>(10);
return new ArrayList<Channel>(channels.values());
}
+ /*
+ * (AL|6|9|12|16){0,1}[GASTHD]+
+ * AL = alle leeftijden
+ * A Angst
+ * G Geweld
+ * S Sex
+ * T Grof Taalgebruik
+ * H drugs/alcoHol
+ * D? Discriminatie
+ *
+ * Voorkomende combinaties:
+ * G
+ * GA
+ * GAT
+ * GST
+ * GT
+ * A
+ * AH
+ * AL
+ * ALT
+ * AT
+ * HT
+ * DT
+ * ST
+ */
+ private Pattern kijkwijzerPattern = Pattern.compile("^(AL|\\d+)(.*)");
@Override
List<String> parseKijkwijzer(String s) {
+ logger.trace("Kijkwijzer: " +s);
List<String> result = new ArrayList<String>();
- for (int i = 0; i < s.length(); i++) {
+ Matcher m = kijkwijzerPattern.matcher(s);
+ if (m.matches()) {
+ String l = m.group(1);
+ if(l.equals("AL")) {
+ result.add("Voor alle leeftijden");
+ } else {
+ int leeftijd = Integer.parseInt(l);
+ result.add("Afgeraden voor kinderen jonger dan "+leeftijd+" jaar");
+ }
+ String cat = m.group(2).toLowerCase();
+ for (int i = 0; i < cat.length(); i++) {
+ char c = cat.charAt(i);
+ String tekst = kijkwijzerCategorie(c);
+ if(tekst!=null) {
+ result.add(tekst);
+ } else {
+ logger.warn("Unknown RTL Kijkwijzer combination \""+s+"\"");
+ }
+ }
+ } else {
+ logger.warn("Unknown RTL Kijkwijzer combination \""+s+"\"");
}
return result;
}
if(abstractKey!=null) {
JSONObject abstrac = abstracts.get(abstractKey);
prog.addTitle(abstrac.getString("name"));
+ logger.debug("\""+prog.getFirstTitle()+"\"");
}
String episodeKey = schedule.optString("episode_key");
if(episodeKey!=null) {
if(s!=null && !s.isEmpty()) prog.addDescription(s);
String kijkwijzer = episode.optString("nicam");
if (kijkwijzer != null && !kijkwijzer.isEmpty()) {
- logger.debug("kijkwijzer: "+kijkwijzer);
- prog.addRating("kijkwijzer", kijkwijzer);
- /*
List<String> list = parseKijkwijzer(kijkwijzer);
if (config.joinKijkwijzerRatings) {
// mythtv doesn't understand multiple <rating> tags
prog.addRating("kijkwijzer", rating);
}
}
- */
}
}
String seasonKey = schedule.optString("season_key");