X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fgofetch%2Fsupport%2FSeptSurSept.java;fp=src%2Fbe%2Fnikiroo%2Fgofetch%2Fsupport%2FSeptSurSept.java;h=6134f5725cea22cdb01bb402629cd83b1f7ed049;hb=9cf08a99ce4a796a2294fa1f14315aa16d97c3ce;hp=0000000000000000000000000000000000000000;hpb=c5850b2b4c929bf7fe77cc069ebfcc5c00ba9265;p=gofetch.git diff --git a/src/be/nikiroo/gofetch/support/SeptSurSept.java b/src/be/nikiroo/gofetch/support/SeptSurSept.java new file mode 100644 index 0000000..6134f57 --- /dev/null +++ b/src/be/nikiroo/gofetch/support/SeptSurSept.java @@ -0,0 +1,232 @@ +package be.nikiroo.gofetch.support; + +import java.io.IOException; +import java.net.URL; +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map.Entry; + +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.Node; + +/** + * Support https://www.7sur7.be/. + * + * @author niki + */ +public class SeptSurSept extends BasicSupport { + @Override + public String getDescription() { + return "7SUR7.be Info, sport et showbiz, 24/24, 7/7"; + } + + @Override + public void login() throws IOException { + addCookie("pwrefr2", ""); + addCookie("pwv-atXMVFeyFP1Ki09i", "1"); + addCookie("pwg-atXMVFeyFP1Ki09i", "basic"); + + addCookie("pwv", "1"); + addCookie("pw", "functional"); + + URL url = new URL("https://www.7sur7.be/7s7/privacy/callback.do" + + "?redirectUri=/" + "&pwv=1" + "&pws=functional%7Canalytics" + + "&days=3650" + "&referrer="); + + open(url).close(); + } + + @Override + protected List> getUrls() throws IOException { + List> urls = new ArrayList>(); + URL url = new URL("https://www.7sur7.be/"); + urls.add(new AbstractMap.SimpleEntry(url, "")); + + return urls; + } + + @Override + protected List getArticles(Document doc) { + return doc.getElementsByClass("clip"); + } + + @Override + protected String getArticleId(Document doc, Element article) { + String id = article.attr("id"); + if (id != null && id.startsWith("clip")) { + return id.substring("clip".length()); + } + + return null; + } + + @Override + protected String getArticleTitle(Document doc, Element article) { + return article.attr("data-title"); + } + + @Override + protected String getArticleAuthor(Document doc, Element article) { + return ""; + } + + @Override + protected String getArticleDate(Document doc, Element article) { + return article.attr("data-date"); + } + + @Override + protected String getArticleCategory(Document doc, Element article, + String currentCategory) { + Element parent = article.parent(); + if (parent != null) { + Element catElement = parent.previousElementSibling(); + if (catElement != null) { + return catElement.text(); + } + } + + return ""; + } + + @Override + protected String getArticleDetails(Document doc, Element article) { + return ""; + } + + @Override + protected String getArticleIntUrl(Document doc, Element article) { + return article.absUrl("href"); + } + + @Override + protected String getArticleExtUrl(Document doc, Element article) { + return ""; + } + + @Override + protected String getArticleContent(Document doc, Element article) { + return article.attr("data-intro").trim(); + } + + @Override + protected Element getFullArticle(Document doc) { + return doc.getElementById("detail_content"); + } + + @Override + protected List getFullArticleCommentPosts(Document doc, URL intUrl) { + return getSubCommentElements(doc.getElementsByClass("comment-list") + .first()); + } + + @Override + protected ElementProcessor getElementProcessorFullArticle() { + return new BasicElementProcessor() { + @Override + public boolean ignoreNode(Node node) { + return node.attr("class").contains("chapo"); + } + + @Override + public String isSubtitle(Node node) { + if (node instanceof Element) { + Element element = (Element) node; + if (element.tagName().startsWith("h") + && element.tagName().length() == 2) { + return element.text(); + } + } + return null; + } + }; + } + + @Override + protected List getCommentCommentPosts(Document doc, + Element container) { + return getSubCommentElements(container.getElementsByClass("children") + .first()); + } + + @Override + protected String getCommentId(Element post) { + Element idE = post.getElementsByTag("a").first(); + if (idE != null) { + return idE.attr("id"); + } + + return ""; + } + + @Override + protected String getCommentAuthor(Element post) { + // Since we have no title, we switch with author + return ""; + } + + @Override + protected String getCommentTitle(Element post) { + // Since we have no title, we switch with author + Element authorE = post.getElementsByTag("footer").first(); + if (authorE != null) { + authorE = authorE.getElementsByTag("cite").first(); + } + if (authorE != null) { + return authorE.text(); + } + + return ""; + } + + @Override + protected String getCommentDate(Element post) { + Element idE = post.getElementsByTag("a").first(); + if (idE != null) { + Element dateE = idE.getElementsByTag("span").first(); + if (dateE != null) { + return dateE.attr("data-epoch"); + } + } + + return ""; + } + + @Override + protected Element getCommentContentElement(Element post) { + Element contentE = post.getElementsByClass("comment-content").first(); + return contentE; + } + + @Override + protected ElementProcessor getElementProcessorComment() { + return new BasicElementProcessor() { + @Override + public boolean ignoreNode(Node node) { + if (node instanceof Element) { + Element el = (Element) node; + if ("h4".equals(el.tagName())) { + return true; + } + } + + return false; + } + }; + } + + private List getSubCommentElements(Element posts) { + List commentElements = new ArrayList(); + if (posts != null) { + for (Element possibleCommentElement : posts.children()) { + if (possibleCommentElement.hasClass("comment")) { + commentElements.add(possibleCommentElement); + } + } + } + + return commentElements; + } +}