mirror of
https://github.com/fabianonline/telegram_backup.git
synced 2024-12-25 14:25:35 +00:00
Added support for downloading Geolocation maps.
This commit is contained in:
parent
c8e33fa319
commit
bad165e97b
@ -16,8 +16,8 @@ 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 'e' - Empty file");
|
||||
System.out.println("'.' - Previously downloaded file");
|
||||
System.out.println("'S' - Sticker 'A' - Audio 'G' - Geolocation");
|
||||
System.out.println("'.' - Previously downloaded file 'e' - Empty 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 onMediaDownloadedGeo(boolean n) { show(n, 'G'); }
|
||||
public void onMediaDownloadedEmpty(boolean n) { show(true, 'e'); }
|
||||
public void onMediaDownloadFinished() { showNewLine(); System.out.println("Done."); }
|
||||
|
||||
|
@ -21,5 +21,7 @@ class Config {
|
||||
|
||||
public static final int DELAY_AFTER_GET_MESSAGES = 200;
|
||||
public static final int DELAY_AFTER_GET_FILE = 200;
|
||||
|
||||
public static final String SECRET_GMAPS = "AIzaSyBEtUDhCQKEH6i2Mn1GAiQ9M_tLN0vxHIs";
|
||||
}
|
||||
|
||||
|
@ -125,9 +125,10 @@ class DownloadManager {
|
||||
this.downloadMessageMediaVideo(msg, (TLMessageMediaVideo)media);
|
||||
} else if (media instanceof TLMessageMediaAudio) {
|
||||
this.downloadMessageMediaAudio(msg, (TLMessageMediaAudio)media);
|
||||
} else if (media instanceof TLMessageMediaGeo) {
|
||||
this.downloadMessageMediaGeo(msg, (TLMessageMediaGeo)media);
|
||||
} else if (media instanceof TLMessageMediaEmpty ||
|
||||
media instanceof TLMessageMediaUnsupported ||
|
||||
media instanceof TLMessageMediaGeo ||
|
||||
media instanceof TLMessageMediaWebPage ||
|
||||
media instanceof TLMessageMediaContact ||
|
||||
media instanceof TLMessageMediaVenue) {
|
||||
@ -242,6 +243,20 @@ class DownloadManager {
|
||||
}
|
||||
}
|
||||
|
||||
private void downloadMessageMediaGeo(TLMessage msg, TLMessageMediaGeo g) throws IOException {
|
||||
if (g.getGeo() instanceof TLGeoPoint) {
|
||||
TLGeoPoint geo = (TLGeoPoint)g.getGeo();
|
||||
String url = "https://maps.googleapis.com/maps/api/staticmap?center=" +
|
||||
geo.getLat() + "," + geo.getLong() + "&zoom=14&size=300x150&scale=2&format=png&key=" + Config.SECRET_GMAPS;
|
||||
boolean res = downloadExternalFile(this.makeFilename(msg.getId(), "png"), url);
|
||||
prog.onMediaDownloadedGeo(res);
|
||||
} else if (g.getGeo() instanceof TLGeoPointEmpty) {
|
||||
downloadEmptyObject(g.getGeo());
|
||||
} else {
|
||||
throw new RuntimeException("Got an unexpected " + g.getGeo().getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
private ArrayList<Integer> makeIdList(int start, int end) {
|
||||
if (start > end) throw new RuntimeException("start and end reversed");
|
||||
ArrayList<Integer> a = new ArrayList<Integer>(end - start + 1);
|
||||
@ -335,4 +350,10 @@ class DownloadManager {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean downloadExternalFile(String target, String url) throws IOException {
|
||||
if (new File(target).isFile()) return false;
|
||||
FileUtils.copyURLToFile(new URL(url), new File(target), 5000, 5000);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ interface DownloadProgressInterface {
|
||||
public void onMediaDownloadedSticker(boolean n);
|
||||
public void onMediaDownloadedOther(boolean n);
|
||||
public void onMediaDownloadedAudio(boolean n);
|
||||
public void onMediaDownloadedGeo(boolean n);
|
||||
public void onMediaDownloadedEmpty(boolean n);
|
||||
public void onMediaDownloadFinished();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user