Austin Huang
5 years ago
No known key found for this signature in database
GPG Key ID: 84C23AA04587A91F
40 changed files with 381 additions and 244 deletions
-
4app/build.gradle
-
47app/src/main/java/awais/instagrabber/MainHelper.java
-
115app/src/main/java/awais/instagrabber/activities/PostViewer.java
-
11app/src/main/java/awais/instagrabber/activities/StoryViewer.java
-
2app/src/main/java/awais/instagrabber/asyncs/DiscoverFetcher.java
-
6app/src/main/java/awais/instagrabber/asyncs/FeedFetcher.java
-
4app/src/main/java/awais/instagrabber/asyncs/PostFetcher.java
-
3app/src/main/java/awais/instagrabber/asyncs/PostsFetcher.java
-
30app/src/main/java/awais/instagrabber/dialogs/AboutDialog.java
-
22app/src/main/java/awais/instagrabber/dialogs/SettingsDialog.java
-
3app/src/main/java/awais/instagrabber/directdownload/MultiDirectDialog.java
-
15app/src/main/java/awais/instagrabber/models/BasePostModel.java
-
4app/src/main/java/awais/instagrabber/models/FeedModel.java
-
18app/src/main/java/awais/instagrabber/models/PostModel.java
-
19app/src/main/java/awais/instagrabber/models/ViewerPostModel.java
-
50app/src/main/java/awais/instagrabber/utils/ChangelogFetcher.java
-
1app/src/main/java/awais/instagrabber/utils/ExportImportUtils.java
-
55app/src/main/java/awais/instagrabber/utils/FlavorTown.java
-
3app/src/main/java/awais/instagrabber/utils/SettingsHelper.java
-
6app/src/main/java/awais/instagrabber/utils/Utils.java
-
35app/src/main/res/layout/activity_viewer.xml
-
25app/src/main/res/layout/dialog_main_about.xml
-
43app/src/main/res/layout/dialog_main_settings.xml
-
2app/src/main/res/layout/item_feed_bottom.xml
-
2app/src/main/res/layout/item_feed_top.xml
-
2app/src/main/res/values-es/strings.xml
-
2app/src/main/res/values-fr/strings.xml
-
2app/src/main/res/values-in/strings.xml
-
2app/src/main/res/values-it/strings.xml
-
2app/src/main/res/values-zh/strings.xml
-
13app/src/main/res/values/color.xml
-
16app/src/main/res/values/strings.xml
-
1fastlane/metadata/android/changelogs/1.txt
-
12fastlane/metadata/android/full_description.txt
-
BINfastlane/metadata/android/images/icon.png
-
BINfastlane/metadata/android/images/phoneScreenshots/1.jpg
-
BINfastlane/metadata/android/images/phoneScreenshots/2.jpg
-
BINfastlane/metadata/android/images/phoneScreenshots/3.jpg
-
1fastlane/metadata/android/short_description.txt
-
1fastlane/metadata/android/title.txt
@ -30,19 +30,24 @@ public final class AboutDialog extends BottomSheetDialogFragment { |
|||||
final LinearLayoutCompat infoContainer = contentView.findViewById(R.id.infoContainer); |
final LinearLayoutCompat infoContainer = contentView.findViewById(R.id.infoContainer); |
||||
|
|
||||
final View btnTelegram = infoContainer.getChildAt(1); |
final View btnTelegram = infoContainer.getChildAt(1); |
||||
final View btnProject = infoContainer.getChildAt(2); |
|
||||
|
final View btnMatrix = infoContainer.getChildAt(2); |
||||
|
final View btnProject = infoContainer.getChildAt(3); |
||||
final View.OnClickListener onClickListener = v -> { |
final View.OnClickListener onClickListener = v -> { |
||||
final Intent intent = new Intent(Intent.ACTION_VIEW); |
final Intent intent = new Intent(Intent.ACTION_VIEW); |
||||
if (v == btnTelegram) { |
if (v == btnTelegram) { |
||||
intent.setData(Uri.parse("https://t.me/grabber_app")); |
intent.setData(Uri.parse("https://t.me/grabber_app")); |
||||
if (!Utils.isEmpty(Utils.telegramPackage)) |
if (!Utils.isEmpty(Utils.telegramPackage)) |
||||
intent.setPackage(Utils.telegramPackage); |
intent.setPackage(Utils.telegramPackage); |
||||
|
} |
||||
|
else if (v == btnMatrix) { |
||||
|
intent.setData(Uri.parse("https://matrix.to/#/#instagrabber:matrix.org")); |
||||
} else |
} else |
||||
intent.setData(Uri.parse("https://github.com/austinhuang0131/instagrabber/")); |
intent.setData(Uri.parse("https://github.com/austinhuang0131/instagrabber/")); |
||||
startActivity(intent); |
startActivity(intent); |
||||
}; |
}; |
||||
btnProject.setOnClickListener(onClickListener); |
btnProject.setOnClickListener(onClickListener); |
||||
btnTelegram.setOnClickListener(onClickListener); |
btnTelegram.setOnClickListener(onClickListener); |
||||
|
btnMatrix.setOnClickListener(onClickListener); |
||||
|
|
||||
final String description = getString(R.string.description); |
final String description = getString(R.string.description); |
||||
if (!Utils.isEmpty(description)) { |
if (!Utils.isEmpty(description)) { |
||||
@ -60,32 +65,15 @@ public final class AboutDialog extends BottomSheetDialogFragment { |
|||||
c = descriptionText.charAt(i); |
c = descriptionText.charAt(i); |
||||
if (c == ']') { |
if (c == ']') { |
||||
descriptionText.delete(i, i + 1); |
descriptionText.delete(i, i + 1); |
||||
descriptionText.setSpan(new RelativeSizeSpan(0.5f), smallTextStart, i, 0); |
|
||||
|
descriptionText.setSpan(new RelativeSizeSpan(0.6f), smallTextStart, i, 0); |
||||
} |
} |
||||
++i; |
++i; |
||||
} while (c != ']' || i == descriptionText.length() - 1); |
} while (c != ']' || i == descriptionText.length() - 1); |
||||
} else if (c == '{') { |
|
||||
final int smallerTextStart = i; |
|
||||
descriptionText.delete(i, i + 1); |
|
||||
i = smallerTextStart; |
|
||||
|
|
||||
do { |
|
||||
c = descriptionText.charAt(i); |
|
||||
if (c == '}') { |
|
||||
descriptionText.delete(i, i + 1); |
|
||||
descriptionText.setSpan(new RelativeSizeSpan(0.35f), smallerTextStart, i, 0); |
|
||||
} |
|
||||
++i; |
|
||||
lastIndex = i; |
|
||||
} while (c != '}' || i == descriptionText.length() - 1); |
|
||||
} |
} |
||||
} |
} |
||||
|
|
||||
lastIndex = Utils.indexOfChar(descriptionText, '@', lastIndex); |
|
||||
descriptionText.setSpan(new URLSpan("https://t.me/awais404"), lastIndex, lastIndex + 9, 0); |
|
||||
|
|
||||
lastIndex = Utils.indexOfChar(descriptionText, ':', lastIndex + 9) + 2; |
|
||||
descriptionText.setSpan(new URLSpan("mailto:[email protected]"), lastIndex, lastIndex + 24, 0); |
|
||||
|
lastIndex = Utils.indexOfChar(descriptionText, '@', lastIndex) - 12; |
||||
|
descriptionText.setSpan(new URLSpan("mailto:[email protected]"), lastIndex, lastIndex + 27, 0); |
||||
|
|
||||
final TextView textView = (TextView) infoContainer.getChildAt(0); |
final TextView textView = (TextView) infoContainer.getChildAt(0); |
||||
textView.setMovementMethod(new LinkMovementMethod()); |
textView.setMovementMethod(new LinkMovementMethod()); |
||||
|
@ -1,50 +0,0 @@ |
|||||
package awais.instagrabber.utils; |
|
||||
|
|
||||
import android.os.AsyncTask; |
|
||||
import android.util.Log; |
|
||||
|
|
||||
import java.net.HttpURLConnection; |
|
||||
import java.net.URL; |
|
||||
|
|
||||
import awais.instagrabber.BuildConfig; |
|
||||
import awais.instagrabber.interfaces.FetchListener; |
|
||||
|
|
||||
public final class ChangelogFetcher extends AsyncTask<Void, Void, String> { |
|
||||
private final FetchListener<CharSequence> fetchListener; |
|
||||
|
|
||||
public ChangelogFetcher(final FetchListener<CharSequence> fetchListener) { |
|
||||
this.fetchListener = fetchListener; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected String doInBackground(final Void... voids) { |
|
||||
String result = null; |
|
||||
final String changelogUrl = "https://gitlab.com/AwaisKing/instagrabber/-/raw/master/CHANGELOG"; |
|
||||
|
|
||||
try { |
|
||||
final HttpURLConnection conn = (HttpURLConnection) new URL(changelogUrl).openConnection(); |
|
||||
conn.setUseCaches(false); |
|
||||
conn.connect(); |
|
||||
|
|
||||
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { |
|
||||
result = Utils.readFromConnection(conn); |
|
||||
} |
|
||||
|
|
||||
conn.disconnect(); |
|
||||
} catch (final Exception e) { |
|
||||
if (BuildConfig.DEBUG) Log.e("AWAISKING_APP", "", e); |
|
||||
} |
|
||||
|
|
||||
return result; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected void onPreExecute() { |
|
||||
if (fetchListener != null) fetchListener.doBefore(); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected void onPostExecute(final String result) { |
|
||||
if (fetchListener != null) fetchListener.onResult(result); |
|
||||
} |
|
||||
} |
|
@ -1,8 +1,6 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
<resources> |
||||
|
|
||||
<string name="description">Esto comenzó como una pequeña y básica aplicación personal con intenciones de [copia-]descargar publicaciones de Instagram.\nAparentemente tengo un temperamento rápido y soy bastante impaciente a veces… \{frecuentemente… la mayoría del tiempo… ¡OK! todo el tiempo!} Y gracias a Dios casi todos los descargadores de Instagram tienen al menos un proveedor de anuncios, así que decidí hacer mi propio descargador.\nEntonces aquí está, la pequeña y estúpida aplicación para hacer que eso suceda.\n\nDe todas formas, si tienes \{como si tu mamá te hiciera} una pregunta, sugerencia, corrección de errores o cualquier otra pregunta, hmu en un Telegram o correo electrónico\nTelegram: @awais404\nCorreo electrónico: [email protected] (sí, 50.000 capítulos! 😎🤘)</string> |
|
||||
|
|
||||
<string name="action_quickaccess">Acceso rápido</string> |
<string name="action_quickaccess">Acceso rápido</string> |
||||
<string name="action_about">Sobre</string> |
<string name="action_about">Sobre</string> |
||||
<string name="action_dms">Mensajes Directos</string> |
<string name="action_dms">Mensajes Directos</string> |
||||
|
@ -1,8 +1,6 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
<resources> |
||||
|
|
||||
<string name="description">Ça a commencé comme une petite application personnelle de base avec l\'intention de télécharger (voler) des posts sur Instagram.\nApparemment, j\'ai un tempérament nerveux et je suis parfois assez impatient\{… généralement… la plupart du temps… OK ! tout le temps ! }et Dieu merci, presque tous les téléchargeurs d\'insta ont au moins un fournisseur de publicité, j\'ai donc décidé de créer le mien.\nAlors voilà ma petite application assez stupide.\n\nQuoi qu\'il en soit, si vous avez\{ ou ta mère }une question, suggestion, rapport ou correction de bogues, ou n\'importe quelle autre question, contactez-moi par Telegram ou par mail.\nTelegram: @awais404\nEmail: [email protected] (ouais 50000 chapitres ! 😎🤘)</string> |
|
||||
|
|
||||
<string name="action_quickaccess">Accès rapide</string> |
<string name="action_quickaccess">Accès rapide</string> |
||||
<string name="action_about">À propos</string> |
<string name="action_about">À propos</string> |
||||
<string name="action_dms">Messages privés</string> |
<string name="action_dms">Messages privés</string> |
||||
|
@ -1,7 +1,5 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
<resources> |
||||
<string name="app_name" translatable="false">InstaGrabber</string> |
|
||||
<string name="description"> Aplikasi ini diawali sebagai aplikasi personal yang kecil dan sederhana dengan niat [mencu-]mengunduh kiriman dari Instagram. \nTernyata aku cepat marah dan terkadang gak sabaran\{… biasanya sih… sering gitu… OK! Hampir setiap saat! }dan syukurnya (/s) hampir setiap pengunduh Instagram punya paling nggak satu penyedia iklan, jadi aku memutuskan untuk membuatnya sendiri.\nDan, inilah hasilnya, suatu aplikasi sejadi-jadinya untuk mewujudkan hal itu.\n\nBagaimanapun, kalau kamu\{ atau ibumu }punya pertanyaan, saran, perbaikan bug/masalah, laporan, atau lainnya, kirim pesan via telegram atau surel.\nTelegram: @awais404\nSurel: [email protected] (iya 50.000 chapters! 😎🤘)</string> |
|
||||
|
|
||||
<string name="action_quickaccess">Akses Cepat</string> |
<string name="action_quickaccess">Akses Cepat</string> |
||||
<string name="action_about">Tentang</string> |
<string name="action_about">Tentang</string> |
||||
|
@ -1,8 +1,6 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
<resources> |
||||
|
|
||||
<string name="description">Questo è iniziato come una piccola app personale con le intenzioni di [rub-] scaricare post da Instagram. \nApparentemente ho un temperamento rapido e sono\ piuttosto impaziente a volte\{… di solito… il più delle volte… OK! tutto il tempo! } e grazie a Dio /s a quasi tutti i downloader di insta hanno almeno un fornitore di annunci, quindi ho deciso di creare il mio downloader.\nCosì, ecco la stupida piccola app per farlo accadere. \n\nIn ogni caso, se hai \{o la tua mamma ha} una domanda, un suggerimento, una correzione/segnalazione di bug o qualsiasi altra domanda, contattami su telegram o e-mail.\nTelegram: @ awais404\nEmail: [email protected] (yeah 50,000 chapters! 😎🤘)</string> |
|
||||
|
|
||||
<string name="action_quickaccess">Accesso rapido</string> |
<string name="action_quickaccess">Accesso rapido</string> |
||||
<string name="action_about">Riguardo</string> |
<string name="action_about">Riguardo</string> |
||||
<string name="action_dms">Direct Messaggi</string> |
<string name="action_dms">Direct Messaggi</string> |
||||
|
@ -1,8 +1,6 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
<resources> |
||||
|
|
||||
<string name="description">这是从带着以[偷-]下载 Instagram 帖子为目的而开始的小而简的个人应用程式。\n显然地我脾气不好,有时也不怎么有耐性\{…通常… 大多数的时间… OK!所有时候! }然后感谢老天 (讽) 几乎所有下载器都有至少一个广告商, 所以我决定做一个自己的下载器。\n于是乎,这个愚蠢的小应用让一切变得可能。\n\n无论如何,若你\{ 或你老妈 }有任何问题、建议、bug 修复/报告或任何疑问,请在telegram或电邮敲我。\nTelegram: @awais404\nEmail: [email protected] (没错50,000章! 😎🤘)</string> |
|
||||
|
|
||||
<string name="action_quickaccess">快捷道</string> |
<string name="action_quickaccess">快捷道</string> |
||||
<string name="action_about">关于</string> |
<string name="action_about">关于</string> |
||||
<string name="action_dms">Direct消息</string> |
<string name="action_dms">Direct消息</string> |
||||
|
@ -1,7 +1,7 @@ |
|||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
<resources> |
||||
<string name="app_name" translatable="false">InstaGrabber</string> |
<string name="app_name" translatable="false">InstaGrabber</string> |
||||
<string name="description">This started off as a small and basic little personal app with intentions of [steali-]downloading posts off Instagram.\nApparently i have a quick temper and I\'m pretty impatient sometimes\{… usually… most of the time… OK! all the time! }and thank God /s almost every insta downloader has at least one ad provider, so i decided to make my own downloader.\nSo here it is, the stupid little app to make that happen.\n\nAnyhow, if you have\{ or ur mom has }a question, suggestion, bug fix/report or any other query, hmu on telegram or email.\nTelegram: @awais404\nEmail: [email protected] (yeah 50,000 chapters! 😎🤘)</string> |
|
||||
|
<string name="description">The original maintainer, AWAiS, made InstaGrabber as a small and basic little personal app with intentions of [steali-]downloading posts off Instagram. Very unfortunately, this was abandoned and me, Austin Huang, took over the ship. [Let\'s hope that\'s at least a lil\' bit cash money.] After all, this app is fully open source, ad-less, and tracking-less [aside from what Instagram knows]. Even if you don\'t care about downloading stuff [like me], it\'s still a great Instagram client to use!\n\nGot questions [or just wanna talk]? Contact [email protected] or click one of the buttons below.</string> |
||||
|
|
||||
<string name="action_quickaccess">Quick Access</string> |
<string name="action_quickaccess">Quick Access</string> |
||||
<string name="action_about">About</string> |
<string name="action_about">About</string> |
||||
@ -64,6 +64,7 @@ |
|||||
<string name="post_viewer_download_album">Whole Album</string> |
<string name="post_viewer_download_album">Whole Album</string> |
||||
|
|
||||
<string name="show_stories">Show stories</string> |
<string name="show_stories">Show stories</string> |
||||
|
<string name="no_more_stories">No more stories!</string> |
||||
<string name="view_story_post">View Story Post</string> |
<string name="view_story_post">View Story Post</string> |
||||
<string name="priv_acc">This Account is Private</string> |
<string name="priv_acc">This Account is Private</string> |
||||
|
|
||||
@ -71,10 +72,18 @@ |
|||||
<string name="read_more">read more…</string> |
<string name="read_more">read more…</string> |
||||
|
|
||||
<string name="login">Login</string> |
<string name="login">Login</string> |
||||
<string name="send_logs">Send Logs [if something\'s not working]</string> |
|
||||
|
<string name="logout">Logout</string> |
||||
|
<string name="send_logs">Send Debug Logs</string> |
||||
<string name="time_settings">Post Time Settings</string> |
<string name="time_settings">Post Time Settings</string> |
||||
<string name="project_link">Visit Project Page</string> |
<string name="project_link">Visit Project Page</string> |
||||
<string name="telegram_link">Join Telegram Group</string> |
<string name="telegram_link">Join Telegram Group</string> |
||||
|
<string name="matrix_link">Join Matrix Room</string> |
||||
|
|
||||
|
<string name="like">Like</string> |
||||
|
<string name="unlike">Unlike</string> |
||||
|
<string name="bookmark">Bookmark</string> |
||||
|
<string name="unbookmark">Unbookmark</string> |
||||
|
|
||||
|
|
||||
<string name="dialog_export_btn_export">Export</string> |
<string name="dialog_export_btn_export">Export</string> |
||||
<string name="dialog_export_btn_import">Import</string> |
<string name="dialog_export_btn_import">Import</string> |
||||
@ -92,7 +101,7 @@ |
|||||
|
|
||||
<string name="refresh">Refresh</string> |
<string name="refresh">Refresh</string> |
||||
<string name="get_cookies">Get cookies</string> |
<string name="get_cookies">Get cookies</string> |
||||
<string name="desktop_2fa">Desktop Mode\nfor 2FA</string> |
|
||||
|
<string name="desktop_2fa">Desktop Mode</string> |
||||
|
|
||||
<string name="time_settings_title_custom">Custom Format</string> |
<string name="time_settings_title_custom">Custom Format</string> |
||||
<string name="time_settings_title_separator">Separator</string> |
<string name="time_settings_title_separator">Separator</string> |
||||
@ -166,6 +175,7 @@ |
|||||
<string name="login_success_loading_cookies">Successfully loaded cookies!\nIf you still can\'t open private pages/posts, re-login!</string> |
<string name="login_success_loading_cookies">Successfully loaded cookies!\nIf you still can\'t open private pages/posts, re-login!</string> |
||||
|
|
||||
<string name="update_available">An update is available…\nPress Download to open browser.</string> |
<string name="update_available">An update is available…\nPress Download to open browser.</string> |
||||
|
<string name="updated">Thank you for updating InstaGrabber!</string> |
||||
<string name="crash_title">App crashed</string> |
<string name="crash_title">App crashed</string> |
||||
<string name="crash_descr">Oops.. the app crashed, but don\'t worry you can send error report to the developer to help him fix the issue. (:</string> |
<string name="crash_descr">Oops.. the app crashed, but don\'t worry you can send error report to the developer to help him fix the issue. (:</string> |
||||
</resources> |
</resources> |
@ -0,0 +1 @@ |
|||||
|
Please read https://github.com/austinhuang0131/instagrabber/releases for info. |
@ -0,0 +1,12 @@ |
|||||
|
InstaGrabber is an app that allows... |
||||
|
|
||||
|
* Viewing **and downloading** Instagram posts, stories (including highlights)\*, DM\*, and profile pictures, **without** letting people know you viewed it! Works for followed private accounts\*! |
||||
|
* Like/bookmark posts\*! |
||||
|
* Downloading multiple posts at once (hold & select)! |
||||
|
* **Copy** post captions, comments, DM messages\*, and profile bios. |
||||
|
* **Compare** follower/following list! |
||||
|
* Searching usernames and hashtags. |
||||
|
|
||||
|
<sub>* Requires [login](https://github.com/austinhuang0131/instagrabber/blob/master/README.md#how-to-log-in). You must be a current follower of the desired private accounts, this app cannot hack people (which I have to state despite the obvious)!</sub> |
||||
|
|
||||
|
It can be used as a drop-in replacement for read functionalities of the official Instagram app, with unnecessary components stripped. |
After Width: 192 | Height: 192 | Size: 30 KiB |
After Width: 720 | Height: 1280 | Size: 155 KiB |
After Width: 720 | Height: 1280 | Size: 133 KiB |
After Width: 720 | Height: 1280 | Size: 83 KiB |
@ -0,0 +1 @@ |
|||||
|
A simple yet advanced viewer/downloader app for Instagram (+login support). |
@ -0,0 +1 @@ |
|||||
|
InstaGrabber Revived |
Write
Preview
Loading…
Cancel
Save
Reference in new issue