package rss; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.DOMException; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import main.Bot; import main.Main; /** * Cette classe verifie si il y a de nouveaux articles sur le flux RSS. * Dans ce cas, il les affiche et les met en mémoire pour l'action +RSS * @author marmat */ public class RSSChecker implements Runnable { private Thread thread; private final String threadName="RssChecker"; private long timeout=3600; private String rssaddr; // Must be https://planet.ffdn.org/atom.xml boolean end = false; DocumentBuilderFactory docbfact=DocumentBuilderFactory.newInstance(); private Date lastarticle = new Date(); //last info public static final SimpleDateFormat DATE_FORMATIN = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss'Z'"); private Bot b; private volatile RssDataRemainder remainder; public RSSChecker() { this("",null); } public RSSChecker(String address, Bot b) { this.rssaddr = address; this.b=b; this.remainder = b.getRssdata(); } public void start() { if(thread == null) { thread = new Thread(this, this.threadName); thread.start(); } } private void afficheArticle(RssData data) { b.sendMessagesOnAllChannels(data.toStringIRC()); } private void afficheArticle(Node article) { afficheArticle(new RssData(article)); } private void workOnEntry(NodeList nl) { if(Main.isDebug()) { System.out.println("Verification des "); System.out.println("Dernier article le: "+Main.DATE_FORMAT_OUT.format(lastarticle)); } int len = nl.getLength(); boolean istherenews = false; for(int i=len-1; i>=0;i--) { Node article = nl.item(i); NodeList fils = article.getChildNodes(); int flen = fils.getLength(); for(int j=0; j=0;--i) { RssData data = new RssData(nl.item(i)); remainder.push(data); } } public String getRssaddr() { return rssaddr; } public void setRssaddr(String rssaddr) { this.rssaddr = rssaddr; } public long getTimeout() { return timeout; } public void setTimeout(long timeout) { this.timeout = timeout; } }