Fixed deviantArt "no next page found" error

The pagination buttons are gone. The "coffset" buttons for comment
pages, not gallery pages. I patched this by using a link found in the
HTML itself that I think is used by JavaScript to generate the
pagination buttons.
This commit is contained in:
Wiiplay123 2017-04-27 00:18:42 -05:00
parent f2afb840dd
commit 4cf9f09293

View File

@ -201,14 +201,15 @@ public class DeviantartRipper extends AbstractHTMLRipper {
if (isThisATest()) { if (isThisATest()) {
return null; return null;
} }
Elements nextButtons = page.select("li.next > a"); Elements nextButtons = page.select("link[rel=\"next\"]");
if (nextButtons.size() == 0) { if (nextButtons.size() == 0) {
if (page.select("link[rel=\"prev\"]").size() == 0) {
throw new IOException("No next page found"); throw new IOException("No next page found");
} } else {
Element a = nextButtons.first();
if (a.hasClass("disabled")) {
throw new IOException("Hit end of pages"); throw new IOException("Hit end of pages");
} }
}
Element a = nextButtons.first();
String nextPage = a.attr("href"); String nextPage = a.attr("href");
if (nextPage.startsWith("/")) { if (nextPage.startsWith("/")) {
nextPage = "http://" + this.url.getHost() + nextPage; nextPage = "http://" + this.url.getHost() + nextPage;
@ -306,7 +307,7 @@ public class DeviantartRipper extends AbstractHTMLRipper {
if (fullSize == null) { if (fullSize == null) {
return new String[] {Jsoup.clean(ele.html().replaceAll("\\\\n", System.getProperty("line.separator")), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false))}; return new String[] {Jsoup.clean(ele.html().replaceAll("\\\\n", System.getProperty("line.separator")), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false))};
} }
fullSize = fullSize.substring(0,fullSize.lastIndexOf(".")); fullSize = fullSize.substring(0, fullSize.lastIndexOf("."));
return new String[] {Jsoup.clean(ele.html().replaceAll("\\\\n", System.getProperty("line.separator")), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false)),fullSize}; return new String[] {Jsoup.clean(ele.html().replaceAll("\\\\n", System.getProperty("line.separator")), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false)),fullSize};
// TODO Make this not make a newline if someone just types \n into the description. // TODO Make this not make a newline if someone just types \n into the description.
} catch (IOException ioe) { } catch (IOException ioe) {