mirror of
https://github.com/RipMeApp/ripme.git
synced 2025-08-27 15:49:50 +02:00
Merge pull request #1088 from cyian-1756/tumblrLikes
Added support for tumblr like pages; now respects download.save_order
This commit is contained in:
@@ -25,6 +25,8 @@ import org.jsoup.nodes.Element;
|
|||||||
|
|
||||||
public class TumblrRipper extends AlbumRipper {
|
public class TumblrRipper extends AlbumRipper {
|
||||||
|
|
||||||
|
int index = 1;
|
||||||
|
|
||||||
private static final String DOMAIN = "tumblr.com",
|
private static final String DOMAIN = "tumblr.com",
|
||||||
HOST = "tumblr",
|
HOST = "tumblr",
|
||||||
IMAGE_PATTERN = "([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)";
|
IMAGE_PATTERN = "([^\\s]+(\\.(?i)(jpg|png|gif|bmp))$)";
|
||||||
@@ -32,7 +34,8 @@ public class TumblrRipper extends AlbumRipper {
|
|||||||
private enum ALBUM_TYPE {
|
private enum ALBUM_TYPE {
|
||||||
SUBDOMAIN,
|
SUBDOMAIN,
|
||||||
TAG,
|
TAG,
|
||||||
POST
|
POST,
|
||||||
|
LIKED
|
||||||
}
|
}
|
||||||
private ALBUM_TYPE albumType;
|
private ALBUM_TYPE albumType;
|
||||||
private String subdomain, tagName, postNumber;
|
private String subdomain, tagName, postNumber;
|
||||||
@@ -235,7 +238,11 @@ public class TumblrRipper extends AlbumRipper {
|
|||||||
|
|
||||||
URL fileURL;
|
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) {
|
if (posts.length() == 0) {
|
||||||
LOGGER.info(" Zero posts returned.");
|
LOGGER.info(" Zero posts returned.");
|
||||||
return false;
|
return false;
|
||||||
@@ -252,10 +259,10 @@ public class TumblrRipper extends AlbumRipper {
|
|||||||
|
|
||||||
m = p.matcher(fileURL.toString());
|
m = p.matcher(fileURL.toString());
|
||||||
if (m.matches()) {
|
if (m.matches()) {
|
||||||
addURLToDownload(fileURL);
|
downloadURL(fileURL);
|
||||||
} else {
|
} else {
|
||||||
URL redirectedURL = Http.url(fileURL).ignoreContentType().response().url();
|
URL redirectedURL = Http.url(fileURL).ignoreContentType().response().url();
|
||||||
addURLToDownload(redirectedURL);
|
downloadURL(redirectedURL);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.error("[!] Error while parsing photo in " + photo, e);
|
LOGGER.error("[!] Error while parsing photo in " + photo, e);
|
||||||
@@ -264,7 +271,7 @@ public class TumblrRipper extends AlbumRipper {
|
|||||||
} else if (post.has("video_url")) {
|
} else if (post.has("video_url")) {
|
||||||
try {
|
try {
|
||||||
fileURL = new URL(post.getString("video_url").replaceAll("http:", "https:"));
|
fileURL = new URL(post.getString("video_url").replaceAll("http:", "https:"));
|
||||||
addURLToDownload(fileURL);
|
downloadURL(fileURL);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.error("[!] Error while parsing video in " + post, e);
|
LOGGER.error("[!] Error while parsing video in " + post, e);
|
||||||
return true;
|
return true;
|
||||||
@@ -273,7 +280,7 @@ public class TumblrRipper extends AlbumRipper {
|
|||||||
Document d = Jsoup.parse(post.getString("body"));
|
Document d = Jsoup.parse(post.getString("body"));
|
||||||
if (!d.select("img").attr("src").isEmpty()) {
|
if (!d.select("img").attr("src").isEmpty()) {
|
||||||
try {
|
try {
|
||||||
addURLToDownload(new URL(d.select("img").attr("src")));
|
downloadURL(new URL(d.select("img").attr("src")));
|
||||||
} catch (MalformedURLException e) {
|
} catch (MalformedURLException e) {
|
||||||
LOGGER.error("[!] Error while getting embedded image at " + post, e);
|
LOGGER.error("[!] Error while getting embedded image at " + post, e);
|
||||||
return true;
|
return true;
|
||||||
@@ -289,6 +296,16 @@ public class TumblrRipper extends AlbumRipper {
|
|||||||
|
|
||||||
private String getTumblrApiURL(String mediaType, int offset) {
|
private String getTumblrApiURL(String mediaType, int offset) {
|
||||||
StringBuilder sb = new StringBuilder();
|
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) {
|
if (albumType == ALBUM_TYPE.POST) {
|
||||||
sb.append("http://api.tumblr.com/v2/blog/")
|
sb.append("http://api.tumblr.com/v2/blog/")
|
||||||
.append(subdomain)
|
.append(subdomain)
|
||||||
@@ -310,6 +327,7 @@ public class TumblrRipper extends AlbumRipper {
|
|||||||
sb.append("&tag=")
|
sb.append("&tag=")
|
||||||
.append(tagName);
|
.append(tagName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,7 +370,38 @@ public class TumblrRipper extends AlbumRipper {
|
|||||||
this.subdomain = m.group(1);
|
this.subdomain = m.group(1);
|
||||||
return this.subdomain;
|
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]");
|
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++;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user