From 5d449fa4e5e8a7a84c431d84ed2c0d478dffa6ff Mon Sep 17 00:00:00 2001 From: death-claw <53543762+death-claw@users.noreply.github.com> Date: Tue, 13 Aug 2019 10:52:16 +0100 Subject: [PATCH 1/8] Fixed a bug in image filename extensions --- .../main/java/tn/mnlr/vripper/host/Host.java | 49 +++++++++++++++++-- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java b/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java index 64ab567..2fabf5b 100644 --- a/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java +++ b/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java @@ -18,10 +18,14 @@ import tn.mnlr.vripper.exception.HtmlProcessorException; import tn.mnlr.vripper.q.ImageFileData; import tn.mnlr.vripper.services.*; +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; +import javax.imageio.stream.ImageInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Iterator; import java.util.Random; @Service @@ -72,10 +76,7 @@ abstract public class Host { * END HOST SPECIFIC */ - if (!imageFileData.getImageName().toLowerCase().endsWith(".jpg") && !imageFileData.getImageName().toLowerCase().endsWith(".jpeg")) { - imageFileData.setImageName(imageFileData.getImageName() + ".jpg"); - } - + imageFileData.setImageName(formatImageFileName(imageFileData.getImageName())); File destinationFolder = new File(appSettingsService.getDownloadPath(), sanitize(image.getPostName() + "_" + image.getPostId())); logger.info(String.format("Saving to %s", destinationFolder.getPath())); if (!destinationFolder.exists()) { @@ -93,9 +94,10 @@ abstract public class Host { throw new DownloadException(String.format("Server returned code %d", response.getStatusLine().getStatusCode())); } + File outputFile = new File(destinationFolder.getPath() + File.separator + imageFileData.getImageName() + ".tmp"); try ( InputStream downloadStream = response.getEntity().getContent(); - FileOutputStream fos = new FileOutputStream(destinationFolder.getPath() + File.separator + sanitize(imageFileData.getImageName())) + FileOutputStream fos = new FileOutputStream(outputFile) ) { image.setTotal(response.getEntity().getContentLength()); @@ -110,6 +112,7 @@ abstract public class Host { downloadSpeedService.increase(read); } EntityUtils.consumeQuietly(response.getEntity()); + checkImageTypeAndRename(outputFile, imageFileData.getImageName()); } } } catch (Exception e) { @@ -120,6 +123,42 @@ abstract public class Host { } } + private void checkImageTypeAndRename(File outputFile, String imageName) throws HostException { + try { + ImageInputStream iis = ImageIO.createImageInputStream(outputFile); + Iterator it = ImageIO.getImageReaders(iis); + if (!it.hasNext()) { + throw new HostException("Image file is not recognized!"); + } + ImageReader reader = it.next(); + String formatName = reader.getFormatName(); + if (formatName.toUpperCase().equals("JPEG")) { + formatName = "JPG"; + } + String outImageName = imageName + "." + formatName.toUpperCase(); + outputFile.renameTo(new File(outputFile.getParent(), outImageName)); + } catch (Exception e) { + throw new HostException("Failed to rename output file", e); + } + } + + /** + * Will sanitize the image name and remove extension + * + * @param imageName + * @return + */ + protected String formatImageFileName(String imageName) { + int extensionIndex = imageName.lastIndexOf('.'); + String fileName; + if (extensionIndex != -1) { + fileName = imageName.substring(0, extensionIndex); + } else { + fileName = imageName; + } + return sanitize(fileName); + } + /** * Just for testing, you may ignore * @throws Exception From bf2e8c4bb6a054f649790a435342aa4f11ced273 Mon Sep 17 00:00:00 2001 From: death-claw <53543762+death-claw@users.noreply.github.com> Date: Tue, 13 Aug 2019 11:21:54 +0100 Subject: [PATCH 2/8] v1.4.7 --- CHANGELOG.md | 4 ++++ pom.xml | 2 +- vripper-electron/package-lock.json | 2 +- vripper-electron/package.json | 2 +- vripper-electron/pom.xml | 2 +- vripper-server/pom.xml | 2 +- vripper-ui/package-lock.json | 2 +- vripper-ui/package.json | 2 +- vripper-ui/pom.xml | 2 +- 9 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 524f385..fbb79a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [1.4.7] - 2019-08-13 +### Changed +- Fixed a bug in image filename extensions + ## [1.4.6] - 2019-08-06 ### Changed - Fixed a bug when creating image file names diff --git a/pom.xml b/pom.xml index 01dac29..bcbcfa7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 tn.mnlr vripper - 1.4.6 + 1.4.7 pom org.springframework.boot diff --git a/vripper-electron/package-lock.json b/vripper-electron/package-lock.json index 8bb5c00..16f7e80 100644 --- a/vripper-electron/package-lock.json +++ b/vripper-electron/package-lock.json @@ -1,6 +1,6 @@ { "name": "vripper-electron", - "version": "1.4.6", + "version": "1.4.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/vripper-electron/package.json b/vripper-electron/package.json index d872239..e6e00c9 100644 --- a/vripper-electron/package.json +++ b/vripper-electron/package.json @@ -1,6 +1,6 @@ { "name": "vripper-electron", - "version": "1.4.6", + "version": "1.4.7", "description": "", "main": "main.js", "author": "", diff --git a/vripper-electron/pom.xml b/vripper-electron/pom.xml index 7fb20b6..93f65ab 100644 --- a/vripper-electron/pom.xml +++ b/vripper-electron/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.6 + 1.4.7 vripper-electron vripper-electron diff --git a/vripper-server/pom.xml b/vripper-server/pom.xml index eca74c7..029aab1 100644 --- a/vripper-server/pom.xml +++ b/vripper-server/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.6 + 1.4.7 vripper-server vripper-server diff --git a/vripper-ui/package-lock.json b/vripper-ui/package-lock.json index d86a77a..8e836ea 100644 --- a/vripper-ui/package-lock.json +++ b/vripper-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "vripper-ui", - "version": "1.4.6", + "version": "1.4.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/vripper-ui/package.json b/vripper-ui/package.json index f7df0e3..414acbb 100644 --- a/vripper-ui/package.json +++ b/vripper-ui/package.json @@ -1,6 +1,6 @@ { "name": "vripper-ui", - "version": "1.4.6", + "version": "1.4.7", "scripts": { "ng": "ng", "start": "ng serve", diff --git a/vripper-ui/pom.xml b/vripper-ui/pom.xml index d748cbc..529a336 100644 --- a/vripper-ui/pom.xml +++ b/vripper-ui/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.6 + 1.4.7 vripper-ui vripper-ui From 9b9c5ac5c82f039757e624c9b4af0c05a87e051d Mon Sep 17 00:00:00 2001 From: death-claw <53543762+death-claw@users.noreply.github.com> Date: Tue, 13 Aug 2019 14:34:46 +0100 Subject: [PATCH 3/8] Add option to force image ordering --- .../src/main/java/tn/mnlr/vripper/entities/Image.java | 6 ++++-- .../src/main/java/tn/mnlr/vripper/host/Host.java | 11 +++++------ .../tn/mnlr/vripper/services/AppSettingsService.java | 9 ++++++++- .../tn/mnlr/vripper/services/AppStateService.java | 4 ++-- .../java/tn/mnlr/vripper/services/PostParser.java | 2 +- .../web/restendpoints/SettingsRestEndpoint.java | 6 ++++-- vripper-ui/src/app/settings/settings.component.html | 5 +++++ vripper-ui/src/app/settings/settings.component.scss | 4 ++++ vripper-ui/src/app/settings/settings.component.ts | 1 + 9 files changed, 34 insertions(+), 14 deletions(-) diff --git a/vripper-server/src/main/java/tn/mnlr/vripper/entities/Image.java b/vripper-server/src/main/java/tn/mnlr/vripper/entities/Image.java index fd4ce0f..ba240b3 100644 --- a/vripper-server/src/main/java/tn/mnlr/vripper/entities/Image.java +++ b/vripper-server/src/main/java/tn/mnlr/vripper/entities/Image.java @@ -9,7 +9,6 @@ import tn.mnlr.vripper.host.Host; import tn.mnlr.vripper.services.AppStateService; import java.util.Objects; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; @Getter @@ -30,6 +29,8 @@ public class Image { private String url; + private int index; + private AtomicLong current = new AtomicLong(0); private Status status; private BehaviorProcessor imageStateProcessor; @@ -37,12 +38,13 @@ public class Image { @Setter private long total = 0; - public Image(String url, String postId, String postName, Host host, AppStateService appStateService) { + public Image(String url, String postId, String postName, Host host, AppStateService appStateService, int index) { this.url = url; this.postId = postId; this.postName = postName; this.host = host; this.appStateService = appStateService; + this.index = index; status = Status.PENDING; imageStateProcessor = BehaviorProcessor.create(); appStateService.getCurrentImages().put(this.url, this); diff --git a/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java b/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java index 2fabf5b..ff754bf 100644 --- a/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java +++ b/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java @@ -112,7 +112,7 @@ abstract public class Host { downloadSpeedService.increase(read); } EntityUtils.consumeQuietly(response.getEntity()); - checkImageTypeAndRename(outputFile, imageFileData.getImageName()); + checkImageTypeAndRename(outputFile, imageFileData.getImageName(), image.getIndex()); } } } catch (Exception e) { @@ -123,9 +123,8 @@ abstract public class Host { } } - private void checkImageTypeAndRename(File outputFile, String imageName) throws HostException { - try { - ImageInputStream iis = ImageIO.createImageInputStream(outputFile); + private void checkImageTypeAndRename(File outputFile, String imageName, int index) throws HostException { + try (ImageInputStream iis = ImageIO.createImageInputStream(outputFile)) { Iterator it = ImageIO.getImageReaders(iis); if (!it.hasNext()) { throw new HostException("Image file is not recognized!"); @@ -133,9 +132,9 @@ abstract public class Host { ImageReader reader = it.next(); String formatName = reader.getFormatName(); if (formatName.toUpperCase().equals("JPEG")) { - formatName = "JPG"; + formatName = "jpg"; } - String outImageName = imageName + "." + formatName.toUpperCase(); + String outImageName = (appSettingsService.isForceOrder() ? String.format("%03d_", index) : "") + imageName + "." + formatName.toLowerCase(); outputFile.renameTo(new File(outputFile.getParent(), outImageName)); } catch (Exception e) { throw new HostException("Failed to rename output file", e); diff --git a/vripper-server/src/main/java/tn/mnlr/vripper/services/AppSettingsService.java b/vripper-server/src/main/java/tn/mnlr/vripper/services/AppSettingsService.java index 4991421..6e372cd 100644 --- a/vripper-server/src/main/java/tn/mnlr/vripper/services/AppSettingsService.java +++ b/vripper-server/src/main/java/tn/mnlr/vripper/services/AppSettingsService.java @@ -34,6 +34,7 @@ public class AppSettingsService { private final String V_PASSWORD = "VPASSWORD"; private final String V_THANKS = "VTHANKS"; private final String DESKTOP_CLIPBOARD = "DESKTOP_CLIPBOARD"; + private final String FORCE_ORDER = "FORCE_ORDER"; private String downloadPath; private int maxThreads; @@ -43,6 +44,7 @@ public class AppSettingsService { private String vPassword; private boolean vThanks; private boolean desktopClipboard; + private boolean forceOrder; public void setVPassword(String vPassword) { if(vPassword.isEmpty()) { @@ -62,6 +64,7 @@ public class AppSettingsService { vPassword = prefs.get(V_PASSWORD, ""); vThanks = prefs.getBoolean(V_THANKS, false); desktopClipboard = prefs.getBoolean(DESKTOP_CLIPBOARD, false); + forceOrder = prefs.getBoolean(FORCE_ORDER, false); } @PreDestroy @@ -75,6 +78,7 @@ public class AppSettingsService { prefs.put(V_PASSWORD, vPassword); prefs.putBoolean(V_THANKS, vThanks); prefs.putBoolean(DESKTOP_CLIPBOARD, desktopClipboard); + prefs.putBoolean(FORCE_ORDER, forceOrder); try { prefs.sync(); @@ -121,8 +125,10 @@ public class AppSettingsService { private boolean vThanks; @JsonProperty("desktopClipboard") private boolean desktopClipboard; + @JsonProperty("forceOrder") + private boolean forceOrder; - public Settings(String downloadPath, int maxThreads, boolean autoStart, boolean vLogin, String vUsername, String vPassword, boolean vThanks, boolean desktopClipboard) { + public Settings(String downloadPath, int maxThreads, boolean autoStart, boolean vLogin, String vUsername, String vPassword, boolean vThanks, boolean desktopClipboard, boolean forceOrder) { this.downloadPath = downloadPath; this.maxThreads = maxThreads; this.autoStart = autoStart; @@ -131,6 +137,7 @@ public class AppSettingsService { this.vPassword = vPassword; this.vThanks = vThanks; this.desktopClipboard = desktopClipboard; + this.forceOrder = forceOrder; } } } diff --git a/vripper-server/src/main/java/tn/mnlr/vripper/services/AppStateService.java b/vripper-server/src/main/java/tn/mnlr/vripper/services/AppStateService.java index 451170c..002be95 100644 --- a/vripper-server/src/main/java/tn/mnlr/vripper/services/AppStateService.java +++ b/vripper-server/src/main/java/tn/mnlr/vripper/services/AppStateService.java @@ -45,8 +45,8 @@ public class AppStateService { } } - public Image createImage(String pageUrl, String postId, String postName, Host host) { - return new Image(pageUrl, postId, postName, host, this); + public Image createImage(String pageUrl, String postId, String postName, Host host, int index) { + return new Image(pageUrl, postId, postName, host, this, index); } public Post createPost(String title, String url, List images, Map metadata, String postId, String postCounter) { diff --git a/vripper-server/src/main/java/tn/mnlr/vripper/services/PostParser.java b/vripper-server/src/main/java/tn/mnlr/vripper/services/PostParser.java index 7cad4fb..840c5d3 100644 --- a/vripper-server/src/main/java/tn/mnlr/vripper/services/PostParser.java +++ b/vripper-server/src/main/java/tn/mnlr/vripper/services/PostParser.java @@ -180,7 +180,7 @@ public class PostParser { } if (foundHost != null) { logger.info(String.format("Found supported host %s for %s", foundHost.getClass().getSimpleName(), imageHref)); - imagesList.add(appStateService.createImage(imageHref.getTextContent(), postId, postTitle, foundHost)); + imagesList.add(appStateService.createImage(imageHref.getTextContent(), postId, postTitle, foundHost, imagesList.size() + 1)); } else { logger.warn(String.format("unsupported host for %s, skipping", imageHref)); continue; diff --git a/vripper-server/src/main/java/tn/mnlr/vripper/web/restendpoints/SettingsRestEndpoint.java b/vripper-server/src/main/java/tn/mnlr/vripper/web/restendpoints/SettingsRestEndpoint.java index 2db2591..e486c6c 100644 --- a/vripper-server/src/main/java/tn/mnlr/vripper/web/restendpoints/SettingsRestEndpoint.java +++ b/vripper-server/src/main/java/tn/mnlr/vripper/web/restendpoints/SettingsRestEndpoint.java @@ -7,8 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import tn.mnlr.vripper.services.AppSettingsService; import tn.mnlr.vripper.exception.ValidationException; +import tn.mnlr.vripper.services.AppSettingsService; import tn.mnlr.vripper.services.VipergirlsAuthService; @RestController @@ -57,6 +57,7 @@ public class SettingsRestEndpoint { this.settings.setVThanks(false); } this.settings.setDesktopClipboard(settings.isDesktopClipboard()); + this.settings.setForceOrder(settings.isForceOrder()); this.settings.save(); @@ -76,7 +77,8 @@ public class SettingsRestEndpoint { settings.getVUsername(), settings.getVPassword(), settings.isVThanks(), - settings.isDesktopClipboard() + settings.isDesktopClipboard(), + settings.isForceOrder() ); } diff --git a/vripper-ui/src/app/settings/settings.component.html b/vripper-ui/src/app/settings/settings.component.html index 9342aee..c70343a 100644 --- a/vripper-ui/src/app/settings/settings.component.html +++ b/vripper-ui/src/app/settings/settings.component.html @@ -35,6 +35,11 @@ /> + Force image ordering (prepend incremental numbers) + + Auto start downloads diff --git a/vripper-ui/src/app/settings/settings.component.scss b/vripper-ui/src/app/settings/settings.component.scss index db5f0da..a804cbc 100644 --- a/vripper-ui/src/app/settings/settings.component.scss +++ b/vripper-ui/src/app/settings/settings.component.scss @@ -18,3 +18,7 @@ .container form section div > * { width: 100%; } + +mat-checkbox { + display: block; +} \ No newline at end of file diff --git a/vripper-ui/src/app/settings/settings.component.ts b/vripper-ui/src/app/settings/settings.component.ts index 34ae9f7..2306cda 100644 --- a/vripper-ui/src/app/settings/settings.component.ts +++ b/vripper-ui/src/app/settings/settings.component.ts @@ -25,6 +25,7 @@ export class SettingsComponent implements OnInit { downloadPath: new FormControl(''), maxThreads: new FormControl(''), autoStart: new FormControl(false), + forceOrder: new FormControl(false), vLogin: new FormControl(false), vUsername: new FormControl(''), vPassword: new FormControl(''), From eeb24ae7c1ad316c812c5650e3187395e259c941 Mon Sep 17 00:00:00 2001 From: death-claw <53543762+death-claw@users.noreply.github.com> Date: Tue, 13 Aug 2019 14:39:41 +0100 Subject: [PATCH 4/8] v1.4.8 --- CHANGELOG.md | 4 ++++ pom.xml | 2 +- vripper-electron/package-lock.json | 2 +- vripper-electron/package.json | 2 +- vripper-electron/pom.xml | 2 +- vripper-server/pom.xml | 2 +- vripper-ui/package-lock.json | 2 +- vripper-ui/package.json | 2 +- vripper-ui/pom.xml | 2 +- 9 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbb79a5..b5f53c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [1.4.8] - 2019-08-13 +### Changed +- Add option to force image ordering + ## [1.4.7] - 2019-08-13 ### Changed - Fixed a bug in image filename extensions diff --git a/pom.xml b/pom.xml index bcbcfa7..326cddc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 tn.mnlr vripper - 1.4.7 + 1.4.8 pom org.springframework.boot diff --git a/vripper-electron/package-lock.json b/vripper-electron/package-lock.json index 16f7e80..7bd93d0 100644 --- a/vripper-electron/package-lock.json +++ b/vripper-electron/package-lock.json @@ -1,6 +1,6 @@ { "name": "vripper-electron", - "version": "1.4.7", + "version": "1.4.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/vripper-electron/package.json b/vripper-electron/package.json index e6e00c9..e7ce5d5 100644 --- a/vripper-electron/package.json +++ b/vripper-electron/package.json @@ -1,6 +1,6 @@ { "name": "vripper-electron", - "version": "1.4.7", + "version": "1.4.8", "description": "", "main": "main.js", "author": "", diff --git a/vripper-electron/pom.xml b/vripper-electron/pom.xml index 93f65ab..7a8be36 100644 --- a/vripper-electron/pom.xml +++ b/vripper-electron/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.7 + 1.4.8 vripper-electron vripper-electron diff --git a/vripper-server/pom.xml b/vripper-server/pom.xml index 029aab1..3f855be 100644 --- a/vripper-server/pom.xml +++ b/vripper-server/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.7 + 1.4.8 vripper-server vripper-server diff --git a/vripper-ui/package-lock.json b/vripper-ui/package-lock.json index 8e836ea..ee609c4 100644 --- a/vripper-ui/package-lock.json +++ b/vripper-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "vripper-ui", - "version": "1.4.7", + "version": "1.4.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/vripper-ui/package.json b/vripper-ui/package.json index 414acbb..d85077f 100644 --- a/vripper-ui/package.json +++ b/vripper-ui/package.json @@ -1,6 +1,6 @@ { "name": "vripper-ui", - "version": "1.4.7", + "version": "1.4.8", "scripts": { "ng": "ng", "start": "ng serve", diff --git a/vripper-ui/pom.xml b/vripper-ui/pom.xml index 529a336..2737178 100644 --- a/vripper-ui/pom.xml +++ b/vripper-ui/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.7 + 1.4.8 vripper-ui vripper-ui From fe3543a4abb156a8e494c2c492b71f42d381dd45 Mon Sep 17 00:00:00 2001 From: death-claw <53543762+death-claw@users.noreply.github.com> Date: Tue, 13 Aug 2019 14:56:19 +0100 Subject: [PATCH 5/8] Update Built-By to be generic --- vripper-server/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/vripper-server/pom.xml b/vripper-server/pom.xml index 3f855be..3851399 100644 --- a/vripper-server/pom.xml +++ b/vripper-server/pom.xml @@ -129,6 +129,7 @@ ${maven.build.timestamp} + ${user.name} From 54c9a218612c2a5464ac31698d1186c5197d4a83 Mon Sep 17 00:00:00 2001 From: death-claw <53543762+death-claw@users.noreply.github.com> Date: Tue, 13 Aug 2019 15:00:41 +0100 Subject: [PATCH 6/8] v1.4.9 --- CHANGELOG.md | 4 ++++ pom.xml | 2 +- vripper-electron/package-lock.json | 2 +- vripper-electron/package.json | 2 +- vripper-electron/pom.xml | 2 +- vripper-server/pom.xml | 2 +- vripper-ui/package-lock.json | 2 +- vripper-ui/package.json | 2 +- vripper-ui/pom.xml | 2 +- 9 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5f53c8..8be8ce9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [1.4.9] - 2019-08-13 +### Changed +- Update Built-By to be generic + ## [1.4.8] - 2019-08-13 ### Changed - Add option to force image ordering diff --git a/pom.xml b/pom.xml index 326cddc..3a84c88 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 tn.mnlr vripper - 1.4.8 + 1.4.9 pom org.springframework.boot diff --git a/vripper-electron/package-lock.json b/vripper-electron/package-lock.json index 7bd93d0..32d9ccb 100644 --- a/vripper-electron/package-lock.json +++ b/vripper-electron/package-lock.json @@ -1,6 +1,6 @@ { "name": "vripper-electron", - "version": "1.4.8", + "version": "1.4.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/vripper-electron/package.json b/vripper-electron/package.json index e7ce5d5..4349d6d 100644 --- a/vripper-electron/package.json +++ b/vripper-electron/package.json @@ -1,6 +1,6 @@ { "name": "vripper-electron", - "version": "1.4.8", + "version": "1.4.9", "description": "", "main": "main.js", "author": "", diff --git a/vripper-electron/pom.xml b/vripper-electron/pom.xml index 7a8be36..b30c2af 100644 --- a/vripper-electron/pom.xml +++ b/vripper-electron/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.8 + 1.4.9 vripper-electron vripper-electron diff --git a/vripper-server/pom.xml b/vripper-server/pom.xml index 3851399..56878af 100644 --- a/vripper-server/pom.xml +++ b/vripper-server/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.8 + 1.4.9 vripper-server vripper-server diff --git a/vripper-ui/package-lock.json b/vripper-ui/package-lock.json index ee609c4..732e427 100644 --- a/vripper-ui/package-lock.json +++ b/vripper-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "vripper-ui", - "version": "1.4.8", + "version": "1.4.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/vripper-ui/package.json b/vripper-ui/package.json index d85077f..33d4920 100644 --- a/vripper-ui/package.json +++ b/vripper-ui/package.json @@ -1,6 +1,6 @@ { "name": "vripper-ui", - "version": "1.4.8", + "version": "1.4.9", "scripts": { "ng": "ng", "start": "ng serve", diff --git a/vripper-ui/pom.xml b/vripper-ui/pom.xml index 2737178..afd9240 100644 --- a/vripper-ui/pom.xml +++ b/vripper-ui/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.8 + 1.4.9 vripper-ui vripper-ui From 9ee8b90003f1b53e5a36bf10cf71d83349a3f0cc Mon Sep 17 00:00:00 2001 From: death-claw <53543762+death-claw@users.noreply.github.com> Date: Thu, 15 Aug 2019 18:30:58 +0100 Subject: [PATCH 7/8] Fix image rename on windows --- .../main/java/tn/mnlr/vripper/host/Host.java | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java b/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java index ff754bf..d109c59 100644 --- a/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java +++ b/vripper-server/src/main/java/tn/mnlr/vripper/host/Host.java @@ -25,6 +25,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; import java.util.Iterator; import java.util.Random; @@ -95,11 +96,9 @@ abstract public class Host { } File outputFile = new File(destinationFolder.getPath() + File.separator + imageFileData.getImageName() + ".tmp"); - try ( - InputStream downloadStream = response.getEntity().getContent(); - FileOutputStream fos = new FileOutputStream(outputFile) - ) { - + InputStream downloadStream = response.getEntity().getContent(); + FileOutputStream fos = new FileOutputStream(outputFile); + try { image.setTotal(response.getEntity().getContentLength()); logger.info(String.format("%s length is %d", imageFileData.getImageUrl(), image.getTotal())); logger.info(String.format("Starting data transfer for %s", imageFileData.getImageUrl())); @@ -112,8 +111,15 @@ abstract public class Host { downloadSpeedService.increase(read); } EntityUtils.consumeQuietly(response.getEntity()); - checkImageTypeAndRename(outputFile, imageFileData.getImageName(), image.getIndex()); + } finally { + if (downloadStream != null) { + downloadStream.close(); + } + if (fos != null) { + fos.close(); + } } + checkImageTypeAndRename(outputFile, imageFileData.getImageName(), image.getIndex()); } } catch (Exception e) { if(Thread.interrupted()) { @@ -124,20 +130,25 @@ abstract public class Host { } private void checkImageTypeAndRename(File outputFile, String imageName, int index) throws HostException { + String formatName; try (ImageInputStream iis = ImageIO.createImageInputStream(outputFile)) { Iterator it = ImageIO.getImageReaders(iis); if (!it.hasNext()) { throw new HostException("Image file is not recognized!"); } ImageReader reader = it.next(); - String formatName = reader.getFormatName(); + formatName = reader.getFormatName(); if (formatName.toUpperCase().equals("JPEG")) { formatName = "jpg"; } - String outImageName = (appSettingsService.isForceOrder() ? String.format("%03d_", index) : "") + imageName + "." + formatName.toLowerCase(); - outputFile.renameTo(new File(outputFile.getParent(), outImageName)); } catch (Exception e) { - throw new HostException("Failed to rename output file", e); + throw new HostException("Failed to guess image format", e); + } + try { + String outImageName = (appSettingsService.isForceOrder() ? String.format("%03d_", index) : "") + imageName + "." + formatName.toLowerCase(); + Files.move(outputFile.toPath(), new File(outputFile.getParent(), outImageName).toPath()); + } catch (Exception e) { + throw new HostException("Failed to rename the image", e); } } From 43788a0f96ab397e366609968a798873878c4dbd Mon Sep 17 00:00:00 2001 From: death-claw <53543762+death-claw@users.noreply.github.com> Date: Thu, 15 Aug 2019 18:33:45 +0100 Subject: [PATCH 8/8] v1.4.10 --- CHANGELOG.md | 4 ++++ pom.xml | 2 +- vripper-electron/package-lock.json | 2 +- vripper-electron/package.json | 2 +- vripper-electron/pom.xml | 2 +- vripper-server/pom.xml | 2 +- vripper-ui/package-lock.json | 2 +- vripper-ui/package.json | 2 +- vripper-ui/pom.xml | 2 +- 9 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8be8ce9..9e1101c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [1.4.10] - 2019-08-15 +### Changed +- Fix a rename issue on windows + ## [1.4.9] - 2019-08-13 ### Changed - Update Built-By to be generic diff --git a/pom.xml b/pom.xml index 3a84c88..ae18769 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 tn.mnlr vripper - 1.4.9 + 1.4.10 pom org.springframework.boot diff --git a/vripper-electron/package-lock.json b/vripper-electron/package-lock.json index 32d9ccb..072c4fe 100644 --- a/vripper-electron/package-lock.json +++ b/vripper-electron/package-lock.json @@ -1,6 +1,6 @@ { "name": "vripper-electron", - "version": "1.4.9", + "version": "1.4.10", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/vripper-electron/package.json b/vripper-electron/package.json index 4349d6d..ec5a769 100644 --- a/vripper-electron/package.json +++ b/vripper-electron/package.json @@ -1,6 +1,6 @@ { "name": "vripper-electron", - "version": "1.4.9", + "version": "1.4.10", "description": "", "main": "main.js", "author": "", diff --git a/vripper-electron/pom.xml b/vripper-electron/pom.xml index b30c2af..9a8e30c 100644 --- a/vripper-electron/pom.xml +++ b/vripper-electron/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.9 + 1.4.10 vripper-electron vripper-electron diff --git a/vripper-server/pom.xml b/vripper-server/pom.xml index 56878af..3077415 100644 --- a/vripper-server/pom.xml +++ b/vripper-server/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.9 + 1.4.10 vripper-server vripper-server diff --git a/vripper-ui/package-lock.json b/vripper-ui/package-lock.json index 732e427..74a3237 100644 --- a/vripper-ui/package-lock.json +++ b/vripper-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "vripper-ui", - "version": "1.4.9", + "version": "1.4.10", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/vripper-ui/package.json b/vripper-ui/package.json index 33d4920..80f9fa5 100644 --- a/vripper-ui/package.json +++ b/vripper-ui/package.json @@ -1,6 +1,6 @@ { "name": "vripper-ui", - "version": "1.4.9", + "version": "1.4.10", "scripts": { "ng": "ng", "start": "ng serve", diff --git a/vripper-ui/pom.xml b/vripper-ui/pom.xml index afd9240..a61b7f4 100644 --- a/vripper-ui/pom.xml +++ b/vripper-ui/pom.xml @@ -5,7 +5,7 @@ tn.mnlr vripper - 1.4.9 + 1.4.10 vripper-ui vripper-ui