Temp fix for some errors brought on by the 1.6.0 update

This commit is contained in:
cyian-1756 2017-10-26 04:38:10 -04:00
parent 57d8cb3487
commit 3db32d2ffc

View File

@ -1,169 +1,169 @@
package com.rarchives.ripme.ripper.rippers; // package com.rarchives.ripme.ripper.rippers;
//
import com.rarchives.ripme.ripper.AbstractHTMLRipper; // import com.rarchives.ripme.ripper.AbstractHTMLRipper;
import com.rarchives.ripme.ripper.DownloadThreadPool; // import com.rarchives.ripme.ripper.DownloadThreadPool;
import com.rarchives.ripme.utils.Http; // import com.rarchives.ripme.utils.Http;
import com.rarchives.ripme.utils.Utils; // import com.rarchives.ripme.utils.Utils;
import java.io.IOException; // import java.io.IOException;
import java.io.UnsupportedEncodingException; // import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException; // import java.net.MalformedURLException;
import java.net.URL; // import java.net.URL;
import java.net.URLDecoder; // import java.net.URLDecoder;
import java.util.ArrayList; // import java.util.ArrayList;
import java.util.List; // import java.util.List;
import java.util.logging.Level; // import java.util.logging.Level;
import java.util.logging.Logger; // import java.util.logging.Logger;
import org.jsoup.nodes.Document; // import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element; // import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; // import org.jsoup.select.Elements;
//
public class E621Ripper extends AbstractHTMLRipper { // public class E621Ripper extends AbstractHTMLRipper {
private static final int POOL_IMAGES_PER_PAGE = 24; // private static final int POOL_IMAGES_PER_PAGE = 24;
//
private DownloadThreadPool e621ThreadPool = new DownloadThreadPool("e621"); // private DownloadThreadPool e621ThreadPool = new DownloadThreadPool("e621");
//
private E621Ripper(URL url) throws IOException { // private E621Ripper(URL url) throws IOException {
super(url); // super(url);
} // }
//
@Override // @Override
public DownloadThreadPool getThreadPool() { // public DownloadThreadPool getThreadPool() {
return e621ThreadPool; // return e621ThreadPool;
} // }
//
@Override // @Override
public String getDomain() { // public String getDomain() {
return "e621.net"; // return "e621.net";
} // }
//
@Override // @Override
public String getHost() { // public String getHost() {
return "e621"; // return "e621";
} // }
//
@Override // @Override
public Document getFirstPage() throws IOException { // public Document getFirstPage() throws IOException {
if (url.getPath().startsWith("/pool/show/")) { // if (url.getPath().startsWith("/pool/show/")) {
return Http.url("https://e621.net/pool/show/" + getTerm(url)).get(); // return Http.url("https://e621.net/pool/show/" + getTerm(url)).get();
} else { // } else {
return Http.url("https://e621.net/post/index/1/" + getTerm(url)).get(); // return Http.url("https://e621.net/post/index/1/" + getTerm(url)).get();
} // }
} // }
//
@Override // @Override
public List<String> getURLsFromPage(Document page) { // public List<String> getURLsFromPage(Document page) {
Elements elements = page.select("#post-list .thumb a,#pool-show .thumb a"); // Elements elements = page.select("#post-list .thumb a,#pool-show .thumb a");
List<String> res = new ArrayList<>(elements.size()); // List<String> res = new ArrayList<>(elements.size());
//
if (page.getElementById("pool-show") != null) { // if (page.getElementById("pool-show") != null) {
int index = 0; // int index = 0;
//
Element e = page.getElementById("paginator"); // Element e = page.getElementById("paginator");
if (e != null) { // if (e != null) {
e = e.getElementsByClass("current").first(); // e = e.getElementsByClass("current").first();
if (e != null) { // if (e != null) {
index = (Integer.parseInt(e.text()) - 1) * POOL_IMAGES_PER_PAGE; // index = (Integer.parseInt(e.text()) - 1) * POOL_IMAGES_PER_PAGE;
} // }
} // }
//
for (Element e_ : elements) { // for (Element e_ : elements) {
res.add(e_.absUrl("href") + "#" + ++index); // res.add(e_.absUrl("href") + "#" + ++index);
} // }
//
} else { // } else {
for (Element e : elements) { // for (Element e : elements) {
res.add(e.absUrl("href") + "#" + e.child(0).attr("id").substring(1)); // res.add(e.absUrl("href") + "#" + e.child(0).attr("id").substring(1));
} // }
} // }
//
return res; // return res;
} // }
//
@Override // @Override
public Document getNextPage(Document page) throws IOException { // public Document getNextPage(Document page) throws IOException {
for (Element e : page.select("#paginator a")) { // for (Element e : page.select("#paginator a")) {
if (e.attr("rel").equals("next")) { // if (e.attr("rel").equals("next")) {
return Http.url(e.absUrl("href")).get(); // return Http.url(e.absUrl("href")).get();
} // }
} // }
//
return null; // return null;
} // }
//
@Override // @Override
public void downloadURL(final URL url, int index) { // public void downloadURL(final URL url, int index) {
e621ThreadPool.addThread(new Thread(() -> { // e621ThreadPool.addThread(new Thread(() -> {
try { // try {
Document page = Http.url(url).get(); // Document page = Http.url(url).get();
Element e = page.getElementById("image"); // Element e = page.getElementById("image");
//
if (e != null) { // if (e != null) {
addURLToDownload(new URL(e.absUrl("src")), Utils.getConfigBoolean("download.save_order", true) ? url.getRef() + "-" : ""); // addURLToDownload(new URL(e.absUrl("src")), Utils.getConfigBoolean("download.save_order", true) ? url.getRef() + "-" : "");
} else if ((e = page.select(".content object>param[name=\"movie\"]").first()) != null) { // } else if ((e = page.select(".content object>param[name=\"movie\"]").first()) != null) {
addURLToDownload(new URL(e.absUrl("value")), Utils.getConfigBoolean("download.save_order", true) ? url.getRef() + "-" : ""); // addURLToDownload(new URL(e.absUrl("value")), Utils.getConfigBoolean("download.save_order", true) ? url.getRef() + "-" : "");
} else { // } else {
Logger.getLogger(E621Ripper.class.getName()).log(Level.WARNING, "Unsupported media type - please report to program author: " + url.toString()); // Logger.getLogger(E621Ripper.class.getName()).log(Level.WARNING, "Unsupported media type - please report to program author: " + url.toString());
} // }
//
} catch (IOException ex) { // } catch (IOException ex) {
Logger.getLogger(E621Ripper.class.getName()).log(Level.SEVERE, null, ex); // Logger.getLogger(E621Ripper.class.getName()).log(Level.SEVERE, null, ex);
} // }
})); // }));
} // }
//
private String getTerm(URL url) throws MalformedURLException { // private String getTerm(URL url) throws MalformedURLException {
String query = url.getQuery(); // String query = url.getQuery();
//
if (query != null) { // if (query != null) {
return Utils.parseUrlQuery(query, "tags"); // return Utils.parseUrlQuery(query, "tags");
} // }
//
if (query == null) { // if (query == null) {
if ((query = url.getPath()).startsWith("/post/index/")) { // if ((query = url.getPath()).startsWith("/post/index/")) {
query = query.substring(12); // query = query.substring(12);
//
int pos = query.indexOf('/'); // int pos = query.indexOf('/');
if (pos == -1) { // if (pos == -1) {
return null; // return null;
} // }
//
// skip page number // // skip page number
query = query.substring(pos + 1); // query = query.substring(pos + 1);
//
if (query.endsWith("/")) { // if (query.endsWith("/")) {
query = query.substring(0, query.length() - 1); // query = query.substring(0, query.length() - 1);
} // }
//
try { // try {
return URLDecoder.decode(query, "UTF-8"); // return URLDecoder.decode(query, "UTF-8");
} catch (UnsupportedEncodingException e) { // } catch (UnsupportedEncodingException e) {
// Shouldn't happen since UTF-8 is required to be supported // // Shouldn't happen since UTF-8 is required to be supported
throw new RuntimeException(e); // throw new RuntimeException(e);
} // }
//
} else if (query.startsWith("/pool/show/")) { // } else if (query.startsWith("/pool/show/")) {
query = query.substring(11); // query = query.substring(11);
//
if (query.endsWith("/")) { // if (query.endsWith("/")) {
query = query.substring(0, query.length() - 1); // query = query.substring(0, query.length() - 1);
} // }
//
return query; // return query;
} // }
} // }
//
return null; // return null;
} // }
//
@Override // @Override
public String getGID(URL url) throws MalformedURLException { // public String getGID(URL url) throws MalformedURLException {
String prefix = ""; // String prefix = "";
if (url.getPath().startsWith("/pool/show/")) { // if (url.getPath().startsWith("/pool/show/")) {
prefix = "pool_"; // prefix = "pool_";
} else { // } else {
prefix = "term_"; // prefix = "term_";
} // }
//
return Utils.filesystemSafe(prefix + getTerm(url)); // return Utils.filesystemSafe(prefix + getTerm(url));
} // }
} // }