diff --git a/pom.xml b/pom.xml
index 09232f52..e0344199 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.rarchives.ripme
ripme
jar
- 1.0.42
+ 1.0.43
ripme
http://rip.rarchives.com
diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/ModelmayhemRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/ModelmayhemRipper.java
new file mode 100644
index 00000000..d191c70f
--- /dev/null
+++ b/src/main/java/com/rarchives/ripme/ripper/rippers/ModelmayhemRipper.java
@@ -0,0 +1,128 @@
+package com.rarchives.ripme.ripper.rippers;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.Logger;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.jsoup.Connection.Method;
+import org.jsoup.Connection.Response;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+
+import com.rarchives.ripme.ripper.AlbumRipper;
+import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
+
+public class ModelmayhemRipper extends AlbumRipper {
+
+ private static final String DOMAIN = "modelmayhem.com",
+ HOST = "modelmayhem";
+ private static final Logger logger = Logger.getLogger(ModelmayhemRipper.class);
+
+ public ModelmayhemRipper(URL url) throws IOException {
+ super(url);
+ }
+
+ @Override
+ public boolean canRip(URL url) {
+ return (url.getHost().endsWith(DOMAIN));
+ }
+
+ @Override
+ public URL sanitizeURL(URL url) throws MalformedURLException {
+ return url;
+ }
+
+ @Override
+ public void rip() throws IOException {
+ Map cookies = null,
+ postData = new HashMap();
+ String gid = getGID(this.url),
+ ref = "http://www.modelmayhem.com/" + gid;
+
+ Response resp = null;
+ String theurl = "http://www.modelmayhem.com/" + gid;
+ logger.info("Loading " + theurl);
+ resp = Jsoup.connect(theurl)
+ .timeout(5000)
+ .referrer("")
+ .userAgent(USER_AGENT)
+ .method(Method.GET)
+ .execute();
+ cookies = resp.cookies();
+
+ resp = Jsoup.connect("http://www.modelmayhem.com/includes/js/auth.php")
+ .cookies(cookies)
+ .referrer(ref)
+ .userAgent(USER_AGENT)
+ .method(Method.GET)
+ .execute();
+ String authText = resp.parse().html();
+ String mmservice = authText.substring(authText.indexOf("token = '") + 9);
+ mmservice = mmservice.substring(0, mmservice.indexOf("'"));
+
+ cookies.putAll(resp.cookies());
+
+ cookies.put("worksafe", "0");
+ theurl = "http://www.modelmayhem.com/services/photo_viewer/albums/" + gid;
+ postData.put("MMSERVICE", mmservice);
+ resp = Jsoup.connect(theurl)
+ .data(postData)
+ .cookies(cookies)
+ .referrer(ref)
+ .userAgent(USER_AGENT)
+ .method(Method.POST)
+ .execute();
+ cookies.putAll(resp.cookies());
+
+ theurl = "http://www.modelmayhem.com/services/photo_viewer/pictures/" + gid + "/0/0/1/0";
+ this.sendUpdate(STATUS.LOADING_RESOURCE, theurl);
+ logger.info("Loading " + theurl);
+ resp = Jsoup.connect(theurl)
+ .data(postData)
+ .cookies(cookies)
+ .referrer(ref)
+ .userAgent(USER_AGENT)
+ .method(Method.POST)
+ .execute();
+
+ Document doc = resp.parse();
+ String jsonText = doc.body().html();
+ jsonText = jsonText.replace(""", "\"");
+ System.err.println(jsonText);
+ JSONObject json = new JSONObject(jsonText);
+ JSONArray pictures = json.getJSONArray("pictures");
+ for (int i = 0; i < pictures.length(); i++) {
+ JSONObject picture = pictures.getJSONObject(i);
+ String bigImage = picture.getString("big_image");
+ if (bigImage.trim().equals("")) {
+ logger.info("Got empty image for " + picture.toString(2));
+ continue;
+ }
+ addURLToDownload(new URL(bigImage), String.format("%03d_", i + 1));
+ }
+ waitForThreads();
+ }
+
+ @Override
+ public String getHost() {
+ return HOST;
+ }
+
+ @Override
+ public String getGID(URL url) throws MalformedURLException {
+ Pattern p = Pattern.compile("^https?://[w.]*modelmayhem.com.*/([0-9]+)/?.*$");
+ Matcher m = p.matcher(url.toExternalForm());
+ if (m.matches()) {
+ return m.group(1);
+ }
+ throw new MalformedURLException("Modelmayhem user ID not found in " + url + ", expected http://modelmayhem.com/userid");
+ }
+
+}
diff --git a/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java b/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java
index 3fff4a8a..03a5d1c6 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.42";
+ private static final String DEFAULT_VERSION = "1.0.43";
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";