From 05dea702c35f30a42c293fc76a337e9d8125abb2 Mon Sep 17 00:00:00 2001 From: Fabian Schlenz Date: Mon, 11 Jul 2016 06:21:34 +0200 Subject: [PATCH] Randomly choose file download block sizes in the hope of getting rid of FLOOD_WARN errors. --- src/main/java/de/fabianonline/telegram_backup/Config.java | 6 +++++- .../de/fabianonline/telegram_backup/DownloadManager.java | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/fabianonline/telegram_backup/Config.java b/src/main/java/de/fabianonline/telegram_backup/Config.java index 4b526d2..7714d42 100644 --- a/src/main/java/de/fabianonline/telegram_backup/Config.java +++ b/src/main/java/de/fabianonline/telegram_backup/Config.java @@ -34,7 +34,11 @@ public class Config { public static final String FILE_FILES_BASE = "files"; public static final String FILE_STICKER_BASE = "stickers"; - public static final int FILE_DOWNLOAD_BLOCK_SIZE = 1*1024*1024; + public static final int[] FILE_DOWNLOAD_BLOCK_SIZES = new int[]{ + 1*1024*1024, + 512*1024, + 2*1024*1024, + 4*1024*1024}; public static int DELAY_AFTER_GET_MESSAGES = 200; public static int DELAY_AFTER_GET_FILE = 1000; diff --git a/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java b/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java index 503e810..5f76844 100644 --- a/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java +++ b/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java @@ -38,6 +38,7 @@ import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.LinkedList; +import java.util.Random; import java.net.URL; import java.util.concurrent.TimeoutException; @@ -221,7 +222,8 @@ public class DownloadManager { int offset = 0; TLFile response; do { - TLRequestUploadGetFile req = new TLRequestUploadGetFile(loc, offset, Config.FILE_DOWNLOAD_BLOCK_SIZE); + int block_size = Config.FILE_DOWNLOAD_BLOCK_SIZES[new Random().nextInt(Config.FILE_DOWNLOAD_BLOCK_SIZES.length)]; + TLRequestUploadGetFile req = new TLRequestUploadGetFile(loc, offset, block_size); if (dcID==null) { response = (TLFile) client.executeRpcQuery(req); } else {