mirror of
https://github.com/fabianonline/telegram_backup.git
synced 2024-11-22 16:56:16 +00:00
Added FLOOD_WAIT detection.
This commit is contained in:
parent
bad165e97b
commit
bfdd70933d
@ -19,8 +19,8 @@ class Config {
|
|||||||
|
|
||||||
public static final int FILE_DOWNLOAD_BLOCK_SIZE = 10*1024*1024;
|
public static final int FILE_DOWNLOAD_BLOCK_SIZE = 10*1024*1024;
|
||||||
|
|
||||||
public static final int DELAY_AFTER_GET_MESSAGES = 200;
|
public static int DELAY_AFTER_GET_MESSAGES = 200;
|
||||||
public static final int DELAY_AFTER_GET_FILE = 200;
|
public static int DELAY_AFTER_GET_FILE = 750;
|
||||||
|
|
||||||
public static final String SECRET_GMAPS = "AIzaSyBEtUDhCQKEH6i2Mn1GAiQ9M_tLN0vxHIs";
|
public static final String SECRET_GMAPS = "AIzaSyBEtUDhCQKEH6i2Mn1GAiQ9M_tLN0vxHIs";
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,33 @@ class DownloadManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void downloadMessages(Integer limit) throws RpcErrorException, IOException {
|
public void downloadMessages(Integer limit) throws RpcErrorException, IOException {
|
||||||
|
boolean completed = true;
|
||||||
|
do {
|
||||||
|
completed = true;
|
||||||
|
try {
|
||||||
|
_downloadMessages(limit);
|
||||||
|
} catch (RpcErrorException e) {
|
||||||
|
if (e.getTag().startsWith("420: FLOOD_WAIT_")) {
|
||||||
|
completed = false;
|
||||||
|
Config.DELAY_AFTER_GET_MESSAGES = 1500;
|
||||||
|
int delay = Integer.parseInt(e.getTag().substring(16));
|
||||||
|
System.out.println("");
|
||||||
|
System.out.println("Telegram complained about us (okay, me) making too many requests in too short time.");
|
||||||
|
System.out.println("So we now have to wait a bit. Telegram asked us to wait for " + delay + " seconds, which");
|
||||||
|
System.out.println("is about " + ((delay / 60) + 1) + " minutes.");
|
||||||
|
System.out.println("So I'm going to do that now. If you don't want to wait, you can quit by pressing");
|
||||||
|
System.out.println("Ctrl+C. You can restart me at any time and I will just continue to download your");
|
||||||
|
System.out.println("messages and media. But be advised that just restarting me is not going to change");
|
||||||
|
System.out.println("the fact that Telegram won't talk to me until then.");
|
||||||
|
try { Thread.sleep((delay + 60) * 1000); } catch(InterruptedException e2) {}
|
||||||
|
} else {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (!completed);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void _downloadMessages(Integer limit) throws RpcErrorException, IOException {
|
||||||
System.out.println("Downloading most recent dialog... ");
|
System.out.println("Downloading most recent dialog... ");
|
||||||
int max_message_id = client.messagesGetDialogs(
|
int max_message_id = client.messagesGetDialogs(
|
||||||
0,
|
0,
|
||||||
@ -71,7 +98,6 @@ class DownloadManager {
|
|||||||
ids.addAll(a);
|
ids.addAll(a);
|
||||||
my_end_id = ids.get(ids.size()-1);
|
my_end_id = ids.get(ids.size()-1);
|
||||||
current_start_id = my_end_id + 1;
|
current_start_id = my_end_id + 1;
|
||||||
|
|
||||||
TLAbsMessages response = client.messagesGetMessages(ids);
|
TLAbsMessages response = client.messagesGetMessages(ids);
|
||||||
prog.onMessageDownloaded(response.getMessages().size());
|
prog.onMessageDownloaded(response.getMessages().size());
|
||||||
db.saveMessages(response.getMessages());
|
db.saveMessages(response.getMessages());
|
||||||
@ -112,6 +138,33 @@ class DownloadManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void downloadMedia() throws RpcErrorException, IOException {
|
public void downloadMedia() throws RpcErrorException, IOException {
|
||||||
|
boolean completed = true;
|
||||||
|
do {
|
||||||
|
completed = true;
|
||||||
|
try {
|
||||||
|
_downloadMedia();
|
||||||
|
} catch (RpcErrorException e) {
|
||||||
|
if (e.getTag().startsWith("420: FLOOD_WAIT_")) {
|
||||||
|
completed = false;
|
||||||
|
Config.DELAY_AFTER_GET_FILE = 1500;
|
||||||
|
int delay = Integer.parseInt(e.getTag().substring(16));
|
||||||
|
System.out.println("");
|
||||||
|
System.out.println("Telegram complained about us (okay, me) making too many requests in too short time.");
|
||||||
|
System.out.println("So we now have to wait a bit. Telegram asked us to wait for " + delay + " seconds, which");
|
||||||
|
System.out.println("is about " + ((delay / 60) + 1) + " minutes.");
|
||||||
|
System.out.println("So I'm going to do that now. If you don't want to wait, you can quit by pressing");
|
||||||
|
System.out.println("Ctrl+C. You can restart me at any time and I will just continue to download your");
|
||||||
|
System.out.println("messages and media. But be advised that just restarting me is not going to change");
|
||||||
|
System.out.println("the fact that Telegram won't talk to me until then.");
|
||||||
|
try { Thread.sleep((delay + 60) * 1000); } catch(InterruptedException e2) {}
|
||||||
|
} else {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (!completed);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void _downloadMedia() throws RpcErrorException, IOException {
|
||||||
LinkedList<TLMessage> messages = this.db.getMessagesWithMedia();
|
LinkedList<TLMessage> messages = this.db.getMessagesWithMedia();
|
||||||
prog.onMediaDownloadStart(messages.size());
|
prog.onMediaDownloadStart(messages.size());
|
||||||
for (TLMessage msg : messages) {
|
for (TLMessage msg : messages) {
|
||||||
|
@ -10,8 +10,6 @@ import java.io.FileWriter;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
import org.javatuples.Triplet;
|
|
||||||
|
|
||||||
class HTMLExporter {
|
class HTMLExporter {
|
||||||
public void export(UserManager user) {
|
public void export(UserManager user) {
|
||||||
try {
|
try {
|
||||||
|
Loading…
Reference in New Issue
Block a user