X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fgofetch%2Fsupport%2FSlashdot.java;h=4746cc2eacfb28b41d3983ae6baddd34e5939dd0;hb=31755801cf5c2e2502e1222928d56c11f64dbdfe;hp=378b3a4bfdb0cf0c7277397075ccf13d4c33aff5;hpb=100a839503d23e324d2db3f6d3e47892def3bf81;p=gofetch.git diff --git a/src/be/nikiroo/gofetch/support/Slashdot.java b/src/be/nikiroo/gofetch/support/Slashdot.java index 378b3a4..4746cc2 100644 --- a/src/be/nikiroo/gofetch/support/Slashdot.java +++ b/src/be/nikiroo/gofetch/support/Slashdot.java @@ -14,6 +14,7 @@ import org.jsoup.select.Elements; import be.nikiroo.gofetch.data.Comment; import be.nikiroo.gofetch.data.Story; +import be.nikiroo.utils.StringUtils; /** * Support https://slashdot.org/. @@ -31,7 +32,7 @@ public class Slashdot extends BasicSupport { List list = new ArrayList(); URL url = new URL("https://slashdot.org/"); - InputStream in = open(url); + InputStream in = downloader.open(url); Document doc = DataUtil.load(in, "UTF-8", url.toString()); Elements articles = doc.getElementsByTag("header"); for (Element article : articles) { @@ -63,14 +64,38 @@ public class Slashdot extends BasicSupport { details = detailsElements.get(0).text(); } + // details: + // "Posted by AUTHOR on DATE from the further-crackdown dept." + String author = ""; + int pos = details.indexOf(" on "); + if (details.startsWith("Posted by ") && pos >= 0) { + author = details.substring("Posted by ".length(), pos).trim(); + } + pos = details.indexOf(" from the "); + if (pos >= 0) { + details = details.substring(pos).trim(); + } + String body = ""; Element bodyElement = doc.getElementById("text-" + id); if (bodyElement != null) { body = bodyElement.text(); } - list.add(new Story(getType(), id, title.text(), details, intUrl, - extUrl, body)); + String categ = ""; + Element categElement = doc.getElementsByClass("topic").first(); + if (categElement != null) { + categ = StringUtils.unhtml(categElement.text()).trim(); + } + + String date = ""; + Element dateElement = doc.getElementsByTag("time").first(); + if (dateElement != null) { + date = StringUtils.unhtml(dateElement.text()).trim(); + } + + list.add(new Story(getType(), id, title.text(), author, date, + categ, details, intUrl, extUrl, body)); } return list; @@ -81,7 +106,7 @@ public class Slashdot extends BasicSupport { List comments = new ArrayList(); URL url = new URL(story.getUrlInternal()); - InputStream in = open(url); + InputStream in = downloader.open(url); Document doc = DataUtil.load(in, "UTF-8", url.toString()); Element listing = doc.getElementById("commentlisting"); if (listing != null) { @@ -138,7 +163,7 @@ public class Slashdot extends BasicSupport { } private List toLines(Element element) { - return toLines(element, new QuoteProcessor() { + return toLines(element, new BasicElementProcessor() { @Override public String processText(String text) { while (text.startsWith(">")) { // comment in one-liners @@ -164,16 +189,6 @@ public class Slashdot extends BasicSupport { return false; } - - @Override - public boolean ignoreNode(Node node) { - return false; - } - - @Override - public String manualProcessing(Node node) { - return null; - } }); } }