From d268bb2ceea252a0a1ca367617aa19f98a8b5f1d Mon Sep 17 00:00:00 2001 From: cyian-1756 Date: Fri, 17 Nov 2017 05:37:47 -0500 Subject: [PATCH] Pichunter galleries support (#209) * Added support for pichunter galleries * Added unit test for pichunter galleries --- .../ripme/ripper/rippers/PichunterRipper.java | 25 +++++++++++++++++-- .../tst/ripper/rippers/BasicRippersTest.java | 5 ++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/PichunterRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/PichunterRipper.java index 06656698..5b4b15fb 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/PichunterRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/PichunterRipper.java @@ -47,10 +47,25 @@ public class PichunterRipper extends AbstractHTMLRipper { if (m.matches()) { return m.group(1); } + + p = Pattern.compile("https?://www.pichunter.com/gallery/\\d+/([a-zA-Z0-9_-]+)/?"); + m = p.matcher(url.toExternalForm()); + if (m.matches()) { + return m.group(1); + } throw new MalformedURLException("Expected pichunter URL format: " + "pichunter.com/(tags|models|sites)/Name/ - got " + url + " instead"); } + private boolean isPhotoSet(URL url) { + Pattern p = Pattern.compile("https?://www.pichunter.com/gallery/\\d+/([a-zA-Z0-9_-]+)/?"); + Matcher m = p.matcher(url.toExternalForm()); + if (m.matches()) { + return true; + } + return false; + } + @Override public Document getFirstPage() throws IOException { // "url" is an instance field of the superclass @@ -73,8 +88,14 @@ public class PichunterRipper extends AbstractHTMLRipper { @Override public List getURLsFromPage(Document doc) { List result = new ArrayList<>(); - for (Element el : doc.select("div.thumbtable > a.thumb > img")) { - result.add(el.attr("src").replaceAll("_i", "_o")); + if (!isPhotoSet(url)) { + for (Element el : doc.select("div.thumbtable > a.thumb > img")) { + result.add(el.attr("src").replaceAll("_i", "_o")); + } + } else { + for (Element el : doc.select("div.flex-images > figure > a.item > img")) { + result.add(el.attr("src").replaceAll("_i", "_o")); + } } return result; } diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BasicRippersTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BasicRippersTest.java index 3cd957b2..d6827407 100644 --- a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BasicRippersTest.java +++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/BasicRippersTest.java @@ -196,8 +196,13 @@ public class BasicRippersTest extends RippersTest { } public void testPichunterRip() throws IOException { + // A non-photoset AbstractRipper ripper = new PichunterRipper(new URL("https://www.pichunter.com/models/Madison_Ivy")); testRipper(ripper); + // a photo set + ripper = new PichunterRipper(new URL("http://www.pichunter.com/gallery/3270642/Its_not_only_those_who")); + testRipper(ripper); + } public void testMotherlessAlbumRip() throws IOException {