Skip to content

Commit

Permalink
Merge pull request #1088 from cyian-1756/tumblrLikes
Browse files Browse the repository at this point in the history
Added support for tumblr like pages; now respects download.save_order
  • Loading branch information
cyian-1756 authored Dec 5, 2018
2 parents d6ba7c2 + f01cd07 commit d2751f3
Showing 1 changed file with 55 additions and 6 deletions.
61 changes: 55 additions & 6 deletions src/main/java/com/rarchives/ripme/ripper/rippers/TumblrRipper.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,17 @@

public class TumblrRipper extends AlbumRipper {

int index = 1;

private static final String DOMAIN = "tumblr.com",
HOST = "tumblr",
IMAGE_PATTERN = "([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)";

private enum ALBUM_TYPE {
SUBDOMAIN,
TAG,
POST
POST,
LIKED
}
private ALBUM_TYPE albumType;
private String subdomain, tagName, postNumber;
Expand Down Expand Up @@ -235,7 +238,11 @@ private boolean handleJSON(JSONObject json) {

URL fileURL;

posts = json.getJSONObject("response").getJSONArray("posts");
if (albumType == ALBUM_TYPE.LIKED) {
posts = json.getJSONObject("response").getJSONArray("liked_posts");
} else {
posts = json.getJSONObject("response").getJSONArray("posts");
}
if (posts.length() == 0) {
LOGGER.info(" Zero posts returned.");
return false;
Expand All @@ -252,10 +259,10 @@ private boolean handleJSON(JSONObject json) {

m = p.matcher(fileURL.toString());
if (m.matches()) {
addURLToDownload(fileURL);
downloadURL(fileURL);
} else {
URL redirectedURL = Http.url(fileURL).ignoreContentType().response().url();
addURLToDownload(redirectedURL);
downloadURL(redirectedURL);
}
} catch (Exception e) {
LOGGER.error("[!] Error while parsing photo in " + photo, e);
Expand All @@ -264,7 +271,7 @@ private boolean handleJSON(JSONObject json) {
} else if (post.has("video_url")) {
try {
fileURL = new URL(post.getString("video_url").replaceAll("http:", "https:"));
addURLToDownload(fileURL);
downloadURL(fileURL);
} catch (Exception e) {
LOGGER.error("[!] Error while parsing video in " + post, e);
return true;
Expand All @@ -273,7 +280,7 @@ private boolean handleJSON(JSONObject json) {
Document d = Jsoup.parse(post.getString("body"));
if (!d.select("img").attr("src").isEmpty()) {
try {
addURLToDownload(new URL(d.select("img").attr("src")));
downloadURL(new URL(d.select("img").attr("src")));
} catch (MalformedURLException e) {
LOGGER.error("[!] Error while getting embedded image at " + post, e);
return true;
Expand All @@ -289,6 +296,16 @@ private boolean handleJSON(JSONObject json) {

private String getTumblrApiURL(String mediaType, int offset) {
StringBuilder sb = new StringBuilder();
if (albumType == ALBUM_TYPE.LIKED) {
sb.append("http://api.tumblr.com/v2/blog/")
.append(subdomain)
.append("/likes")
.append("?api_key=")
.append(getApiKey())
.append("&offset=")
.append(offset);
return sb.toString();
}
if (albumType == ALBUM_TYPE.POST) {
sb.append("http://api.tumblr.com/v2/blog/")
.append(subdomain)
Expand All @@ -310,6 +327,7 @@ private String getTumblrApiURL(String mediaType, int offset) {
sb.append("&tag=")
.append(tagName);
}

return sb.toString();
}

Expand Down Expand Up @@ -352,7 +370,38 @@ public String getGID(URL url) throws MalformedURLException {
this.subdomain = m.group(1);
return this.subdomain;
}
// Likes url
p = Pattern.compile("https?://([a-z0-9_-]+).tumblr.com/likes");
m = p.matcher(url.toExternalForm());
if (m.matches()) {
this.albumType = ALBUM_TYPE.LIKED;
this.subdomain = m.group(1);
return this.subdomain + "_liked";
}

// Likes url different format
p = Pattern.compile("https://www.tumblr.com/liked/by/([a-z0-9_-]+)");
m = p.matcher(url.toExternalForm());
if (m.matches()) {
this.albumType = ALBUM_TYPE.LIKED;
this.subdomain = m.group(1);
return this.subdomain + "_liked";
}

throw new MalformedURLException("Expected format: http://subdomain[.tumblr.com][/tagged/tag|/post/postno]");
}

private String getPrefix(int i) {
String prefix = "";
if (Utils.getConfigBoolean("download.save_order", true)) {
prefix = String.format("%03d_", i);
}
return prefix;
}

public void downloadURL(URL url) {
addURLToDownload(url, getPrefix(index));
index++;
}

}

0 comments on commit d2751f3

Please sign in to comment.