Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

novelfull_com.java #392

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 54 additions & 63 deletions src/main/java/grabber/sources/biquge_se.java
Original file line number Diff line number Diff line change
@@ -1,100 +1,91 @@
package grabber.sources;

import grabber.Chapter;
import grabber.GrabberUtils;
import grabber.Novel;
import grabber.NovelMetadata;
import org.jsoup.HttpStatusException;
import grabber.*;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class biquge_se implements Source {
private final String name = "Biquge";
private final String url = "http://www.biquge.se/";
private final boolean canHeadless = false;
private Novel novel;
public class novelfull_com extends Source implements Initializable {
private final Novel novel;
private Document toc;

public biquge_se(Novel novel) {
private String bookTitle;
private String bookAuthor;
private String bookCover;
private String bookDesc;
private List<Chapter> chapters = new ArrayList<>();
private String nextChapterBtn = "";
private boolean reGrab = false;

public novelfull_com(Novel novel) {
this.novel = novel;
}

public biquge_se() {
}

public String getName() {
return name;
}

public boolean canHeadless() {
return canHeadless;
}

public String toString() {
return name;
}

public String getUrl() {
return url;
@Override
public void init() {
}

public List<Chapter> getChapterList() {
List<Chapter> chapterList = new ArrayList();
try {
toc = Jsoup.connect(novel.novelLink).cookies(novel.cookies).get();
Elements chapterLinks = toc.select("#list dl dd:gt(10) a");
toc = Jsoup.connect(novel.novelLink).get();
Elements chapterLinks = toc.select(".list-chapter li a");
for (Element chapterLink : chapterLinks) {
chapterList.add(new Chapter(chapterLink.text(), chapterLink.attr("abs:href")));
String chapterName = chapterLink.text();
String chapterUrl = chapterLink.attr("abs:href");
chapters.add(new Chapter(chapterName, chapterUrl));
}
} catch (HttpStatusException httpEr) {
GrabberUtils.err(novel.window, GrabberUtils.getHTMLErrMsg(httpEr));
} catch (IOException e) {
GrabberUtils.err(novel.window, "Could not connect to webpage!", e);
} catch (NullPointerException e) {
GrabberUtils.err(novel.window, "Could not find expected selectors. Correct novel link?", e);
} catch (IOException | NullPointerException e) {
GrabberUtils.err(novel.window, "Could not get chapter list from: " + novel.novelLink, e);
}
return chapterList;
return chapters;
}

public Element getChapterContent(Chapter chapter) {
Element chapterBody = null;
public String getChapterContent(Chapter chapter) {
Element chapterContent = null;
try {
Document doc = Jsoup.connect(chapter.chapterURL).cookies(novel.cookies).get();
chapterBody = doc.select("#content").first();
} catch (HttpStatusException httpEr) {
GrabberUtils.err(novel.window, GrabberUtils.getHTMLErrMsg(httpEr));
Document doc = Jsoup.connect(chapter.chapterURL).get();
chapterContent = doc.select("#chapter-content").first();
} catch (IOException e) {
GrabberUtils.err(novel.window, "Could not connect to webpage!", e);
GrabberUtils.err(novel.window, "Could not get chapter content from: " + chapter.chapterURL, e);
}
return chapterBody;
return chapterContent != null ? chapterContent.toString() : "";
}

public NovelMetadata getMetadata() {
NovelMetadata metadata = new NovelMetadata();

if (toc != null) {
metadata.setTitle(toc.selectFirst("meta[property=og:title]").attr("content"));
metadata.setAuthor(toc.selectFirst("meta[property=og:novel:author]").attr("content"));
metadata.setDescription(toc.selectFirst("#intro").text());
metadata.setBufferedCover(toc.selectFirst("meta[property=og:image]").attr("content"));

List<String> subjects = new ArrayList<>();
subjects.add(toc.select("meta[property=og:novel:category]").attr("content"));
metadata.setSubjects(subjects);
public void getNovelMetadata() {
if (toc == null) {
GrabberUtils.err("Table of contents not loaded. Cannot get novel metadata.");
return;
}

return metadata;
Element titleElement = toc.select(".book h3").first();
bookTitle = titleElement != null ? titleElement.text() : "";
Element authorElement = toc.select(".info a[href*=author]").first();
bookAuthor = authorElement != null ? authorElement.text() : "";
Element descElement = toc.select(".desc-text").first();
bookDesc = descElement != null ? descElement.text() : "";
Element coverElement = toc.select(".book img").first();
bookCover = coverElement != null ? coverElement.attr("abs:src") : "";
novel.setMetadata(bookTitle, bookAuthor, bookCover, null, bookDesc);
}

@Override
public List<String> getBlacklistedTags() {
List blacklistedTags = new ArrayList();
List<String> blacklistedTags = new ArrayList<>();
blacklistedTags.add("script");
blacklistedTags.add("style");
return blacklistedTags;
}

@Override
public Map<String, String> getCookies() {
return null;
}
}