From 4138c41ff23e6d0e61a13646c3e4115522323588 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Wed, 15 Oct 2025 17:19:05 -0700 Subject: add default 3 retry attempts to any download --- src/main/java/Main.java | 64 +++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 26 deletions(-) (limited to 'src/main/java/Main.java') diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 229d752..19452e7 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -73,43 +73,55 @@ public class Main extends JFrame { return (int) (((double) current / (double) total) * 100); } - public void downloadAndTag(){ + public void downloadAndTag() { ArrayList songs = FileUtility.txtToList(textPath); String browser = configuration.get("browser"); int totalSongs = songs.size(); int songsProcessed = 0; - for(String line: songs){ + + for (String line : songs) { System.out.println(line); - if(line.contains(",")){ - String[] parts = line.split(","); - String url = parts[0]; - String stamp = parts[1]; - Downloader downloader = new Downloader(completedDir, outputArea); - try{ - if(!downloader.download(url, stamp, browser)){ - UI.Modal.showError("Error downloading song: " + url + " at timestamp: " + stamp); + Downloader downloader = new Downloader(completedDir, outputArea); + boolean success = false; + + for (int attempt = 1; attempt <= 3; attempt++) { + try { + if (line.contains(",")) { + String[] parts = line.split(","); + String url = parts[0]; + String stamp = parts[1]; + + if (downloader.download(url, stamp, browser)) { + success = true; + break; + } else { + System.out.println("Attempt " + attempt + " failed for " + url); + } + } else { + if (downloader.download(line, browser)) { + success = true; + break; + } else { + System.out.println("Attempt " + attempt + " failed for " + line); + } } - } - catch (Exception e){ - UI.Modal.showError("We were unable to download a song, please check to logs " + e); - return; - } - - } - else{ - Downloader downloader = new Downloader(completedDir, outputArea); - try{ - if(!downloader.download(line, browser)){ - UI.Modal.showError("Error downloading song: " + line); - } + } catch (Exception e) { + System.out.println("Error on attempt " + attempt + " for line: " + line + " -> " + e); } - catch (Exception e){ - UI.Modal.showError("We were unable to download a song, please check to logs " + e); - return; + + // wait before retrying (except after last attempt) + if (attempt < 3) { + try { + Thread.sleep(5000); + } catch (InterruptedException ignored) {} } + } + if (!success) { + UI.Modal.showError("Failed to download after 3 attempts: " + line); } + songsProcessed++; progressBar.setValue(calculatePercentage(songsProcessed, totalSongs)); } -- cgit v1.2.3