diff --git a/pom.xml b/pom.xml index 81ad033f..83dcb722 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.rarchives.ripme ripme jar - 1.7.77 + 1.7.78 ripme http://rip.rarchives.com diff --git a/ripme.json b/ripme.json index 9bf13c14..ca772423 100644 --- a/ripme.json +++ b/ripme.json @@ -1,6 +1,8 @@ { - "currentHash": "34f326ec23f3c1ce8df1147c1d9660a1dd7b85074e79351c9295bd74ac8f127a", + "latestVersion": "1.7.78", + "currentHash": "957e7362f7f4a567883cc92368e5bb543c8a277c37f913b5752cee6ec43f611c", "changeList": [ + "1.7.78: Fixed gfycat ripper; Fixed E621 ripper; Added support for new xhamster url format; Now supports furaffinty scraps", "1.7.77: Reduced log spam; HQporner now supports actress/category/studio/top links; Improved luscious ripper; Fixed Pornhub video ripper; Tumblr ripper now always downloads highest quality available", "1.7.76: Fixed remember url history", "1.7.75: Fix e-hentai ripper; added comixfap ripper; fixed writting urls to files on windows; Fixed update screen issues; Added support for hentaidude; Fixed erome ripper", @@ -248,6 +250,5 @@ "1.0.4: Fixed spaces-in-directory bug", "1.0.3: Added VK.com ripper", "1.0.1: Added auto-update functionality" - ], - "latestVersion": "1.7.77" + ] } \ No newline at end of file diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/FuraffinityRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/FuraffinityRipper.java index 26699c2a..683c791b 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/FuraffinityRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/FuraffinityRipper.java @@ -219,16 +219,21 @@ public class FuraffinityRipper extends AbstractHTMLRipper { @Override public String getGID(URL url) throws MalformedURLException { - Pattern p = Pattern - .compile("^https?://www\\.furaffinity\\.net/gallery/([-_.0-9a-zA-Z]+).*$"); + // Gallery + Pattern p = Pattern.compile("^https?://www\\.furaffinity\\.net/gallery/([-_.0-9a-zA-Z]+).*$"); Matcher m = p.matcher(url.toExternalForm()); if (m.matches()) { return m.group(1); } - throw new MalformedURLException("Expected furaffinity.net URL format: " - + "www.furaffinity.net/gallery/username - got " + url - + " instead"); + //Scraps + p = Pattern.compile("^https?://www\\.furaffinity\\.net/scraps/([-_.0-9a-zA-Z]+).*$"); + m = p.matcher(url.toExternalForm()); + if (m.matches()) { + return m.group(1); + } + + throw new MalformedURLException("Unable to find images in" + url); } diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/ImagefapRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/ImagefapRipper.java index 07a6e529..f097e667 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/ImagefapRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/ImagefapRipper.java @@ -145,15 +145,13 @@ public class ImagefapRipper extends AbstractHTMLRipper { try { // Attempt to use album title as GID String title = getFirstPage().title(); - Pattern p = Pattern.compile("^Porn pics of (.*) \\(Page 1\\)$"); - Matcher m = p.matcher(title); - if (m.matches()) { - return getHost() + "_" + m.group(1) + "_" + getGID(url); - } + title = title.replace("Porn Pics & Porn GIFs", ""); + title = title.replace(" ", "_"); + String toReturn = getHost() + "_" + title + "_" + getGID(url); + return toReturn.replaceAll("__", "_"); } catch (IOException e) { - // Fall back to default album naming convention + return super.getAlbumTitle(url); } - return super.getAlbumTitle(url); } private String getFullSizedImage(String pageURL) { diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/XhamsterRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/XhamsterRipper.java index b844b4f5..d825a3cf 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/XhamsterRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/XhamsterRipper.java @@ -45,6 +45,7 @@ public class XhamsterRipper extends AbstractHTMLRipper { @Override public URL sanitizeURL(URL url) throws MalformedURLException { String URLToReturn = url.toExternalForm(); + URLToReturn = URLToReturn.replaceAll("xhamster.one", "xhamster.com"); URLToReturn = URLToReturn.replaceAll("m.xhamster.com", "xhamster.com"); URLToReturn = URLToReturn.replaceAll("\\w\\w.xhamster.com", "xhamster.com"); URL san_url = new URL(URLToReturn.replaceAll("xhamster.com", "m.xhamster.com")); @@ -113,17 +114,17 @@ public class XhamsterRipper extends AbstractHTMLRipper { @Override public boolean canRip(URL url) { - Pattern p = Pattern.compile("^https?://([\\w\\w]*\\.)?xhamster\\.com/photos/gallery/.*?(\\d+)$"); + Pattern p = Pattern.compile("^https?://([\\w\\w]*\\.)?xhamster\\.(com|one)/photos/gallery/.*?(\\d+)$"); Matcher m = p.matcher(url.toExternalForm()); if (m.matches()) { return true; } - p = Pattern.compile("^https?://[\\w\\w.]*xhamster\\.com/users/([a-zA-Z0-9_-]+)/photos"); + p = Pattern.compile("^https?://[\\w\\w.]*xhamster\\.(com|one)/users/([a-zA-Z0-9_-]+)/photos"); m = p.matcher(url.toExternalForm()); if (m.matches()) { return true; } - p = Pattern.compile("^https?://.*xhamster\\.com/(movies|videos)/.*$"); + p = Pattern.compile("^https?://.*xhamster\\.(com|one)/(movies|videos)/.*$"); m = p.matcher(url.toExternalForm()); if (m.matches()) { return true; diff --git a/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java b/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java index bc4ebf47..822d9bc9 100644 --- a/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java +++ b/src/main/java/com/rarchives/ripme/ui/UpdateUtils.java @@ -22,7 +22,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.7.77"; + private static final String DEFAULT_VERSION = "1.7.78"; private static final String REPO_NAME = "ripmeapp/ripme"; private static final String updateJsonURL = "https://raw.githubusercontent.com/" + REPO_NAME + "/master/ripme.json"; private static final String mainFileName = "ripme.jar"; diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FuraffinityRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FuraffinityRipperTest.java index cdea9921..f604a7dc 100644 --- a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FuraffinityRipperTest.java +++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/FuraffinityRipperTest.java @@ -6,11 +6,17 @@ import java.net.URL; import com.rarchives.ripme.ripper.rippers.FuraffinityRipper; public class FuraffinityRipperTest extends RippersTest { + public void testFuraffinityAlbum() throws IOException { FuraffinityRipper ripper = new FuraffinityRipper(new URL("https://www.furaffinity.net/gallery/spencerdragon/")); testRipper(ripper); } + public void testFuraffinityScrap() throws IOException { + FuraffinityRipper ripper = new FuraffinityRipper(new URL("http://www.furaffinity.net/scraps/sssonic2/")); + testRipper(ripper); + } + public void testGetGID() throws IOException { URL url = new URL("https://www.furaffinity.net/gallery/mustardgas/"); FuraffinityRipper ripper = new FuraffinityRipper(url); diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/ImagefapRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/ImagefapRipperTest.java index 95649015..b64952cc 100644 --- a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/ImagefapRipperTest.java +++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/ImagefapRipperTest.java @@ -24,4 +24,9 @@ public class ImagefapRipperTest extends RippersTest { testRipper(ripper); } } + public void testImagefapGetAlbumTitle() throws IOException { + URL url = new URL("https://www.imagefap.com/gallery.php?gid=7789753"); + ImagefapRipper ripper = new ImagefapRipper(url); + assertEquals("imagefap_Red.Heels.Lover.In.Love_7789753", ripper.getAlbumTitle(url)); + } }