From 1485d22f5009c07c905827bfb59b5b64a88c8002 Mon Sep 17 00:00:00 2001 From: Owais Date: Thu, 10 Oct 2019 23:01:55 +0530 Subject: [PATCH 1/2] Add Ripper for folio.ink --- .../ripme/ripper/rippers/FolioRipper.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/main/java/com/rarchives/ripme/ripper/rippers/FolioRipper.java diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/FolioRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/FolioRipper.java new file mode 100644 index 00000000..24d79c70 --- /dev/null +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/FolioRipper.java @@ -0,0 +1,75 @@ +package com.rarchives.ripme.ripper.rippers; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import java.util.List; +import java.util.ArrayList; +import java.util.regex.Pattern; +import java.util.regex.Matcher; + +import org.json.JSONObject; +import org.json.JSONArray; + +import com.rarchives.ripme.ripper.AbstractJSONRipper; +import com.rarchives.ripme.utils.Http; + +/** + * @author owaiswiz + * + */ +public class FolioRipper extends AbstractJSONRipper { + public FolioRipper(URL url) throws IOException { + super(url); + } + + @Override + public String getHost() { + return "folio"; + } + + @Override + public String getDomain() { + return "folio.ink"; + } + + @Override + public String getGID(URL url) throws MalformedURLException { + Pattern p = Pattern.compile("^https?://(?:www.)?folio.ink/([a-zA-Z0-9]+).*$"); + Matcher m = p.matcher(url.toExternalForm()); + if (m.matches()) { + return m.group(1); + } + throw new MalformedURLException("Expected folio.ink URL format: " + + "folio.ink/albumid (e.g: folio.ink/DmBe6i) - got " + url + " instead"); + } + + @Override + public JSONObject getFirstPage() throws IOException { + String jsonArrayString = Http.url("https://folio.ink/getimages/" + getGID(url)).ignoreContentType().response().body(); + JSONArray imagesArray = new JSONArray(jsonArrayString); + JSONObject imagesObject = new JSONObject(); + imagesObject.put("images", imagesArray); + + return imagesObject; + } + + @Override + public List getURLsFromJSON(JSONObject json) { + List result = new ArrayList(); + JSONArray imagesArray = json.getJSONArray("images"); + + for (int i = 0; i < imagesArray.length(); i++) { + JSONObject image = imagesArray.getJSONObject(i); + result.add(image.getString("image_url")); + } + + return result; + } + + @Override + public void downloadURL(URL url, int index) { + addURLToDownload(url, getPrefix(index)); + } +} From d63eb4028ff58ba0a8113d00fb40c1a56b8bf46f Mon Sep 17 00:00:00 2001 From: Owais Date: Thu, 10 Oct 2019 23:02:26 +0530 Subject: [PATCH 2/2] Add test for folio.ink ripper --- .../tst/ripper/rippers/FolioRipperTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/test/java/com/rarchives/ripme/tst/ripper/rippers/FolioRipperTest.java diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FolioRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FolioRipperTest.java new file mode 100644 index 00000000..66a9c1ed --- /dev/null +++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FolioRipperTest.java @@ -0,0 +1,26 @@ +package com.rarchives.ripme.tst.ripper.rippers; + +import java.io.IOException; +import java.net.URL; +import com.rarchives.ripme.ripper.rippers.FolioRipper; + +import org.junit.jupiter.api.Test; + +public class FolioRipperTest extends RippersTest { + /** + * Test for folio.ink ripper + * @throws IOException + */ + @Test + public void testFolioRip() throws IOException { + FolioRipper ripper = new FolioRipper(new URL("https://folio.ink/DmBe6i")); + testRipper(ripper); + } + + @Test + public void testGetGID() throws IOException { + URL url = new URL("https://folio.ink/DmBe6i"); + FolioRipper ripper = new FolioRipper(url); + assertEquals("DmBe6i", ripper.getGID(url)); + } +}