1.0.46 - Auto-indexing images is now a config option
Files saved with auto-indexing are numbered 001_, 002_, etc This can now be toggled off via a config switch. Should close #44
This commit is contained in:
parent
f86a4d5a3c
commit
fbcb77aa70
2
pom.xml
2
pom.xml
@ -4,7 +4,7 @@
|
|||||||
<groupId>com.rarchives.ripme</groupId>
|
<groupId>com.rarchives.ripme</groupId>
|
||||||
<artifactId>ripme</artifactId>
|
<artifactId>ripme</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>1.0.45</version>
|
<version>1.0.46</version>
|
||||||
<name>ripme</name>
|
<name>ripme</name>
|
||||||
<url>http://rip.rarchives.com</url>
|
<url>http://rip.rarchives.com</url>
|
||||||
<properties>
|
<properties>
|
||||||
|
@ -12,6 +12,7 @@ import org.jsoup.nodes.Document;
|
|||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class ButttoucherRipper extends AlbumRipper {
|
public class ButttoucherRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -59,7 +60,11 @@ public class ButttoucherRipper extends AlbumRipper {
|
|||||||
String smallImage = thumb.attr("src");
|
String smallImage = thumb.attr("src");
|
||||||
String image = smallImage.replace("m.", ".");
|
String image = smallImage.replace("m.", ".");
|
||||||
index += 1;
|
index += 1;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix);
|
||||||
}
|
}
|
||||||
waitForThreads();
|
waitForThreads();
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import org.jsoup.nodes.Document;
|
|||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class ChanRipper extends AlbumRipper {
|
public class ChanRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -114,7 +115,11 @@ public class ChanRipper extends AlbumRipper {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
index += 1;
|
index += 1;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix);
|
||||||
attempted.add(image);
|
attempted.add(image);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
String nextURL = this.url.toExternalForm();
|
String nextURL = this.url.toExternalForm();
|
||||||
|
|
||||||
|
// Iterate over every page
|
||||||
while (nextURL != null) {
|
while (nextURL != null) {
|
||||||
|
|
||||||
logger.info(" Retrieving " + nextURL);
|
logger.info(" Retrieving " + nextURL);
|
||||||
@ -60,6 +61,7 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
.userAgent(USER_AGENT)
|
.userAgent(USER_AGENT)
|
||||||
.get();
|
.get();
|
||||||
|
|
||||||
|
// Iterate over all thumbnails
|
||||||
for (Element thumb : doc.select("div.zones-container a.thumb")) {
|
for (Element thumb : doc.select("div.zones-container a.thumb")) {
|
||||||
if (isStopped()) {
|
if (isStopped()) {
|
||||||
break;
|
break;
|
||||||
@ -68,6 +70,7 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
if (img.attr("transparent").equals("false")) {
|
if (img.attr("transparent").equals("false")) {
|
||||||
continue; // a.thumbs to other albums are invisible
|
continue; // a.thumbs to other albums are invisible
|
||||||
}
|
}
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
|
|
||||||
String fullSize = null;
|
String fullSize = null;
|
||||||
@ -80,6 +83,7 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
URL fullsizeURL = new URL(fullSize);
|
URL fullsizeURL = new URL(fullSize);
|
||||||
String imageId = fullSize.substring(fullSize.lastIndexOf('-') + 1);
|
String imageId = fullSize.substring(fullSize.lastIndexOf('-') + 1);
|
||||||
@ -98,6 +102,8 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
logger.error("[!] Interrupted while waiting for page to load", e);
|
logger.error("[!] Interrupted while waiting for page to load", e);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Find the next page
|
||||||
nextURL = null;
|
nextURL = null;
|
||||||
for (Element nextButton : doc.select("a.away")) {
|
for (Element nextButton : doc.select("a.away")) {
|
||||||
if (nextButton.attr("href").contains("offset=" + index)) {
|
if (nextButton.attr("href").contains("offset=" + index)) {
|
||||||
@ -111,6 +117,11 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
waitForThreads();
|
waitForThreads();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert alpha-numeric string into a corresponding number
|
||||||
|
* @param alpha String to convert
|
||||||
|
* @return Numeric representation of 'alpha'
|
||||||
|
*/
|
||||||
public static long alphaToLong(String alpha) {
|
public static long alphaToLong(String alpha) {
|
||||||
long result = 0;
|
long result = 0;
|
||||||
for (int i = 0; i < alpha.length(); i++) {
|
for (int i = 0; i < alpha.length(); i++) {
|
||||||
@ -119,6 +130,12 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert character at index in a string 'text' to numeric form (base-36)
|
||||||
|
* @param text Text to retrieve the character from
|
||||||
|
* @param index Index of the desired character
|
||||||
|
* @return Number representing character at text[index]
|
||||||
|
*/
|
||||||
private static int charToInt(String text, int index) {
|
private static int charToInt(String text, int index) {
|
||||||
char c = text.charAt(text.length() - index - 1);
|
char c = text.charAt(text.length() - index - 1);
|
||||||
c = Character.toLowerCase(c);
|
c = Character.toLowerCase(c);
|
||||||
@ -127,6 +144,13 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
return number;
|
return number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tries to get full size image from thumbnail URL
|
||||||
|
* @param thumb Thumbnail URL
|
||||||
|
* @param throwException Whether or not to throw exception when full size image isn't found
|
||||||
|
* @return Full-size image URL
|
||||||
|
* @throws Exception If it can't find the full-size URL
|
||||||
|
*/
|
||||||
public static String thumbToFull(String thumb, boolean throwException) throws Exception {
|
public static String thumbToFull(String thumb, boolean throwException) throws Exception {
|
||||||
thumb = thumb.replace("http://th", "http://fc");
|
thumb = thumb.replace("http://th", "http://fc");
|
||||||
List<String> fields = new ArrayList<String>(Arrays.asList(thumb.split("/")));
|
List<String> fields = new ArrayList<String>(Arrays.asList(thumb.split("/")));
|
||||||
@ -146,6 +170,14 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If largest resolution for image at 'thumb' is found, starts downloading
|
||||||
|
* and returns null.
|
||||||
|
* If it finds a larger resolution on another page, returns the image URL.
|
||||||
|
* @param thumb Thumbnail URL
|
||||||
|
* @param page Page the thumbnail is retrieved from
|
||||||
|
* @return Highest-resolution version of the image based on thumbnail URL and the page.
|
||||||
|
*/
|
||||||
public String smallToFull(String thumb, String page) {
|
public String smallToFull(String thumb, String page) {
|
||||||
try {
|
try {
|
||||||
Response resp = Jsoup.connect(page)
|
Response resp = Jsoup.connect(page)
|
||||||
@ -159,10 +191,14 @@ public class DeviantartRipper extends AlbumRipper {
|
|||||||
throw new IOException("no download page found");
|
throw new IOException("no download page found");
|
||||||
}
|
}
|
||||||
String fsimage = els.get(0).attr("href");
|
String fsimage = els.get(0).attr("href");
|
||||||
|
|
||||||
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
String imageId = fsimage.substring(fsimage.lastIndexOf('-') + 1);
|
String imageId = fsimage.substring(fsimage.lastIndexOf('-') + 1);
|
||||||
imageId = imageId.substring(0, imageId.indexOf('.'));
|
imageId = imageId.substring(0, imageId.indexOf('.'));
|
||||||
long imageIdLong = alphaToLong(imageId);
|
prefix = String.format("%010d_", alphaToLong(imageId));
|
||||||
addURLToDownload(new URL(fsimage), String.format("%010d_", imageIdLong), "", page, cookies);
|
}
|
||||||
|
addURLToDownload(new URL(fsimage), prefix, "", page, cookies);
|
||||||
return null;
|
return null;
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
try {
|
try {
|
||||||
|
@ -14,6 +14,7 @@ import org.jsoup.select.Elements;
|
|||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
|
import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class DrawcrowdRipper extends AlbumRipper {
|
public class DrawcrowdRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -76,7 +77,11 @@ public class DrawcrowdRipper extends AlbumRipper {
|
|||||||
.replaceAll("/medium/", "/large/")
|
.replaceAll("/medium/", "/large/")
|
||||||
.replaceAll("/small/", "/large/");
|
.replaceAll("/small/", "/large/");
|
||||||
index++;
|
index++;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix);
|
||||||
}
|
}
|
||||||
Elements loadMore = albumDoc.select("a#load-more");
|
Elements loadMore = albumDoc.select("a#load-more");
|
||||||
if (loadMore.size() == 0) {
|
if (loadMore.size() == 0) {
|
||||||
|
@ -14,6 +14,7 @@ import org.jsoup.nodes.Element;
|
|||||||
import org.jsoup.select.Elements;
|
import org.jsoup.select.Elements;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class EHentaiRipper extends AlbumRipper {
|
public class EHentaiRipper extends AlbumRipper {
|
||||||
private static final String DOMAIN = "g.e-hentai.org", HOST = "e-hentai";
|
private static final String DOMAIN = "g.e-hentai.org", HOST = "e-hentai";
|
||||||
@ -98,12 +99,19 @@ public class EHentaiRipper extends AlbumRipper {
|
|||||||
if (m.matches()) {
|
if (m.matches()) {
|
||||||
// Manually discover filename from URL
|
// Manually discover filename from URL
|
||||||
String savePath = this.workingDir + File.separator;
|
String savePath = this.workingDir + File.separator;
|
||||||
savePath += String.format("%03d_%s", index + 1, m.group(1));
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
savePath += String.format("%03d_", index + 1);
|
||||||
|
}
|
||||||
|
savePath += m.group(1);
|
||||||
addURLToDownload(new URL(imgsrc), new File(savePath));
|
addURLToDownload(new URL(imgsrc), new File(savePath));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Provide prefix and let the AbstractRipper "guess" the filename
|
// Provide prefix and let the AbstractRipper "guess" the filename
|
||||||
addURLToDownload(new URL(imgsrc), String.format("%03d_", index + 1));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index + 1);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(imgsrc), prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
String href = a.attr("href");
|
String href = a.attr("href");
|
||||||
|
@ -13,6 +13,7 @@ import org.jsoup.nodes.Document;
|
|||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class EightmusesRipper extends AlbumRipper {
|
public class EightmusesRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -53,10 +54,13 @@ public class EightmusesRipper extends AlbumRipper {
|
|||||||
if (image.startsWith("//")) {
|
if (image.startsWith("//")) {
|
||||||
image = "http:" + image;
|
image = "http:" + image;
|
||||||
}
|
}
|
||||||
//image = image.replace(" ", "%20");
|
|
||||||
URL imageURL = new URL(image);
|
|
||||||
index += 1;
|
index += 1;
|
||||||
addURLToDownload(imageURL, String.format("%03d_", index));
|
URL imageURL = new URL(image);
|
||||||
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(imageURL, prefix);
|
||||||
}
|
}
|
||||||
waitForThreads();
|
waitForThreads();
|
||||||
}
|
}
|
||||||
|
@ -246,7 +246,11 @@ public class FlickrRipper extends AlbumRipper {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String prefix = String.format("%03d_%s_", index, Utils.filesystemSafe(title));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
prefix += Utils.filesystemSafe(title);
|
||||||
synchronized (flickrThreadPool) {
|
synchronized (flickrThreadPool) {
|
||||||
addURLToDownload(new URL(fullsizeImages.get(0).attr("src")), prefix);
|
addURLToDownload(new URL(fullsizeImages.get(0).attr("src")), prefix);
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import org.jsoup.nodes.Document;
|
|||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class ImagearnRipper extends AlbumRipper {
|
public class ImagearnRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -67,7 +68,11 @@ public class ImagearnRipper extends AlbumRipper {
|
|||||||
String image = thumb.attr("src");
|
String image = thumb.attr("src");
|
||||||
image = image.replaceAll("thumbs[0-9]*\\.imagearn\\.com/", "img.imagearn.com/imags/");
|
image = image.replaceAll("thumbs[0-9]*\\.imagearn\\.com/", "img.imagearn.com/imags/");
|
||||||
index += 1;
|
index += 1;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix);
|
||||||
}
|
}
|
||||||
waitForThreads();
|
waitForThreads();
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import org.jsoup.nodes.Element;
|
|||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
|
import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class ImagefapRipper extends AlbumRipper {
|
public class ImagefapRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -110,7 +111,11 @@ public class ImagefapRipper extends AlbumRipper {
|
|||||||
"http://x.*.fap.to/images/thumb/",
|
"http://x.*.fap.to/images/thumb/",
|
||||||
"http://fap.to/images/full/");
|
"http://fap.to/images/full/");
|
||||||
index += 1;
|
index += 1;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix);
|
||||||
}
|
}
|
||||||
String nextURL = null;
|
String nextURL = null;
|
||||||
for (Element a : albumDoc.select("a.link3")) {
|
for (Element a : albumDoc.select("a.link3")) {
|
||||||
|
@ -129,7 +129,10 @@ public class ImgurRipper extends AlbumRipper {
|
|||||||
subdirFile.mkdirs();
|
subdirFile.mkdirs();
|
||||||
}
|
}
|
||||||
index += 1;
|
index += 1;
|
||||||
saveAs += String.format("%03d_%s", index, imgurImage.getSaveAs());
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
saveAs += String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
saveAs += imgurImage.getSaveAs();
|
||||||
addURLToDownload(imgurImage.url, new File(saveAs));
|
addURLToDownload(imgurImage.url, new File(saveAs));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -279,7 +282,11 @@ public class ImgurRipper extends AlbumRipper {
|
|||||||
imagesFound++;
|
imagesFound++;
|
||||||
JSONObject image = images.getJSONObject(i);
|
JSONObject image = images.getJSONObject(i);
|
||||||
String imageUrl = "http://i.imgur.com/" + image.getString("hash") + image.getString("ext");
|
String imageUrl = "http://i.imgur.com/" + image.getString("hash") + image.getString("ext");
|
||||||
addURLToDownload(new URL(imageUrl), String.format("%03d_", imagesFound));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", imagesFound);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(imageUrl), prefix);
|
||||||
}
|
}
|
||||||
if (imagesFound >= imagesTotal) {
|
if (imagesFound >= imagesTotal) {
|
||||||
break;
|
break;
|
||||||
|
@ -75,7 +75,10 @@ public class IrarchivesRipper extends AlbumRipper {
|
|||||||
int albumIndex = 0;
|
int albumIndex = 0;
|
||||||
for (ImgurImage image : album.images) {
|
for (ImgurImage image : album.images) {
|
||||||
albumIndex++;
|
albumIndex++;
|
||||||
String saveAs = String.format("%s-%03d_", post.getString("hexid"), albumIndex);
|
String saveAs = String.format("%s-", post.getString("hexid"));
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
saveAs += String.format("%03d_", albumIndex);
|
||||||
|
}
|
||||||
addURLToDownload(image.url, saveAs);
|
addURLToDownload(image.url, saveAs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import org.jsoup.nodes.Document;
|
|||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class KinkyshareRipper extends AlbumRipper {
|
public class KinkyshareRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -68,7 +69,11 @@ public class KinkyshareRipper extends AlbumRipper {
|
|||||||
image = "http://kinkyshare.com" + image;
|
image = "http://kinkyshare.com" + image;
|
||||||
}
|
}
|
||||||
index += 1;
|
index += 1;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix);
|
||||||
}
|
}
|
||||||
waitForThreads();
|
waitForThreads();
|
||||||
}
|
}
|
||||||
|
@ -176,7 +176,11 @@ public class MinusRipper extends AlbumRipper {
|
|||||||
String image = "http://i.minus.com/i"
|
String image = "http://i.minus.com/i"
|
||||||
+ item.getString("id")
|
+ item.getString("id")
|
||||||
+ extension;
|
+ extension;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", i + 1), subdir);
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", i + 1);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix, subdir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ import org.jsoup.nodes.Document;
|
|||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
|
import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class ModelmayhemRipper extends AlbumRipper {
|
public class ModelmayhemRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -105,7 +106,11 @@ public class ModelmayhemRipper extends AlbumRipper {
|
|||||||
logger.info("Got empty image for " + picture.toString(2));
|
logger.info("Got empty image for " + picture.toString(2));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
addURLToDownload(new URL(bigImage), String.format("%03d_", i + 1));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", i + 1);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(bigImage), prefix);
|
||||||
}
|
}
|
||||||
waitForThreads();
|
waitForThreads();
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import org.jsoup.nodes.Element;
|
|||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
import com.rarchives.ripme.ripper.DownloadThreadPool;
|
import com.rarchives.ripme.ripper.DownloadThreadPool;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class MotherlessRipper extends AlbumRipper {
|
public class MotherlessRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -121,7 +122,11 @@ public class MotherlessRipper extends AlbumRipper {
|
|||||||
Matcher m = p.matcher(doc.outerHtml());
|
Matcher m = p.matcher(doc.outerHtml());
|
||||||
if (m.matches()) {
|
if (m.matches()) {
|
||||||
String file = m.group(1);
|
String file = m.group(1);
|
||||||
addURLToDownload(new URL(file), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(file), prefix);
|
||||||
} else {
|
} else {
|
||||||
logger.warn("[!] could not find '__fileurl' at " + url);
|
logger.warn("[!] could not find '__fileurl' at " + url);
|
||||||
}
|
}
|
||||||
|
@ -192,7 +192,11 @@ public class RedditRipper extends AlbumRipper {
|
|||||||
addURLToDownload(urls.get(0), id + "-");
|
addURLToDownload(urls.get(0), id + "-");
|
||||||
} else if (urls.size() > 1) {
|
} else if (urls.size() > 1) {
|
||||||
for (int i = 0; i < urls.size(); i++) {
|
for (int i = 0; i < urls.size(); i++) {
|
||||||
addURLToDownload(urls.get(i), id + String.format("-%03d-", i + 1));
|
String prefix = id + "-";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix += String.format("%03d-", i + 1);
|
||||||
|
}
|
||||||
|
addURLToDownload(urls.get(i), prefix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import org.jsoup.nodes.Element;
|
|||||||
import org.jsoup.select.Elements;
|
import org.jsoup.select.Elements;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class TeenplanetRipper extends AlbumRipper {
|
public class TeenplanetRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -82,7 +83,11 @@ public class TeenplanetRipper extends AlbumRipper {
|
|||||||
"/thumbs/",
|
"/thumbs/",
|
||||||
"/");
|
"/");
|
||||||
index += 1;
|
index += 1;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix);
|
||||||
}
|
}
|
||||||
waitForThreads();
|
waitForThreads();
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import org.jsoup.nodes.Document;
|
|||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class VkRipper extends AlbumRipper {
|
public class VkRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -83,7 +84,11 @@ public class VkRipper extends AlbumRipper {
|
|||||||
int vidid = jsonVideo.getInt(1);
|
int vidid = jsonVideo.getInt(1);
|
||||||
String videoURL = com.rarchives.ripme.ripper.rippers.video.VkRipper.getVideoURLAtPage(
|
String videoURL = com.rarchives.ripme.ripper.rippers.video.VkRipper.getVideoURLAtPage(
|
||||||
"http://vk.com/video" + oid + "_" + vidid);
|
"http://vk.com/video" + oid + "_" + vidid);
|
||||||
addURLToDownload(new URL(videoURL), String.format("%03d_", i + 1));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", i + 1);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(videoURL), prefix);
|
||||||
try {
|
try {
|
||||||
Thread.sleep(500);
|
Thread.sleep(500);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
|
@ -12,6 +12,7 @@ import org.jsoup.nodes.Document;
|
|||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
||||||
import com.rarchives.ripme.ripper.AlbumRipper;
|
import com.rarchives.ripme.ripper.AlbumRipper;
|
||||||
|
import com.rarchives.ripme.utils.Utils;
|
||||||
|
|
||||||
public class XhamsterRipper extends AlbumRipper {
|
public class XhamsterRipper extends AlbumRipper {
|
||||||
|
|
||||||
@ -52,7 +53,11 @@ public class XhamsterRipper extends AlbumRipper {
|
|||||||
"_160\\.",
|
"_160\\.",
|
||||||
"_1000.");
|
"_1000.");
|
||||||
index += 1;
|
index += 1;
|
||||||
addURLToDownload(new URL(image), String.format("%03d_", index));
|
String prefix = "";
|
||||||
|
if (Utils.getConfigBoolean("download.save_order", true)) {
|
||||||
|
prefix = String.format("%03d_", index);
|
||||||
|
}
|
||||||
|
addURLToDownload(new URL(image), prefix);
|
||||||
}
|
}
|
||||||
nextURL = null;
|
nextURL = null;
|
||||||
for (Element element : doc.select("a.last")) {
|
for (Element element : doc.select("a.last")) {
|
||||||
|
@ -105,6 +105,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
private static JTextField configRetriesText;
|
private static JTextField configRetriesText;
|
||||||
private static JCheckBox configAutoupdateCheckbox;
|
private static JCheckBox configAutoupdateCheckbox;
|
||||||
private static JCheckBox configPlaySound;
|
private static JCheckBox configPlaySound;
|
||||||
|
private static JCheckBox configSaveOrderCheckbox;
|
||||||
|
|
||||||
private static TrayIcon trayIcon;
|
private static TrayIcon trayIcon;
|
||||||
private static MenuItem trayMenuMain;
|
private static MenuItem trayMenuMain;
|
||||||
@ -168,6 +169,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
Utils.setConfigBoolean("clipboard.autorip", ClipboardUtils.getClipboardAutoRip());
|
Utils.setConfigBoolean("clipboard.autorip", ClipboardUtils.getClipboardAutoRip());
|
||||||
Utils.setConfigBoolean("auto.update", configAutoupdateCheckbox.isSelected());
|
Utils.setConfigBoolean("auto.update", configAutoupdateCheckbox.isSelected());
|
||||||
Utils.setConfigBoolean("play.sound", configPlaySound.isSelected());
|
Utils.setConfigBoolean("play.sound", configPlaySound.isSelected());
|
||||||
|
Utils.setConfigBoolean("download.save_order", configSaveOrderCheckbox.isSelected());
|
||||||
saveHistory();
|
saveHistory();
|
||||||
Utils.saveConfig();
|
Utils.saveConfig();
|
||||||
}
|
}
|
||||||
@ -310,6 +312,9 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
configPlaySound = new JCheckBox("Sound when rip completes", Utils.getConfigBoolean("play.sound", false));
|
configPlaySound = new JCheckBox("Sound when rip completes", Utils.getConfigBoolean("play.sound", false));
|
||||||
configPlaySound.setHorizontalAlignment(JCheckBox.RIGHT);
|
configPlaySound.setHorizontalAlignment(JCheckBox.RIGHT);
|
||||||
configPlaySound.setHorizontalTextPosition(JCheckBox.LEFT);
|
configPlaySound.setHorizontalTextPosition(JCheckBox.LEFT);
|
||||||
|
configSaveOrderCheckbox = new JCheckBox("Save images in order", Utils.getConfigBoolean("download.save_order", true));
|
||||||
|
configSaveOrderCheckbox.setHorizontalAlignment(JCheckBox.RIGHT);
|
||||||
|
configSaveOrderCheckbox.setHorizontalTextPosition(JCheckBox.LEFT);
|
||||||
configSaveDirLabel = new JLabel();
|
configSaveDirLabel = new JLabel();
|
||||||
try {
|
try {
|
||||||
String workingDir = (Utils.shortenPath(Utils.getWorkingDirectory()));
|
String workingDir = (Utils.shortenPath(Utils.getWorkingDirectory()));
|
||||||
@ -329,7 +334,8 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
gbc.gridx = 1; configurationPanel.add(configRetriesText, gbc);
|
gbc.gridx = 1; configurationPanel.add(configRetriesText, gbc);
|
||||||
gbc.gridy = 5; gbc.gridx = 0; configurationPanel.add(configOverwriteCheckbox, gbc);
|
gbc.gridy = 5; gbc.gridx = 0; configurationPanel.add(configOverwriteCheckbox, gbc);
|
||||||
gbc.gridy = 6; gbc.gridx = 0; configurationPanel.add(configPlaySound, gbc);
|
gbc.gridy = 6; gbc.gridx = 0; configurationPanel.add(configPlaySound, gbc);
|
||||||
gbc.gridy = 7; gbc.gridx = 0; configurationPanel.add(configSaveDirLabel, gbc);
|
gbc.gridy = 7; gbc.gridx = 0; configurationPanel.add(configSaveOrderCheckbox, gbc);
|
||||||
|
gbc.gridy = 8; gbc.gridx = 0; configurationPanel.add(configSaveDirLabel, gbc);
|
||||||
gbc.gridx = 1; configurationPanel.add(configSaveDirButton, gbc);
|
gbc.gridx = 1; configurationPanel.add(configSaveDirButton, gbc);
|
||||||
|
|
||||||
gbc.gridy = 0; pane.add(ripPanel, gbc);
|
gbc.gridy = 0; pane.add(ripPanel, gbc);
|
||||||
@ -487,6 +493,12 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
Utils.setConfigBoolean("file.overwrite", configOverwriteCheckbox.isSelected());
|
Utils.setConfigBoolean("file.overwrite", configOverwriteCheckbox.isSelected());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
configSaveOrderCheckbox.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
Utils.setConfigBoolean("download.save_order", configSaveOrderCheckbox.isSelected());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupTrayIcon() {
|
private void setupTrayIcon() {
|
||||||
@ -647,6 +659,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
if (!logPanel.isVisible()) {
|
if (!logPanel.isVisible()) {
|
||||||
optionLog.doClick();
|
optionLog.doClick();
|
||||||
}
|
}
|
||||||
|
urlString = urlString.trim();
|
||||||
if (urlString.toLowerCase().startsWith("gonewild:")) {
|
if (urlString.toLowerCase().startsWith("gonewild:")) {
|
||||||
urlString = "http://gonewild.com/user/" + urlString.substring(urlString.indexOf(':') + 1);
|
urlString = "http://gonewild.com/user/" + urlString.substring(urlString.indexOf(':') + 1);
|
||||||
}
|
}
|
||||||
@ -823,7 +836,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void ripAlbumStatic(String url) {
|
public static void ripAlbumStatic(String url) {
|
||||||
ripTextfield.setText(url);
|
ripTextfield.setText(url.trim());
|
||||||
ripButton.doClick();
|
ripButton.doClick();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -21,7 +21,7 @@ import com.rarchives.ripme.utils.Utils;
|
|||||||
public class UpdateUtils {
|
public class UpdateUtils {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(UpdateUtils.class);
|
private static final Logger logger = Logger.getLogger(UpdateUtils.class);
|
||||||
private static final String DEFAULT_VERSION = "1.0.45";
|
private static final String DEFAULT_VERSION = "1.0.46";
|
||||||
private static final String updateJsonURL = "http://rarchives.com/ripme.json";
|
private static final String updateJsonURL = "http://rarchives.com/ripme.json";
|
||||||
private static final String updateJarURL = "http://rarchives.com/ripme.jar";
|
private static final String updateJarURL = "http://rarchives.com/ripme.jar";
|
||||||
private static final String mainFileName = "ripme.jar";
|
private static final String mainFileName = "ripme.jar";
|
||||||
|
@ -22,3 +22,5 @@ gw.api = gonewild
|
|||||||
twitter.max_requests = 10
|
twitter.max_requests = 10
|
||||||
|
|
||||||
clipboard.autorip = false
|
clipboard.autorip = false
|
||||||
|
|
||||||
|
download.save_order = true
|
||||||
|
Loading…
Reference in New Issue
Block a user