1
0
mirror of https://github.com/RipMeApp/ripme.git synced 2025-08-29 16:50:10 +02:00

Changed up name sanitization a bit

This commit is contained in:
cyian-1756
2018-10-28 09:06:15 -04:00
parent 5b78ba0266
commit 3929813c5a

View File

@@ -20,7 +20,7 @@ import org.jsoup.HttpStatusException;
import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
import com.rarchives.ripme.utils.Utils;
import com.rarchives.ripme.ripper.AbstractRipper;
import static java.lang.Math.toIntExact;
/**
* Thread for downloading files.
@@ -62,11 +62,6 @@ class DownloadFileThread extends Thread {
this.cookies = cookies;
}
public File sanitizeSaveAs(File fileToSan) {
String fileName = fileToSan.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
return new File(saveAs.getParentFile().getAbsolutePath() + File.separator + fileName);
}
/**
* Attempts to download the file. Retries as needed.
@@ -74,7 +69,7 @@ class DownloadFileThread extends Thread {
*/
public void run() {
// First thing we make sure the file name doesn't have any illegal chars in it
saveAs = sanitizeSaveAs(saveAs);
saveAs = new File(saveAs.getParentFile().getAbsolutePath() + File.separator + Utils.sanitizeSaveAs(saveAs.getName()));
long fileSize = 0;
int bytesTotal = 0;
int bytesDownloaded = 0;
@@ -222,14 +217,16 @@ class DownloadFileThread extends Thread {
String[] saveAsSplit = saveAs.getName().split("\\.");
// Get the file extension so when we shorten the file name we don't cut off the file extension
String fileExt = saveAsSplit[saveAsSplit.length - 1];
// The max limit for filenames on Linux with Ext3/4 is 255 bytes, on windows it's 256 chars so rather than
// bother with code with both platforms we just cut the file name down to 254 chars
// The max limit for filenames on Linux with Ext3/4 is 255 bytes
logger.info(saveAs.getName().substring(0, 254 - fileExt.length()) + fileExt);
String filename = saveAs.getName().substring(0, 254 - fileExt.length()) + "." + fileExt;
// We can't just use the new file name as the saveAs because the file name doesn't include the
// users save path, so we get the user save path from the old saveAs
saveAs = new File(saveAs.getParentFile().getAbsolutePath() + "/" + filename);
saveAs = new File(saveAs.getParentFile().getAbsolutePath() + File.separator + filename);
fos = new FileOutputStream(saveAs);
} else if (saveAs.getAbsolutePath().length() > 259 && Utils.isWindows()) {
// This if is for when the file path has gone above 260 chars which windows does not allow
fos = new FileOutputStream(Utils.shortenSaveAsWindows(saveAs.getParentFile().getPath(), saveAs.getName()));
}
}
}