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