X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fgofetch%2Fsupport%2FPipedot.java;h=9ea70ff4bfcb37f2a6c08648857332dfd44282af;hb=c9cffa913fe4ebc5cbe483cc5afe676e6cb54abd;hp=1bd5173b331e6e2ee69552efaa77e964a1e3fe20;hpb=27008a8782c0ed96e07c8dc39ff0ed1f5163a9d0;p=gofetch.git diff --git a/src/be/nikiroo/gofetch/support/Pipedot.java b/src/be/nikiroo/gofetch/support/Pipedot.java index 1bd5173..9ea70ff 100644 --- a/src/be/nikiroo/gofetch/support/Pipedot.java +++ b/src/be/nikiroo/gofetch/support/Pipedot.java @@ -31,11 +31,11 @@ public class Pipedot extends BasicSupport { List list = new ArrayList(); URL url = new URL("https://pipedot.org/"); - InputStream in = open(url); + InputStream in = downloader.open(url); Document doc = DataUtil.load(in, "UTF-8", url.toString()); - Elements stories = doc.getElementsByClass("story"); - for (Element story : stories) { - Elements titles = story.getElementsByTag("h1"); + Elements articles = doc.getElementsByClass("story"); + for (Element article : articles) { + Elements titles = article.getElementsByTag("h1"); if (titles.size() == 0) { continue; } @@ -43,7 +43,7 @@ public class Pipedot extends BasicSupport { Element title = titles.get(0); String id = ""; - for (Element idElem : story.getElementsByTag("a")) { + for (Element idElem : article.getElementsByTag("a")) { if (idElem.attr("href").startsWith("/pipe/")) { id = idElem.attr("href").substring("/pipe/".length()); break; @@ -53,7 +53,7 @@ public class Pipedot extends BasicSupport { String intUrl = null; String extUrl = null; - Elements links = story.getElementsByTag("a"); + Elements links = article.getElementsByTag("a"); if (links.size() > 0) { intUrl = links.get(0).absUrl("href"); } @@ -68,13 +68,42 @@ public class Pipedot extends BasicSupport { } String details = ""; - Elements detailsElements = story.getElementsByTag("div"); + Elements detailsElements = article.getElementsByTag("div"); if (detailsElements.size() > 0) { - details = detailsElements.get(0).text(); + details = detailsElements.get(0).text().trim(); } + String author = ""; + int pos = details.indexOf("by "); + if (pos >= 0) { + author = details.substring(pos + "by ".length()).trim(); + pos = author.indexOf(" in "); + if (pos >= 0) { + author = author.substring(0, pos).trim(); + } + } + + String categ = ""; + pos = details.indexOf(" in "); + if (pos >= 0) { + categ = details.substring(pos + " in ".length()).trim(); + pos = categ.indexOf(" on "); + if (pos >= 0) { + categ = categ.substring(0, pos).trim(); + } + } + + String date = ""; + Element dateElement = article.getElementsByTag("time").first(); + if (dateElement != null) { + date = date(dateElement.attr("datetime")); + } + + // We already have all the details (date, author, id, categ) + details = ""; + String body = ""; - for (Element elem : story.children()) { + for (Element elem : article.children()) { String tag = elem.tag().toString(); if (!tag.equals("header") && !tag.equals("footer")) { body = elem.text(); @@ -82,8 +111,8 @@ public class Pipedot extends BasicSupport { } } - list.add(new Story(getType(), id, title.text(), details, intUrl, - extUrl, body)); + list.add(new Story(getType(), id, title.text(), author, date, + categ, details, intUrl, extUrl, body)); } return list; @@ -94,7 +123,7 @@ public class Pipedot 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()); Elements listing = doc.getElementsByTag("main"); if (listing.size() > 0) { @@ -142,12 +171,7 @@ public class Pipedot extends BasicSupport { } private List toLines(Element element) { - return toLines(element, new QuoteProcessor() { - @Override - public String processText(String text) { - return text; - } - + return toLines(element, new BasicElementProcessor() { @Override public boolean detectQuote(Node node) { if (node instanceof Element) { @@ -160,11 +184,6 @@ public class Pipedot extends BasicSupport { return false; } - - @Override - public boolean ignoreNode(Node node) { - return false; - } }); } }