diff --git a/pom.xml b/pom.xml index 408d0fd4f..d881cd693 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ org.jsoup jsoup - 1.8.1 + 1.9.1 org.json diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/GirlsreleasedRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/GirlsreleasedRipper.java new file mode 100644 index 000000000..611d9bd79 --- /dev/null +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/GirlsreleasedRipper.java @@ -0,0 +1,73 @@ +package com.rarchives.ripme.ripper.rippers; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.json.JSONObject; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; + +import com.rarchives.ripme.ripper.AbstractHTMLRipper; +import com.rarchives.ripme.utils.Http; + +public class GirlsreleasedRipper extends AbstractHTMLRipper { + + public GirlsreleasedRipper(URL url) throws IOException { + super(url); + } + + @Override + public String getHost() { + return "girlsreleased."; + } + + @Override + public String getDomain() { + return "girlsreleased.com"; + } + + @Override + public String getGID(URL url) throws MalformedURLException { + Pattern p = Pattern.compile("https?://girlsreleased.com/#set/([0-9]+)"); + Matcher m = p.matcher(url.toExternalForm()); + if (m.matches()) { + return m.group(1); + } + throw new MalformedURLException("Expected girlsreleased URL format: " + + "https://girlsreleased.com/#set/ID - got " + url + " instead"); + } + + @Override + public Document getFirstPage() throws IOException { + // "url" is an instance field of the superclass + return Http.url(url).get(); + } + + + @Override + public List getURLsFromPage(Document doc) { + List result = new ArrayList<>(); + try { + String f = Jsoup.connect(url.toExternalForm()).ignoreContentType(true).userAgent(USER_AGENT).requestBody("{\"tasks\":[\"getset\"],\"set\":{\"id\":\"" + getGID(url) + "\"},\"w\":\"b53477c2821c1bf0da5d40e57b870d35\"}").post().text(); + JSONObject jsonObject = new JSONObject(f); + for (Object h : jsonObject.getJSONObject("set").getJSONArray("images")) { +// Example data: [9582439,1001,0,"https://imagetwist.com/sic98h1p8vya","https://img202.imagetwist.com/th/32480/sic98h1p8vya.jpg","V097_01001.jpg.JPG",null] + result.add(h.toString().split(",")[4].replaceAll("\"", "").replaceAll("/th/", "/i/")); + } + + } catch (IOException e) { + e.printStackTrace(); + } + return result; + } + + @Override + public void downloadURL(URL url, int index) { + addURLToDownload(url, getPrefix(index)); + } +}