From: Jan-Pascal van Best Date: Wed, 15 Jan 2014 20:58:51 +0000 (+0100) Subject: Fix tests for new RTL implementation; fix subtitles in many cases in RTL X-Git-Tag: v1.6.0~2 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=a9ebc60687000566a01a92ac73fe86ae7bc7f745;p=tv_grab_nl_java Fix tests for new RTL implementation; fix subtitles in many cases in RTL --- diff --git a/src/main/java/org/vanbest/xmltv/RTL.java b/src/main/java/org/vanbest/xmltv/RTL.java index 18ecd5a..d49055f 100644 --- a/src/main/java/org/vanbest/xmltv/RTL.java +++ b/src/main/java/org/vanbest/xmltv/RTL.java @@ -167,14 +167,27 @@ public class RTL extends AbstractEPGSource implements EPGSource { String abstractKey = schedule.optString("abstract_key"); if(abstractKey!=null) { JSONObject abstrac = abstracts.get(abstractKey); - prog.addTitle(abstrac.getString("name")); - logger.debug("\""+prog.getFirstTitle()+"\""); + String name = abstrac.getString("name"); + if(name.endsWith(":")) name=name.substring(0, name.length()-1); + name=name.trim(); + prog.addTitle(name); + logger.trace("\""+prog.getFirstTitle()+"\""); } String episodeKey = schedule.optString("episode_key"); if(episodeKey!=null) { JSONObject episode = episodes.get(episodeKey); String s = episode.optString("name"); - if(s!=null && !s.isEmpty()) prog.addSecondaryTitle(s); + if(s!=null && !s.isEmpty()) { + String title = prog.getFirstTitle(); + if(title!=null && s.startsWith(title)) { + s=s.substring(title.length(), s.length()).trim(); + if(s.startsWith(":")) s=s.substring(1,s.length()).trim(); + if(s.startsWith("-")) s=s.substring(1,s.length()).trim(); + if(s.startsWith("\"")) s=s.substring(1,s.length()).trim(); + if(s.endsWith("\"")) s=s.substring(0,s.length()-1).trim(); + } + prog.addSecondaryTitle(s); + } s = episode.optString("episode_number"); if(s!=null && !s.isEmpty()) prog.addEpisode(s, "onscreen"); s = episode.optString("synopsis"); @@ -252,7 +265,7 @@ public class RTL extends AbstractEPGSource implements EPGSource { String station=schedule.getString("station"); if (!channelMap.containsKey(station)) { if (!config.quiet) - logger.info("Skipping programmes for channel " + station); + logger.trace("Skipping programmes for channel " + station); continue; } result.add(createProgramme(schedule, channelMap)); diff --git a/src/test/java/org/vanbest/xmltv/RTLTest.java b/src/test/java/org/vanbest/xmltv/RTLTest.java index 07f0ff3..b79764d 100644 --- a/src/test/java/org/vanbest/xmltv/RTLTest.java +++ b/src/test/java/org/vanbest/xmltv/RTLTest.java @@ -3,6 +3,7 @@ package org.vanbest.xmltv; import static org.junit.Assert.*; import java.util.Calendar; +import java.util.GregorianCalendar; import java.util.List; import org.junit.AfterClass; @@ -36,16 +37,16 @@ public class RTLTest { public void testgetChannels() { fetchChannels(); - // there should be a least 20 channels - assertTrue("There should be at least 20 channels from rtl.nl", - channels.size() >= 20); + // there should be a least 4 channels + assertTrue("There should be at least 4 channels from rtl.nl", + channels.size() >= 4); // there should be an "RTL 4" channel boolean foundRTL4 = false; for (Channel c : channels) { - if (c.defaultName().equals("RTL 4")) { + if (c.defaultName().equals("RTL4")) { foundRTL4 = true; - assertFalse("RTL 4 channel should have at least one icon", - c.icons.isEmpty()); + // Not supplied any more 20140115 + //assertFalse("RTL4 channel should have at least one icon", c.icons.isEmpty()); } assertEquals("All channels should have RTL.nl source id", RTL_SOURCE_ID, c.source); @@ -61,104 +62,107 @@ public class RTLTest { } @Test - public void testFindGTSTRerun() throws Exception { - fetchChannels(); - Channel rtl4 = null; - for (Channel c : channels) { - if (c.defaultName().equals("RTL 4")) { - rtl4 = c; - break; - } - } - assertNotNull("Should be able to find RTL 4 channel", rtl4); - - List today = rtl.getProgrammes(rtl4, 0); - assertTrue("Expect at leat 10 programmes for a day", today.size() >= 10); - - Calendar now = Calendar.getInstance(); - if (now.get(Calendar.MONTH) <= Calendar.MAY - || now.get(Calendar.MONTH) >= Calendar.SEPTEMBER) { - int offset; - switch (now.get(Calendar.DAY_OF_WEEK)) { - case Calendar.SATURDAY: - offset = 2; - break; - case Calendar.SUNDAY: - offset = 1; - break; - default: - offset = 0; - } - int rerun; - switch (now.get(Calendar.DAY_OF_WEEK)) { - case Calendar.FRIDAY: - rerun = 3; - break; - case Calendar.SATURDAY: - rerun = 3; - break; - case Calendar.SUNDAY: - rerun = 2; - break; - default: - rerun = 1; - } - List first = rtl.getProgrammes(rtl4, offset); - Programme gtstOriginal = null; - for (Programme p : first) { - if (p.getFirstTitle().matches("Goede Tijden.*")) { - if (p.startTime.getHours() >= 19) { - gtstOriginal = p; - break; - } - } - } - assertNotNull( - "Should have a programme called Goede Tijden, Slechte Tijden after 19:00 on date with offset " - + offset + " for today", gtstOriginal); - assertNotNull("GTST should have a description", - gtstOriginal.descriptions); - assertTrue("GTST should have at least one description", - gtstOriginal.descriptions.size() > 0); - assertNotNull( - "GTST should have at least one non-empty description", - gtstOriginal.descriptions.get(0).title); - assertFalse("GTST should have at least one non-empty description", - gtstOriginal.descriptions.get(0).title.isEmpty()); - - /* Not provided any more - assertNotNull("GTST should have kijkwijzer information", - gtstOriginal.ratings); - assertTrue("GTST should have at least one kijkwijzer ratings", - gtstOriginal.ratings.size() >= 1); - assertNotNull("GTST rating should have kijkwijzer system", - gtstOriginal.ratings.get(0).system); - assertTrue("GTST rating should have kijkwijzer system filled in", - gtstOriginal.ratings.get(0).system.matches(".*ijkwijz.*")); - assertNotNull("GTST rating should have value", - gtstOriginal.ratings.get(0).value); - assertFalse("GTST rating should have value", - gtstOriginal.ratings.get(0).value.isEmpty()); - */ - - List reruns = rtl.getProgrammes(rtl4, rerun); - Programme gtstRerun = null; - for (Programme p : reruns) { - if (p.getFirstTitle().matches("Goede Tijden.*")) { - if (p.startTime.getHours() <= 15) { - gtstRerun = p; - break; - } - } - } - assertNotNull( - "Should have a programme called Goede Tijden, Slechte Tijden before 15:00 on date with offset " - + rerun, gtstRerun); - - assertEquals( - "GTST rerun should have the same description as the original", - gtstRerun.descriptions.get(0).title, - gtstOriginal.descriptions.get(0).title); - } - } + public void testFindGTSTRerun() throws Exception { + fetchChannels(); + Channel rtl4 = null; + for (Channel c : channels) { + if (c.defaultName().equals("RTL4")) { + rtl4 = c; + break; + } + } + assertNotNull("Should be able to find RTL 4 channel", rtl4); + + List today = rtl.getProgrammes(rtl4, 0); + assertTrue("Expect at leat 10 programmes for a day", today.size() >= 10); + + GregorianCalendar now = new GregorianCalendar(); + if (now.get(Calendar.MONTH) <= Calendar.MAY || now.get(Calendar.MONTH) >= Calendar.SEPTEMBER) { + int offset; + switch (now.get(Calendar.DAY_OF_WEEK)) { + case Calendar.SATURDAY: + offset = 2; + break; + case Calendar.SUNDAY: + offset = 1; + break; + default: + offset = 0; + } + int rerun; + switch (now.get(Calendar.DAY_OF_WEEK)) { + case Calendar.FRIDAY: + rerun = 3; + break; + case Calendar.SATURDAY: + rerun = 3; + break; + case Calendar.SUNDAY: + rerun = 2; + break; + default: + rerun = 1; + } + List first = rtl.getProgrammes(rtl4, offset); + Calendar origCalendar = now; + origCalendar.add(Calendar.DAY_OF_MONTH, offset); + Programme gtstOriginal = null; + for (Programme p : first) { + if (p.getFirstTitle().matches("Goede Tijden.*")) { + Calendar cal = new GregorianCalendar(); + cal.setTime(p.startTime); + if (cal.get(Calendar.DAY_OF_MONTH)==origCalendar.get(Calendar.DAY_OF_MONTH) + && cal.get(Calendar.HOUR_OF_DAY) >= 19) { + gtstOriginal = p; + break; + } + } + } + assertNotNull("Should have a programme called Goede Tijden, Slechte Tijden after 19:00 on date with offset " + + offset + " for today", gtstOriginal); + assertNotNull("GTST should have a description", gtstOriginal.descriptions); + assertTrue("GTST should have at least one description", + gtstOriginal.descriptions.size() > 0); + assertNotNull("GTST should have at least one non-empty description", + gtstOriginal.descriptions.get(0).title); + assertFalse("GTST should have at least one non-empty description", + gtstOriginal.descriptions.get(0).title.isEmpty()); + + assertNotNull("GTST should have kijkwijzer information", + gtstOriginal.ratings); + assertTrue("GTST should have at least one kijkwijzer ratings", + gtstOriginal.ratings.size() >= 1); + assertNotNull("GTST rating should have kijkwijzer system", + gtstOriginal.ratings.get(0).system); + assertTrue("GTST rating should have kijkwijzer system filled in", + gtstOriginal.ratings.get(0).system.matches(".*ijkwijz.*")); + assertNotNull("GTST rating should have value", + gtstOriginal.ratings.get(0).value); + assertFalse("GTST rating should have value", + gtstOriginal.ratings.get(0).value.isEmpty()); + + List reruns = rtl.getProgrammes(rtl4, rerun); + Calendar rerunCalendar = now; + rerunCalendar.add(Calendar.DAY_OF_MONTH, rerun); + Programme gtstRerun = null; + for (Programme p : reruns) { + if (p.getFirstTitle().matches("Goede Tijden.*")) { + Calendar cal = new GregorianCalendar(); + cal.setTime(p.startTime); + if (cal.get(Calendar.DAY_OF_MONTH)==rerunCalendar.get(Calendar.DAY_OF_MONTH) + && p.startTime.getHours() <= 15) { + gtstRerun = p; + break; + } + } + } + assertNotNull("Should have a programme called Goede Tijden, Slechte Tijden before 15:00 on date with offset " + + rerun, gtstRerun); + System.out.println("GTST original: "+gtstOriginal.toString()); + System.out.println("GTST rerun: "+gtstRerun.toString()); + assertEquals("GTST rerun should have the same description as the original", + gtstRerun.descriptions.get(0).title, + gtstOriginal.descriptions.get(0).title); + } + } }