diff --git a/pom.xml b/pom.xml
index b57558a6..e3aa1ce6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.rarchives.ripme
ripme
jar
- 1.0.50
+ 1.0.51
ripme
http://rip.rarchives.com
diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/DeviantartRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/DeviantartRipper.java
index 2720770a..0178a5cd 100644
--- a/src/main/java/com/rarchives/ripme/ripper/rippers/DeviantartRipper.java
+++ b/src/main/java/com/rarchives/ripme/ripper/rippers/DeviantartRipper.java
@@ -21,6 +21,7 @@ import org.jsoup.select.Elements;
import com.rarchives.ripme.ripper.AlbumRipper;
import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
+import com.rarchives.ripme.utils.Base64;
import com.rarchives.ripme.utils.Utils;
public class DeviantartRipper extends AlbumRipper {
@@ -31,6 +32,8 @@ public class DeviantartRipper extends AlbumRipper {
private static final int SLEEP_TIME = 2000;
private static final Logger logger = Logger.getLogger(DeviantartRipper.class);
+ private Map cookies = new HashMap();
+
public DeviantartRipper(URL url) throws IOException {
super(url);
}
@@ -52,12 +55,20 @@ public class DeviantartRipper extends AlbumRipper {
int index = 0;
String nextURL = this.url.toExternalForm();
+ // Login
+ try {
+ cookies = loginToDeviantart();
+ } catch (Exception e) {
+ logger.warn("Failed to login: ", e);
+ }
+
// Iterate over every page
while (nextURL != null) {
logger.info(" Retrieving " + nextURL);
sendUpdate(STATUS.LOADING_RESOURCE, "Retrieving " + nextURL);
Document doc = Jsoup.connect(nextURL)
+ .cookies(cookies)
.userAgent(USER_AGENT)
.get();
@@ -180,16 +191,22 @@ public class DeviantartRipper extends AlbumRipper {
*/
public String smallToFull(String thumb, String page) {
try {
+ // Fetch the image page
Response resp = Jsoup.connect(page)
.userAgent(USER_AGENT)
+ .cookies(cookies)
.referrer(this.url.toExternalForm())
.method(Method.GET)
.execute();
Map cookies = resp.cookies();
+ cookies.putAll(this.cookies);
+
+ // Try to find the "Download" box
Elements els = resp.parse().select("a.dev-page-download");
if (els.size() == 0) {
throw new IOException("no download page found");
}
+ // Full-size image
String fsimage = els.get(0).attr("href");
String prefix = "";
@@ -198,6 +215,7 @@ public class DeviantartRipper extends AlbumRipper {
imageId = imageId.substring(0, imageId.indexOf('.'));
prefix = String.format("%010d_", alphaToLong(imageId));
}
+ // Download it
addURLToDownload(new URL(fsimage), prefix, "", page, cookies);
return null;
} catch (IOException ioe) {
@@ -235,15 +253,14 @@ public class DeviantartRipper extends AlbumRipper {
}
/**
- * Logs into deviant art. Not required to rip NSFW images.
+ * Logs into deviant art. Required to rip full-size NSFW content.
* @return Map of cookies containing session data.
*/
- @SuppressWarnings("unused")
private Map loginToDeviantart() throws IOException {
// Populate postData fields
Map postData = new HashMap();
- String username = Utils.getConfigString("deviantart.username", null);
- String password = Utils.getConfigString("deviantart.password", null);
+ String username = Utils.getConfigString("deviantart.username", new String(Base64.decode("Z3JhYnB5")));
+ String password = Utils.getConfigString("deviantart.password", new String(Base64.decode("ZmFrZXJz")));
if (username == null || password == null) {
throw new IOException("could not find username or password in config");
}
diff --git a/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java b/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java
index 00d551da..2171c582 100644
--- a/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java
+++ b/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java
@@ -21,7 +21,7 @@ import com.rarchives.ripme.utils.Utils;
public class UpdateUtils {
private static final Logger logger = Logger.getLogger(UpdateUtils.class);
- private static final String DEFAULT_VERSION = "1.0.50";
+ private static final String DEFAULT_VERSION = "1.0.51";
private static final String updateJsonURL = "http://rarchives.com/ripme.json";
private static final String updateJarURL = "http://rarchives.com/ripme.jar";
private static final String mainFileName = "ripme.jar";