X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=crawler%2Fkiss%2Fsrc%2Forg%2Fwamblee%2Fcrawler%2Fkiss%2FKissCrawler.java;h=29d7c84940717d76711593e43c0e88272f011144;hb=8baad2389febcbcd9132fbb62e6329247275a000;hp=e8687d9d09a5d01f15090592bce528bae1091c65;hpb=f917d1e82b25e297fc485c7ca8de4a6f4cc641cd;p=utils diff --git a/crawler/kiss/src/org/wamblee/crawler/kiss/KissCrawler.java b/crawler/kiss/src/org/wamblee/crawler/kiss/KissCrawler.java index e8687d9d..29d7c849 100644 --- a/crawler/kiss/src/org/wamblee/crawler/kiss/KissCrawler.java +++ b/crawler/kiss/src/org/wamblee/crawler/kiss/KissCrawler.java @@ -25,7 +25,6 @@ import java.io.InputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.Date; -import java.util.EnumMap; import java.util.List; import java.util.Properties; import java.util.regex.Matcher; @@ -41,7 +40,6 @@ import javax.mail.internet.MimeMessage; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.wamblee.conditions.Condition; import org.wamblee.crawler.Action; import org.wamblee.crawler.Configuration; import org.wamblee.crawler.Crawler; @@ -49,7 +47,6 @@ import org.wamblee.crawler.Page; import org.wamblee.crawler.PageException; import org.wamblee.crawler.impl.ConfigurationParser; import org.wamblee.crawler.impl.CrawlerImpl; -import org.wamblee.crawler.kiss.Program.RecordingResult; /** * The KiSS crawler for automatic recording of interesting TV shows. @@ -131,17 +128,16 @@ public class KissCrawler { // client.getHostConfiguration().setProxy("127.0.0.1", 3128); Crawler crawler = createCrawler(aCrawlerConfig, os, client); + InputStream programConfigFile = new FileInputStream(new File( + aProgramConfig)); + List programFilters = new ProgramConfigurationParser() + .parse(programConfigFile); Page page = getStartPage(aStartUrl, crawler); TVGuide guide = createGuide(page); PrintVisitor printer = new PrintVisitor(System.out); guide.accept(printer); - - InputStream programConfigFile = new FileInputStream(new File( - aProgramConfig)); - Condition programCondition = new ProgramConfigurationParser() - .parse(programConfigFile); - recordInterestingShows(programCondition, guide); + processResults(programFilters, guide); } finally { os.flush(); os.close(); @@ -159,40 +155,18 @@ public class KissCrawler { * @throws MessagingException * In case of problems sending a summary mail. */ - private void recordInterestingShows(Condition aProgramCondition, + private void processResults(List aProgramCondition, TVGuide aGuide) throws MessagingException { - MatchVisitor matcher = new MatchVisitor(aProgramCondition); - aGuide.accept(matcher); - List programs = matcher.getMatches(); - EnumMap> messages = new EnumMap>( - RecordingResult.class); - for (RecordingResult result: RecordingResult.values()) { - messages.put(result, new ArrayList()); - } - for (Program program : programs) { - try { - Program.RecordingResult result = program.record(); - messages.get(result).add(program); - } catch (PageException e) { - LOG.info("Attempt to record " + program + " failed."); - messages.get(RecordingResult.ERROR).add(program); + ProgramActionExecutor executor = new ProgramActionExecutor(); + for (ProgramFilter filter : aProgramCondition) { + List programs = filter.apply(aGuide); + ProgramAction action = filter.getAction(); + for (Program program: programs) { + action.execute(program, executor); } } - String msg = "Summary of KiSS crawler: \n\n\n"; - - - for (RecordingResult result: RecordingResult.values()) { - if ( messages.get(result).size() > 0 ) { - msg += result.getDescription() + "\n\n"; - for (Program program: messages.get(result)) { - msg += program + "\n"; - } - } - } - if ( programs.size() == 0 ) { - msg += "No suitable programs found"; - } - + executor.commit(); + String msg = executor.getReport(); System.out.println(msg); sendMail(msg); } @@ -257,8 +231,8 @@ public class KissCrawler { Channel channel = createChannel(action.getName(), action .execute().getAction("right-now").execute()); channels.add(channel); - if ( SystemProperties.isDebugMode() ) { - break; // Only one channel is crawled. + if (SystemProperties.isDebugMode()) { + break; // Only one channel is crawled. } } catch (PageException e) { LOG.error("Could not create channel information for '" @@ -301,14 +275,14 @@ public class KissCrawler { .getText().trim(); } catch (PageException e) { LOG - .warn("Program details coul dnot be determined for '" - + action.getName() + "'"); + .warn("Program details could not be determined for '" + + action.getName() + "'", e); } } Program program = new Program(aChannel, action.getName(), description, keywords, interval, action); - LOG.debug("Got program " + program); + LOG.info("Got program " + program); programs.add(program); } }