From 83664b8fc056db47d3e0f296d9d1d72a06747823 Mon Sep 17 00:00:00 2001 From: Fabian Schlenz Date: Mon, 4 Jul 2016 10:19:36 +0200 Subject: [PATCH] Better support for empty media types. --- .../CommandLineDownloadProgress.java | 3 ++- .../telegram_backup/DownloadManager.java | 17 +++++++++++++++++ .../DownloadProgressInterface.java | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/fabianonline/telegram_backup/CommandLineDownloadProgress.java b/src/main/java/de/fabianonline/telegram_backup/CommandLineDownloadProgress.java index 757f7d7..4be0d49 100644 --- a/src/main/java/de/fabianonline/telegram_backup/CommandLineDownloadProgress.java +++ b/src/main/java/de/fabianonline/telegram_backup/CommandLineDownloadProgress.java @@ -16,7 +16,7 @@ class CommandLineDownloadProgress implements DownloadProgressInterface { System.out.println("Checking and downloading media."); System.out.println("Legend:"); System.out.println("'V' - Video 'P' - Photo 'D' - Document"); - System.out.println("'S' - Sticker 'A' - Audio"); + System.out.println("'S' - Sticker 'A' - Audio 'e' - Empty file"); System.out.println("'.' - Previously downloaded file"); System.out.println("' ' - Ignored media type (location or website, for example)"); System.out.println("" + count + " Files to check / download"); @@ -28,6 +28,7 @@ class CommandLineDownloadProgress implements DownloadProgressInterface { public void onMediaDownloadedSticker(boolean n) { show(n, 'S'); } public void onMediaDownloadedOther(boolean n) { show(n, ' '); } public void onMediaDownloadedAudio(boolean n) { show(n, 'A'); } + public void onMediaDownloadedEmpty(boolean n) { show(true, 'e'); } public void onMediaDownloadFinished() { showNewLine(); System.out.println("Done."); } private void show(boolean n, char letter) { System.out.print(n ? letter : '.'); i++; if (i % 50 == 0) showNewLine();} diff --git a/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java b/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java index 2e92b7c..6a54a20 100644 --- a/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java +++ b/src/main/java/de/fabianonline/telegram_backup/DownloadManager.java @@ -7,6 +7,7 @@ import de.fabianonline.telegram_backup.DownloadProgressInterface; import com.github.badoualy.telegram.api.TelegramClient; import com.github.badoualy.telegram.tl.core.TLIntVector; +import com.github.badoualy.telegram.tl.core.TLObject; import com.github.badoualy.telegram.tl.api.messages.TLAbsMessages; import com.github.badoualy.telegram.tl.api.messages.TLAbsDialogs; import com.github.badoualy.telegram.tl.api.*; @@ -134,6 +135,8 @@ class DownloadManager { boolean res = this.downloadPhoto(msg.getId(), (TLFileLocation)size.getLocation(), size.getSize()); prog.onMediaDownloadedPhoto(res); } + } else if (p.getPhoto() instanceof TLPhotoEmpty) { + downloadEmptyObject(p.getPhoto()); } else { throw new RuntimeException("Got an unexpected " + p.getPhoto().getClass().getName()); } @@ -180,6 +183,8 @@ class DownloadManager { } else { prog.onMediaDownloadedDocument(res); } + } else if (d.getDocument() instanceof TLDocumentEmpty) { + downloadEmptyObject(d.getDocument()); } else { throw new RuntimeException("Got an unexpected " + d.getDocument().getClass().getName()); } @@ -192,6 +197,10 @@ class DownloadManager { String ext = vid.getMimeType().substring(i+1).toLowerCase(); boolean res = this.downloadVideo(this.makeFilename(msg.getId(), ext), vid); prog.onMediaDownloadedVideo(res); + } else if (v.getVideo() instanceof TLVideoEmpty) { + downloadEmptyObject(v.getVideo()); + } else { + throw new RuntimeException("Got an unexpected " + v.getVideo().getClass().getName()); } } @@ -202,6 +211,10 @@ class DownloadManager { String ext = audio.getMimeType().substring(i+1).toLowerCase(); boolean res = this.downloadAudio(this.makeFilename(msg.getId(), ext), audio); prog.onMediaDownloadedAudio(res); + } else if (a.getAudio() instanceof TLAudioEmpty) { + downloadEmptyObject(a.getAudio()); + } else { + throw new RuntimeException("Got an unexpected " + a.getAudio().getClass().getName()); } } @@ -242,6 +255,10 @@ class DownloadManager { return this.downloadFileFromDc(filename, loc, audio.getDcId(), audio.getSize()); } + private void downloadEmptyObject(TLObject obj) { + prog.onMediaDownloadedEmpty(true); + } + private String makeFilename(int id, String ext) { String path = this.user.getFileBase() + Config.FILE_FILES_BASE + diff --git a/src/main/java/de/fabianonline/telegram_backup/DownloadProgressInterface.java b/src/main/java/de/fabianonline/telegram_backup/DownloadProgressInterface.java index 17746b8..ea979c1 100644 --- a/src/main/java/de/fabianonline/telegram_backup/DownloadProgressInterface.java +++ b/src/main/java/de/fabianonline/telegram_backup/DownloadProgressInterface.java @@ -12,5 +12,6 @@ interface DownloadProgressInterface { public void onMediaDownloadedSticker(boolean n); public void onMediaDownloadedOther(boolean n); public void onMediaDownloadedAudio(boolean n); + public void onMediaDownloadedEmpty(boolean n); public void onMediaDownloadFinished(); }