From aa78f60ce00b96c1f5dbf64f32cfec39f11331d3 Mon Sep 17 00:00:00 2001 From: 4pr0n Date: Tue, 11 Mar 2014 01:29:46 -0700 Subject: [PATCH] various bug fixes --- .../ripme/ripper/AbstractRipper.java | 6 +++- .../ripme/ripper/rippers/ImgurRipper.java | 28 +++++++++++++------ .../tst/ripper/rippers/TumblrRipperTest.java | 6 ++-- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/rarchives/ripme/ripper/AbstractRipper.java b/src/main/java/com/rarchives/ripme/ripper/AbstractRipper.java index 79f2e1b3..7893bdb3 100644 --- a/src/main/java/com/rarchives/ripme/ripper/AbstractRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/AbstractRipper.java @@ -99,7 +99,7 @@ public abstract class AbstractRipper || itemsCompleted.containsKey(url) || itemsErrored.containsKey(url)) { // Item is already downloaded/downloading, skip it. - logger.info("Skipping " + url + " -- already attempted: " + Utils.removeCWD(saveAs)); + logger.info(" Skipping " + url + " -- already attempted: " + Utils.removeCWD(saveAs)); return; } itemsPending.put(url, saveAs); @@ -232,6 +232,9 @@ public abstract class AbstractRipper * Notifies observers and updates state if all files have been ripped. */ private void checkIfComplete() { + if (observer == null) { + return; + } synchronized (observer) { if (!completed && itemsPending.size() == 0) { completed = true; @@ -359,6 +362,7 @@ public abstract class AbstractRipper rip(); } catch (IOException e) { logger.error("Got exception while running ripper:", e); + waitForThreads(); } } diff --git a/src/main/java/com/rarchives/ripme/ripper/rippers/ImgurRipper.java b/src/main/java/com/rarchives/ripme/ripper/rippers/ImgurRipper.java index 738a7a0e..9e5f5db8 100644 --- a/src/main/java/com/rarchives/ripme/ripper/rippers/ImgurRipper.java +++ b/src/main/java/com/rarchives/ripme/ripper/rippers/ImgurRipper.java @@ -3,6 +3,8 @@ 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; @@ -93,8 +95,18 @@ public class ImgurRipper extends AbstractRipper { private void ripAlbum(URL url, String subdirectory) throws IOException { int index = 0; - logger.info(" Retrieving " + url.toExternalForm()); this.sendUpdate(STATUS.LOADING_RESOURCE, url.toExternalForm()); + index = 0; + for (URL singleURL : getURLsFromAlbum(url)) { + index += 1; + processURL(singleURL, String.format("%03d_", index), subdirectory); + } + } + + public static List getURLsFromAlbum(URL url) throws IOException { + List result = new ArrayList(); + + logger.info(" Retrieving " + url.toExternalForm()); Document doc = Jsoup.connect(url.toExternalForm()) .userAgent(USER_AGENT) .get(); @@ -114,10 +126,9 @@ public class ImgurRipper extends AbstractRipper { "http://i.imgur.com/" + image.get("hash") + image.get("ext")); - index += 1; - processURL(imageURL, String.format("%03d_", index), subdirectory); + result.add(imageURL); } - return; + return result; } catch (JSONException e) { logger.debug("Error while parsing JSON at " + url + ", continuing", e); } @@ -136,10 +147,9 @@ public class ImgurRipper extends AbstractRipper { + "/" + image.get("hash") + image.get("ext")); - index += 1; - processURL(imageURL, String.format("%03d_", index), subdirectory); + result.add(imageURL); } - return; + return result; } catch (JSONException e) { logger.debug("Error while parsing JSON at " + url + ", continuing", e); } @@ -164,9 +174,9 @@ public class ImgurRipper extends AbstractRipper { logger.error("[!] Unable to find image in div: " + thumb.toString()); continue; } - index += 1; - processURL(new URL(image), String.format("%03d_", index), subdirectory); + result.add(new URL(image)); } + return result; } /** diff --git a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/TumblrRipperTest.java b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/TumblrRipperTest.java index 8aa41b59..d5f8381d 100644 --- a/src/test/java/com/rarchives/ripme/tst/ripper/rippers/TumblrRipperTest.java +++ b/src/test/java/com/rarchives/ripme/tst/ripper/rippers/TumblrRipperTest.java @@ -10,13 +10,13 @@ import com.rarchives.ripme.ripper.rippers.TumblrRipper; public class TumblrRipperTest extends RippersTest { public void testTumblrAlbums() throws IOException { - if (false && !DOWNLOAD_CONTENT) { + if (!DOWNLOAD_CONTENT) { return; } List contentURLs = new ArrayList(); contentURLs.add(new URL("http://wrouinr.tumblr.com/archive")); - //contentURLs.add(new URL("http://topinstagirls.tumblr.com/tagged/berlinskaya")); - //contentURLs.add(new URL("http://fittingroomgirls.tumblr.com/post/78268776776")); + contentURLs.add(new URL("http://topinstagirls.tumblr.com/tagged/berlinskaya")); + contentURLs.add(new URL("http://fittingroomgirls.tumblr.com/post/78268776776")); for (URL url : contentURLs) { try { TumblrRipper ripper = new TumblrRipper(url);