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;
- }
});
}
}