From e63e00b62254d10a30b6c6635dfca34fa1a754d9 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Mon, 24 Aug 2020 21:23:30 -0400 Subject: [PATCH 01/29] Rename CODE_OF_CONDUCT.md to .github/CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md => .github/CODE_OF_CONDUCT.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CODE_OF_CONDUCT.md => .github/CODE_OF_CONDUCT.md (100%) diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md From c7ba45c70e59794c03424acc2e968f3a8c1dd368 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 00:37:30 -0400 Subject: [PATCH 02/29] Delete .bettercodehub.yml --- .bettercodehub.yml | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .bettercodehub.yml diff --git a/.bettercodehub.yml b/.bettercodehub.yml deleted file mode 100644 index 745eb11f..00000000 --- a/.bettercodehub.yml +++ /dev/null @@ -1,3 +0,0 @@ -component_depth: 7 -languages: -- java From 86a90aff5c52f3b84396c37e506e56eeebc4189c Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 12:15:12 -0400 Subject: [PATCH 03/29] fix android 6 cookie problem --- app/src/main/java/awais/instagrabber/utils/Utils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/utils/Utils.java b/app/src/main/java/awais/instagrabber/utils/Utils.java index 819c8a1d..b7f9a525 100755 --- a/app/src/main/java/awais/instagrabber/utils/Utils.java +++ b/app/src/main/java/awais/instagrabber/utils/Utils.java @@ -142,10 +142,10 @@ public final class Utils { final URI uri1 = new URI("https://instagram.com"); final URI uri2 = new URI("https://instagram.com/"); final URI uri3 = new URI("https://i.instagram.com/"); - for (final String cookie : cookieRaw.split(";")) { + for (final String cookie : cookieRaw.split("; ")) { final String[] strings = cookie.split("=", 2); final HttpCookie httpCookie = new HttpCookie(strings[0].trim(), strings[1].trim()); - httpCookie.setDomain("instagram.com"); + httpCookie.setDomain(".instagram.com"); httpCookie.setPath("/"); httpCookie.setVersion(0); cookieStore.add(uri1, httpCookie); From 684e4753fef865275c32236c5fa6c4f8fdec7119 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 15:34:25 -0400 Subject: [PATCH 04/29] Create CONTRIBUTING.md --- .github/CONTRIBUTING.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/CONTRIBUTING.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..92b977a0 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,32 @@ +## WARNING + +* All forks must respect [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html). Please report violations in Issues or [through email](mailto:im@austinhuang.me). +* Although publishing a fork is allowed by license, it is strongly discouraged to do so as it divides the effort and creates confusion. It is, therefore, recommended to send a pull request back to us, so that the larger community can enjoy your improvement. (This does not apply if you're adapting this app for a different platform other than Instagram.) + +## Contributing + +Thank you for your interest in InstaGrabber! As we grow in popularity, it becomes apparent that we are short on hands. Every contribution counts! + +### I can code Java! + +Great! + +Generally, we want to imitate features in the actual Instagram app. There are many Instagram private API repositories on GitHub for you to refer to. Note that you should minimize POST: If a job should be done with GET, then there has to be a GET endpoint. (Indeed, sometimes you need multiple repositories for reference.) + +As long as you have tested your version (please indicate device and API version) and make sure it works, then you can submit a PR! Large UI changes have to be voted on by the community, so it would be helpful to upload some screenshots. + +Check errors are for reference only. Try to minimize them, but usually they don't make a big difference. + +### I can't code Java, but I want to! + +Fun fact: Austin took over this project and learned Java on the fly (I'm not joking, I only do JavaScript before taking this over). + +Even though Java is quite annoying, it is still possible to learn it by trying to understand what these code do (Easier if you have coding experience in other languages). + +If you have questions, don't be afraid t ask for help! + +### I found a bug! + +Bugs are inevitable during active development, as nobody can cover all the possible test cases. You can either email your crash dump to `instagrabber@austinhuang.me` (The crash reporter will fill in this email for you) or create a GitHub issue. + +If you're on GitHub, please follow the template. From 2aa2e419d5ff6d503f12517502a0e29d3ca61ec5 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 15:53:55 -0400 Subject: [PATCH 05/29] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 92b977a0..e54071aa 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,11 +1,15 @@ ## WARNING -* All forks must respect [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html). Please report violations in Issues or [through email](mailto:im@austinhuang.me). +* All forks must respect [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html). Please report violations in Issues or [confidentially](https://austinhuang.me/#hey-you-look-cool). * Although publishing a fork is allowed by license, it is strongly discouraged to do so as it divides the effort and creates confusion. It is, therefore, recommended to send a pull request back to us, so that the larger community can enjoy your improvement. (This does not apply if you're adapting this app for a different platform other than Instagram.) ## Contributing -Thank you for your interest in InstaGrabber! As we grow in popularity, it becomes apparent that we are short on hands. Every contribution counts! +Thank you for your interest in InstaGrabber! + +Our vision of InstaGrabber is an open source true alternative of the official Instagram app. It is Austin's pursuit of a libre life that lead him to this app during its abandonment, and it was one unresolved bug that made him have the enthusiasm in implementing numerous features for this app, despite having 0 knowledge of Java beforehand. + +As we grow in popularity, it becomes apparent that we are short on hands. Every contribution counts! ### I can code Java! @@ -17,16 +21,32 @@ As long as you have tested your version (please indicate device and API version) Check errors are for reference only. Try to minimize them, but usually they don't make a big difference. +**NEVER touch the l10n-master branch.** It's automatically managed by Crowdin. + ### I can't code Java, but I want to! Fun fact: Austin took over this project and learned Java on the fly (I'm not joking, I only do JavaScript before taking this over). Even though Java is quite annoying, it is still possible to learn it by trying to understand what these code do (Easier if you have coding experience in other languages). -If you have questions, don't be afraid t ask for help! +If you have questions, don't be afraid to ask for help from any current maintainer! ### I found a bug! -Bugs are inevitable during active development, as nobody can cover all the possible test cases. You can either email your crash dump to `instagrabber@austinhuang.me` (The crash reporter will fill in this email for you) or create a GitHub issue. +Bugs are inevitable during active development, as nobody can cover all the possible test cases. You can either email your crash dump to `instagrabber@austinhuang.me` (The crash reporter will fill in this address for you) or create a GitHub issue. If you're on GitHub, please follow the template. + +If you're reporting by email, your email address will be published in the GitHub issue. You can contact me [privately](https://austinhuang.me/#hey-you-look-cool) or [through support channels](https://instagrabber.austinhuang.me/#what-can-i-do) to remove it. + +Generally, reporting bugs directly in support channels is not recommended, as they can be difficult to find. + +### I want to help the project in some other way! + +You can... + +* translate it [![badge](https://badges.crowdin.net/instagrabber/localized.svg)](https://crowdin.com/project/instagrabber) +* promote it (reddit [r/AndroidApps](https://www.reddit.com/r/androidapps/comments/i30tpp/instagrabber_an_open_source_instagram_client/), YouTube [HowToMen](https://www.youtube.com/watch?v=1Um2ZJG_mB4), [Ekşi Sâzlük](https://eksisozluk.com/instagrabber--6643143)) +* star it [![stars](https://img.shields.io/github/stars/austinhuang0131/instagrabber.svg?style=social&label=Star)](https://github.com/austinhuang0131/instagrabber/stargazers) + +Happy contributing! From 42f9eea8d09945e6087cb3bd71bf452291b1ff96 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 16:07:59 -0400 Subject: [PATCH 06/29] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index feea5061..5080a175 100755 --- a/README.md +++ b/README.md @@ -12,9 +12,11 @@ ### Download - +Download from [GitHub releases](https://github.com/austinhuang0131/instagrabber/releases/latest) (recommended). Expand "Assets" and download the APK file. Or... -Or you can download from [GitHub releases](https://github.com/austinhuang0131/instagrabber/releases/latest). Expand "Assets" and download the APK file. + + +(...[but they're *very* slow.](https://instagrabber.austinhuang.me/faq#f-droid)) Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.instagrabber.svg) vs. ![GitHub](https://img.shields.io/github/release/austinhuang0131/instagrabber.svg?logo=github) From 957cbff554885e188beb3841a1d1b52f2943d292 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 16:21:12 -0400 Subject: [PATCH 07/29] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5080a175..1f2a129b 100755 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ ### Download +**By installing, you indicate your acceptance of [Disclosure and Privacy Policy](https://instagrabber.austinhuang.me/disclosure).** + Download from [GitHub releases](https://github.com/austinhuang0131/instagrabber/releases/latest) (recommended). Expand "Assets" and download the APK file. Or... From c7182aabd100f1f3a568048800650f56a9487e41 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 17:30:47 -0400 Subject: [PATCH 08/29] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index e54071aa..5ebf3817 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -11,7 +11,7 @@ Our vision of InstaGrabber is an open source true alternative of the official In As we grow in popularity, it becomes apparent that we are short on hands. Every contribution counts! -### I can code Java! +## I want to help coding it! Great! @@ -31,17 +31,17 @@ Even though Java is quite annoying, it is still possible to learn it by trying t If you have questions, don't be afraid to ask for help from any current maintainer! -### I found a bug! +## I found a bug! -Bugs are inevitable during active development, as nobody can cover all the possible test cases. You can either email your crash dump to `instagrabber@austinhuang.me` (The crash reporter will fill in this address for you) or create a GitHub issue. +**Please read [FAQ](https://instagrabber.austinhuang.me/faq) first.** -If you're on GitHub, please follow the template. +Bugs are inevitable during active development, as nobody can cover all the possible test cases. -If you're reporting by email, your email address will be published in the GitHub issue. You can contact me [privately](https://austinhuang.me/#hey-you-look-cool) or [through support channels](https://instagrabber.austinhuang.me/#what-can-i-do) to remove it. +You can either email your crash dump to `instagrabber@austinhuang.me` (The crash reporter will fill in this address for you) or create a GitHub issue. If you're on GitHub, please follow the template. If you're reporting by email, your email address will be published in the GitHub issue. You can contact me [privately](https://austinhuang.me/#hey-you-look-cool) or [through support channels](https://instagrabber.austinhuang.me/#what-can-i-do) to remove it. Generally, reporting bugs directly in support channels is not recommended, as they can be difficult to find. -### I want to help the project in some other way! +### I want to help... in some other way. You can... From 2a2a9d81f19356ec8dc93f85ce0c094d807c22c7 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 17:35:45 -0400 Subject: [PATCH 09/29] Update feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index f0048e94..ce2afe9c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -8,9 +8,9 @@ assignees: '' --- **Is your feature request related to a problem? Please describe.** @@ -19,8 +19,5 @@ A clear and concise description of what the problem is. Ex. I'm always frustrate **Describe the solution you'd like** A clear and concise description of what you want to happen. -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - **Additional context** Add any other context or screenshots about the feature request here. From 5839bd07803be2ceb1439fcc707a34ded13d0b38 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 Aug 2020 17:37:32 -0400 Subject: [PATCH 10/29] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index b95b7b18..2c933b53 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -4,31 +4,27 @@ about: App crashing? You seeing a confusing error message? Report them here! title: "[BUG]" labels: bug assignees: '' - --- + + - [ ] My app is on the latest version. I understand that any other version is not supported. +- [ ] I have read [the FAQ](https://instagrabber.austinhuang.me/faq). ## Steps -### Expected Behaviour - -## Screenshots - - - ## Environment - Device: From f94505f667aa231566a8cf9ed3e34a0928f7687f Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Wed, 26 Aug 2020 16:06:57 -0400 Subject: [PATCH 11/29] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 5ebf3817..b126cbed 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -23,6 +23,27 @@ Check errors are for reference only. Try to minimize them, but usually they don' **NEVER touch the l10n-master branch.** It's automatically managed by Crowdin. +### Structure + +It is preferred that you read the scripts yourself, as my understanding (and presentation) may be basic. + +* `awais.instagrabber` + * `activities`: Scripts directly binding to each view. Assigns `adapters`. + * `adapters`: Scripts used to present a list of `models` from `asyncs` into `activities`. + * Those inside `viewholder` are for frontend, while others are for backend. + * `asyncs`: Scripts used to communicate with Instagram. Returns `models` which is sent to `adapters`. + * `asyncs.i`: Scripts that fetch data from `i.instagram.com`, except DM. + * `asyncs.direct_messages`: As the name suggests, communication scripts used for DM. + * `customviews`: Custom frontend components for this app. + * `dialogs`: Scripts directly binding to dialogs (i.e. those that are nested in the main view). + * `fragments.directmessages`: Scripts directly binding to each fragment ("small views") within `DirectMessageActivity` in `activities`. + * `interfaces`: Custom backend components for this app. + * `models`: Data structure for Instagram API responses from `asyncs`. + * `utils`: Various tools. + * `MainHelper.java` is basically an extension of `activities.main`. +* `awaisomereport`: Crash reporter. Shouldn not require too much maintenance. +* `thoughtbot.expandableadapter`: These are for the follower comparison view, which allows grouping users. + ### I can't code Java, but I want to! Fun fact: Austin took over this project and learned Java on the fly (I'm not joking, I only do JavaScript before taking this over). From c651e74e0bc60729468e13762ec9cb1b2d167f3a Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 27 Aug 2020 12:29:04 -0400 Subject: [PATCH 12/29] Update README.md --- README.md | 44 +++++++++++--------------------------------- 1 file changed, 11 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 1f2a129b..4a0ca37b 100755 --- a/README.md +++ b/README.md @@ -8,7 +8,14 @@ [![GPLv3 license](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE) [![GitHub stars](https://img.shields.io/github/stars/austinhuang0131/instagrabber.svg?style=social&label=Star)](https://GitHub.com/austinhuang0131/instagrabber/stargazers/) -*As featured on [HowToMen](https://youtu.be/1Um2ZJG_mB4) and [GitHub Trending](https://github.com/ifyour/github-trending-archive/blob/master/archives/2020-08-05.md)* +For documentation, visit [InstaGrabber.AustinHuang.me](https://instagrabber.austinhuang.me) + +Profile +Post +Comments +Story (Highlight shown) +Hashtag +Location ### Download @@ -18,38 +25,10 @@ Download from [GitHub releases](https://github.com/austinhuang0131/instagrabber/ -(...[but they're *very* slow.](https://instagrabber.austinhuang.me/faq#f-droid)) +(...[but they're slow.](https://instagrabber.austinhuang.me/faq#f-droid)) Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.instagrabber.svg) vs. ![GitHub](https://img.shields.io/github/release/austinhuang0131/instagrabber.svg?logo=github) -### Presentation - -InstaGrabber is an alternative Instagram client for Android. You can... - -* **Search**: Profile / Hashtag / Location -* **Profile**: View posts (timeline & face-tagged), copy bio, view stories\* (Highlight & status), follow\*, restrict\*, block\*, compare following/followers\*,3 -* **Hashtag**: View posts (newest only), view stories\*, follow\* -* **Location**: View posts (newest only), view stories\*, open map -* **Post**: View, download (+ batch download selected posts), copy captions, like/save\* -* **Story**: View (with [storiesig](https://storiesig.com) support1 and incognito mode2), download, interact with stickers\*, reply as DM\* -* **Comment**: View (+ copy), write\*, reply\*, like\*, delete\* -* **DM\***: View, download attachments, text reply -* Viewing\* your own feed, discover, saved, and liked posts -* Adding personal bookmarks to accounts/hashtags/locations locally - -We support private accounts!\* - -It can be used as a drop-in replacement for read (and some write) functionalities of the official Instagram app, with unnecessary components stripped. - -* Requires [login](#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)! - -Profile -Post -Comments -Story (Highlight shown) -Hashtag -Location - ### Contact us * Use [GitHub issues](https://github.com/austinhuang0131/instagrabber/issues) when possible. @@ -83,9 +62,8 @@ This app is originally made by [@AwaisKing](https://github.com/AwaisKing) on [Gi [![Snyk Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/austinhuang0131/instagrabber)](https://snyk.io/test/github/austinhuang0131/instagrabber) [![LGTM Alerts](https://img.shields.io/lgtm/alerts/github/austinhuang0131/instagrabber)](https://lgtm.com/projects/g/austinhuang0131/instagrabber) [![LGTM Grade](https://img.shields.io/lgtm/grade/java/github/austinhuang0131/instagrabber)](https://lgtm.com/projects/g/austinhuang0131/instagrabber) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f87cac1fbf674888b00bd91bc5eccce0)](https://app.codacy.com/manual/austinhuang0131/instagrabber) +[![CodeFactor](https://www.codefactor.io/repository/github/austinhuang0131/instagrabber/badge)](https://www.codefactor.io/repository/github/austinhuang0131/instagrabber) +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/e9cfcb7733f8477d92e5c0f30cac137a)](https://www.codacy.com/manual/austinhuang0131/instagrabber) [![Crowdin](https://badges.crowdin.net/instagrabber/localized.svg)](https://crowdin.com/project/instagrabber) [![forthebadge](https://forthebadge.com/images/badges/made-with-java.svg)](https://forthebadge.com)[![forthebadge](https://forthebadge.com/images/badges/built-for-android.svg)](https://forthebadge.com) [![gplv3](https://www.gnu.org/graphics/gplv3-with-text-136x68.png)](https://www.gnu.org/licenses/gpl-3.0.html) - -1. For anonymous users only, does not apply to users already logged in, and must be explicitly enabled in Settings. 2. Default enabled, but can be disabled. 3. Shameless plug: If you do not have an Android device but wants to do that, read [this](https://austinhuang.me/instagram-compare). From 339146fe4fbfea2a4130da13421ea52722f3879a Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2020 12:31:43 -0400 Subject: [PATCH 13/29] docs: add austinhuang0131 as a contributor (#82) * docs: update README.md [skip ci] * docs: create .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 28 ++++++++++++++++++++++++++++ README.md | 22 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 .all-contributorsrc diff --git a/.all-contributorsrc b/.all-contributorsrc new file mode 100644 index 00000000..9b308680 --- /dev/null +++ b/.all-contributorsrc @@ -0,0 +1,28 @@ +{ + "files": [ + "README.md" + ], + "imageSize": 100, + "commit": false, + "contributors": [ + { + "login": "austinhuang0131", + "name": "Austin Huang", + "avatar_url": "https://avatars1.githubusercontent.com/u/16656689?v=4", + "profile": "https://austinhuang.me", + "contributions": [ + "code", + "doc", + "question", + "translation", + "userTesting" + ] + } + ], + "contributorsPerLine": 7, + "projectName": "instagrabber", + "projectOwner": "austinhuang0131", + "repoType": "github", + "repoHost": "https://github.com", + "skipCi": true +} diff --git a/README.md b/README.md index 4a0ca37b..368710cd 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ InstaGrabber + +[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) + ## InstaGrabber @@ -67,3 +70,22 @@ This app is originally made by [@AwaisKing](https://github.com/AwaisKing) on [Gi [![Crowdin](https://badges.crowdin.net/instagrabber/localized.svg)](https://crowdin.com/project/instagrabber) [![forthebadge](https://forthebadge.com/images/badges/made-with-java.svg)](https://forthebadge.com)[![forthebadge](https://forthebadge.com/images/badges/built-for-android.svg)](https://forthebadge.com) [![gplv3](https://www.gnu.org/graphics/gplv3-with-text-136x68.png)](https://www.gnu.org/licenses/gpl-3.0.html) + +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + +

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““
+ + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file From e423716f364ceb96b12b0e19a141635093a64693 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 27 Aug 2020 12:33:43 -0400 Subject: [PATCH 14/29] Update README.md --- README.md | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 368710cd..3606dbd3 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,4 @@ InstaGrabber - -[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) - ## InstaGrabber @@ -40,6 +37,27 @@ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.insta * Telegram: [@Grabber_App](https://t.me/grabber_app) * Discord: [https://discord.gg/YtEDzN2](https://discord.gg/YtEDzN2) +## Contributors + + +[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) + + +Prominent contributors are listed here in the [all-contributors](https://allcontributors.org/) format. See [emoji key](https://allcontributors.org/docs/en/emoji-key). + + + + + + + + +

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““
+ + + + + ### License This app is originally made by [@AwaisKing](https://github.com/AwaisKing) on [GitLab](https://gitlab.com/AwaisKing/instagrabber). @@ -71,21 +89,4 @@ This app is originally made by [@AwaisKing](https://github.com/AwaisKing) on [Gi [![forthebadge](https://forthebadge.com/images/badges/made-with-java.svg)](https://forthebadge.com)[![forthebadge](https://forthebadge.com/images/badges/built-for-android.svg)](https://forthebadge.com) [![gplv3](https://www.gnu.org/graphics/gplv3-with-text-136x68.png)](https://www.gnu.org/licenses/gpl-3.0.html) -## Contributors ✨ - -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): - - - - - - - - -

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““
- - - - - -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! \ No newline at end of file +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! From 009ad9137f554fd765dd0d3f2d4e75034c26de0e Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 27 Aug 2020 12:34:08 -0400 Subject: [PATCH 15/29] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3606dbd3..fb6c4f3d 100755 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.insta * Telegram: [@Grabber_App](https://t.me/grabber_app) * Discord: [https://discord.gg/YtEDzN2](https://discord.gg/YtEDzN2) -## Contributors +### Contributors [![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) From e120c22d415bff3f5e022be77c680dccaa4c360a Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2020 13:03:04 -0400 Subject: [PATCH 16/29] docs: add austinhuang0131 as a contributor (#84) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 4 +++- README.md | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 9b308680..4bc636d5 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -15,7 +15,9 @@ "doc", "question", "translation", - "userTesting" + "userTesting", + "ideas", + "maintenance" ] } ], diff --git a/README.md b/README.md index fb6c4f3d..ed1970a8 100755 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Prominent contributors are listed here in the [all-contributors](https://allcont - +

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧
From 7e96271069668c71ee29a52c2dfb060456b8dbd5 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2020 13:03:45 -0400 Subject: [PATCH 17/29] docs: add ammargitham as a contributor (#85) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> Co-authored-by: Austin Huang --- .all-contributorsrc | 13 +++++++++++++ README.md | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 4bc636d5..12fcf11c 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -19,6 +19,19 @@ "ideas", "maintenance" ] + }, + { + "login": "ammargitham", + "name": "Ammar Githam", + "avatar_url": "https://avatars0.githubusercontent.com/u/8017365?v=4", + "profile": "https://github.com/ammargitham", + "contributions": [ + "code", + "design", + "ideas", + "maintenance", + "question" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index ed1970a8..ae146083 100755 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.insta ### Contributors -[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-) Prominent contributors are listed here in the [all-contributors](https://allcontributors.org/) format. See [emoji key](https://allcontributors.org/docs/en/emoji-key). @@ -51,6 +51,7 @@ Prominent contributors are listed here in the [all-contributors](https://allcont +

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧

Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬
From b7307c0e8fe2f0cfec021ab7d19a90c146cc2737 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2020 13:31:23 -0400 Subject: [PATCH 18/29] docs: add AwaisKing as a contributor (#86) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 10 ++++++++++ README.md | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 12fcf11c..a75085a7 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -32,6 +32,16 @@ "maintenance", "question" ] + }, + { + "login": "AwaisKing", + "name": "AWAiS", + "avatar_url": "https://avatars3.githubusercontent.com/u/5278488?v=4", + "profile": "http://rerolledgeek.blogspot.com/", + "contributions": [ + "code", + "ideas" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index ae146083..654c39a5 100755 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.insta ### Contributors -[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-) Prominent contributors are listed here in the [all-contributors](https://allcontributors.org/) format. See [emoji key](https://allcontributors.org/docs/en/emoji-key). @@ -52,6 +52,7 @@ Prominent contributors are listed here in the [all-contributors](https://allcont
Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧
Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬ +
AWAiS

πŸ’» πŸ€” From 7d7d5678de1bb0ca68875fcd11e373b1acbacec5 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2020 13:33:36 -0400 Subject: [PATCH 19/29] docs: add Shadowspear123 as a contributor (#87) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> Co-authored-by: Austin Huang --- .all-contributorsrc | 13 +++++++++++++ README.md | 1 + 2 files changed, 14 insertions(+) diff --git a/.all-contributorsrc b/.all-contributorsrc index a75085a7..9a635c09 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -42,6 +42,19 @@ "code", "ideas" ] + }, + { + "login": "Shadowspear123", + "name": "Shadowspear123", + "avatar_url": "https://avatars1.githubusercontent.com/u/50462281?v=4", + "profile": "https://github.com/Shadowspear123", + "contributions": [ + "blog", + "bug", + "ideas", + "question", + "userTesting" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 654c39a5..8241f484 100755 --- a/README.md +++ b/README.md @@ -53,6 +53,7 @@ Prominent contributors are listed here in the [all-contributors](https://allcont
Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧
Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬
AWAiS

πŸ’» πŸ€” +
Shadowspear123

πŸ“ πŸ› πŸ€” πŸ’¬ πŸ““ From 822914bea659b4c77ca6de26443cd368944b5862 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2020 13:35:05 -0400 Subject: [PATCH 20/29] docs: add KevinNThomas as a contributor (#88) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 9a635c09..a62bec81 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -55,6 +55,15 @@ "question", "userTesting" ] + }, + { + "login": "KevinNThomas", + "name": "Kevin Thomas", + "avatar_url": "https://avatars2.githubusercontent.com/u/15370181?v=4", + "profile": "http://kevinthomas.dev", + "contributions": [ + "financial" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 8241f484..e0f30362 100755 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.insta ### Contributors -[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg?style=flat-square)](#contributors-) Prominent contributors are listed here in the [all-contributors](https://allcontributors.org/) format. See [emoji key](https://allcontributors.org/docs/en/emoji-key). @@ -54,6 +54,7 @@ Prominent contributors are listed here in the [all-contributors](https://allcont
Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬
AWAiS

πŸ’» πŸ€”
Shadowspear123

πŸ“ πŸ› πŸ€” πŸ’¬ πŸ““ +
Kevin Thomas

πŸ’΅ From 969a68c4dc7e12480a9e43fc814daa0452b6b7aa Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 27 Aug 2020 14:37:31 -0400 Subject: [PATCH 21/29] Update README.md --- README.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e0f30362..e0b9349e 100755 --- a/README.md +++ b/README.md @@ -8,14 +8,7 @@ [![GPLv3 license](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE) [![GitHub stars](https://img.shields.io/github/stars/austinhuang0131/instagrabber.svg?style=social&label=Star)](https://GitHub.com/austinhuang0131/instagrabber/stargazers/) -For documentation, visit [InstaGrabber.AustinHuang.me](https://instagrabber.austinhuang.me) - -Profile -Post -Comments -Story (Highlight shown) -Hashtag -Location +For documentation, visit [InstaGrabber.AustinHuang.me](https://instagrabber.austinhuang.me). ### Download @@ -29,6 +22,13 @@ Download from [GitHub releases](https://github.com/austinhuang0131/instagrabber/ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.instagrabber.svg) vs. ![GitHub](https://img.shields.io/github/release/austinhuang0131/instagrabber.svg?logo=github) +Profile +Post +Comments +Story (Highlight shown) +Hashtag +Location + ### Contact us * Use [GitHub issues](https://github.com/austinhuang0131/instagrabber/issues) when possible. @@ -43,7 +43,7 @@ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.insta [![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg?style=flat-square)](#contributors-) -Prominent contributors are listed here in the [all-contributors](https://allcontributors.org/) format. See [emoji key](https://allcontributors.org/docs/en/emoji-key). +Prominent contributors are listed here in the [all-contributors](https://allcontributors.org/) specifications. See [emoji key](https://allcontributors.org/docs/en/emoji-key). @@ -92,5 +92,3 @@ This app is originally made by [@AwaisKing](https://github.com/AwaisKing) on [Gi [![Crowdin](https://badges.crowdin.net/instagrabber/localized.svg)](https://crowdin.com/project/instagrabber) [![forthebadge](https://forthebadge.com/images/badges/made-with-java.svg)](https://forthebadge.com)[![forthebadge](https://forthebadge.com/images/badges/built-for-android.svg)](https://forthebadge.com) [![gplv3](https://www.gnu.org/graphics/gplv3-with-text-136x68.png)](https://www.gnu.org/licenses/gpl-3.0.html) - -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! From cd4cbf1350bb365fa52787f978c47c7652f0a713 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 27 Aug 2020 14:41:12 -0400 Subject: [PATCH 22/29] all-contributors cli --- .all-contributorsrc | 67 ++++++++++++++++++++++++++++++++++++++++++++- README.md | 23 +++++++++++----- 2 files changed, 82 insertions(+), 8 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index a62bec81..3886195e 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -64,6 +64,70 @@ "contributions": [ "financial" ] + }, + { + "login": "e-edgren", + "name": "Airikr", + "avatar_url": "https://avatars0.githubusercontent.com/u/53869451?v=4", + "profile": "https://airikr.me/", + "contributions": [ + "question", + "ideas" + ] + }, + { + "login": "Galang23", + "name": "Galang23", + "avatar_url": "https://avatars3.githubusercontent.com/u/13700948?v=4", + "profile": "https://github.com/Galang23", + "contributions": [ + "translation" + ] + }, + { + "login": "kernoeb", + "name": "kernoeb", + "avatar_url": "https://avatars3.githubusercontent.com/u/24623168?v=4", + "profile": "https://becauseofprog.fr/", + "contributions": [ + "translation" + ] + }, + { + "login": "Lego8486", + "name": "Ten_Lego", + "avatar_url": "https://avatars1.githubusercontent.com/u/47414485?v=4", + "profile": "https://github.com/Lego8486", + "contributions": [ + "translation" + ] + }, + { + "login": "peterge1998", + "name": "peterge1998", + "avatar_url": "https://avatars2.githubusercontent.com/u/47355238?v=4", + "profile": "https://github.com/peterge1998", + "contributions": [ + "translation" + ] + }, + { + "login": "RAMAR-RAR", + "name": "RAMAR-RAR", + "avatar_url": "https://avatars3.githubusercontent.com/u/47423745?v=4", + "profile": "https://github.com/RAMAR-RAR", + "contributions": [ + "translation" + ] + }, + { + "login": "wagnim", + "name": "wagnim", + "avatar_url": "https://avatars0.githubusercontent.com/u/30241419?v=4", + "profile": "https://github.com/wagnim", + "contributions": [ + "translation" + ] } ], "contributorsPerLine": 7, @@ -71,5 +135,6 @@ "projectOwner": "austinhuang0131", "repoType": "github", "repoHost": "https://github.com", - "skipCi": true + "skipCi": true, + "commitConvention": "none" } diff --git a/README.md b/README.md index e0b9349e..5560ded3 100755 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.insta ### Contributors -[![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-12-orange.svg?style=flat-square)](#contributors-) Prominent contributors are listed here in the [all-contributors](https://allcontributors.org/) specifications. See [emoji key](https://allcontributors.org/docs/en/emoji-key). @@ -50,15 +50,24 @@ Prominent contributors are listed here in the [all-contributors](https://allcont - - - - - + + + + + + + + + + + + + +

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧

Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬

AWAiS

πŸ’» πŸ€”

Shadowspear123

πŸ“ πŸ› πŸ€” πŸ’¬ πŸ““

Kevin Thomas

πŸ’΅

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧

Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬

AWAiS

πŸ’» πŸ€”

Shadowspear123

πŸ“ πŸ› πŸ€” πŸ’¬ πŸ““

Kevin Thomas

πŸ’΅

Airikr

πŸ’¬ πŸ€”

Galang23

🌍

kernoeb

🌍

Ten_Lego

🌍

peterge1998

🌍

RAMAR-RAR

🌍

wagnim

🌍
- + From 3f18822115636494f51567c3ef266de9503f6d5d Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 27 Aug 2020 14:48:01 -0400 Subject: [PATCH 23/29] test again --- .all-contributorsrc | 35 ++++++++++++++++++++++------------- README.md | 29 ++++++++++++++++------------- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 3886195e..fcda0724 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -8,7 +8,7 @@ { "login": "austinhuang0131", "name": "Austin Huang", - "avatar_url": "https://avatars1.githubusercontent.com/u/16656689?v=4", + "avatar_url": "https://avatars1.githubusercontent.com/u/16656689", "profile": "https://austinhuang.me", "contributions": [ "code", @@ -23,7 +23,7 @@ { "login": "ammargitham", "name": "Ammar Githam", - "avatar_url": "https://avatars0.githubusercontent.com/u/8017365?v=4", + "avatar_url": "https://avatars0.githubusercontent.com/u/8017365", "profile": "https://github.com/ammargitham", "contributions": [ "code", @@ -36,7 +36,7 @@ { "login": "AwaisKing", "name": "AWAiS", - "avatar_url": "https://avatars3.githubusercontent.com/u/5278488?v=4", + "avatar_url": "https://avatars3.githubusercontent.com/u/5278488", "profile": "http://rerolledgeek.blogspot.com/", "contributions": [ "code", @@ -46,7 +46,7 @@ { "login": "Shadowspear123", "name": "Shadowspear123", - "avatar_url": "https://avatars1.githubusercontent.com/u/50462281?v=4", + "avatar_url": "https://avatars1.githubusercontent.com/u/50462281", "profile": "https://github.com/Shadowspear123", "contributions": [ "blog", @@ -59,7 +59,7 @@ { "login": "KevinNThomas", "name": "Kevin Thomas", - "avatar_url": "https://avatars2.githubusercontent.com/u/15370181?v=4", + "avatar_url": "https://avatars2.githubusercontent.com/u/15370181", "profile": "http://kevinthomas.dev", "contributions": [ "financial" @@ -68,7 +68,7 @@ { "login": "e-edgren", "name": "Airikr", - "avatar_url": "https://avatars0.githubusercontent.com/u/53869451?v=4", + "avatar_url": "https://avatars0.githubusercontent.com/u/53869451", "profile": "https://airikr.me/", "contributions": [ "question", @@ -78,7 +78,7 @@ { "login": "Galang23", "name": "Galang23", - "avatar_url": "https://avatars3.githubusercontent.com/u/13700948?v=4", + "avatar_url": "https://avatars3.githubusercontent.com/u/13700948", "profile": "https://github.com/Galang23", "contributions": [ "translation" @@ -87,7 +87,7 @@ { "login": "kernoeb", "name": "kernoeb", - "avatar_url": "https://avatars3.githubusercontent.com/u/24623168?v=4", + "avatar_url": "https://avatars3.githubusercontent.com/u/24623168", "profile": "https://becauseofprog.fr/", "contributions": [ "translation" @@ -96,16 +96,25 @@ { "login": "Lego8486", "name": "Ten_Lego", - "avatar_url": "https://avatars1.githubusercontent.com/u/47414485?v=4", + "avatar_url": "https://avatars1.githubusercontent.com/u/47414485", "profile": "https://github.com/Lego8486", "contributions": [ "translation" ] }, + { + "login": "MoaufmKlo", + "name": "MoaufmKlo", + "avatar_url": "https://avatars1.githubusercontent.com/u/45636897", + "profile": "https://github.com/MoaufmKlo", + "contributions": [ + "translation" + ] + }, { "login": "peterge1998", "name": "peterge1998", - "avatar_url": "https://avatars2.githubusercontent.com/u/47355238?v=4", + "avatar_url": "https://avatars2.githubusercontent.com/u/47355238", "profile": "https://github.com/peterge1998", "contributions": [ "translation" @@ -114,7 +123,7 @@ { "login": "RAMAR-RAR", "name": "RAMAR-RAR", - "avatar_url": "https://avatars3.githubusercontent.com/u/47423745?v=4", + "avatar_url": "https://avatars3.githubusercontent.com/u/47423745", "profile": "https://github.com/RAMAR-RAR", "contributions": [ "translation" @@ -123,14 +132,14 @@ { "login": "wagnim", "name": "wagnim", - "avatar_url": "https://avatars0.githubusercontent.com/u/30241419?v=4", + "avatar_url": "https://avatars0.githubusercontent.com/u/30241419", "profile": "https://github.com/wagnim", "contributions": [ "translation" ] } ], - "contributorsPerLine": 7, + "contributorsPerLine": 5, "projectName": "instagrabber", "projectOwner": "austinhuang0131", "repoType": "github", diff --git a/README.md b/README.md index 5560ded3..28d8781a 100755 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.insta ### Contributors -[![All Contributors](https://img.shields.io/badge/all_contributors-12-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors-) Prominent contributors are listed here in the [all-contributors](https://allcontributors.org/) specifications. See [emoji key](https://allcontributors.org/docs/en/emoji-key). @@ -50,20 +50,23 @@ Prominent contributors are listed here in the [all-contributors](https://allcont - - - - - - - + + + + + - - - - - + + + + + + + + + +

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧

Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬

AWAiS

πŸ’» πŸ€”

Shadowspear123

πŸ“ πŸ› πŸ€” πŸ’¬ πŸ““

Kevin Thomas

πŸ’΅

Airikr

πŸ’¬ πŸ€”

Galang23

🌍

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧

Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬

AWAiS

πŸ’» πŸ€”

Shadowspear123

πŸ“ πŸ› πŸ€” πŸ’¬ πŸ““

Kevin Thomas

πŸ’΅

kernoeb

🌍

Ten_Lego

🌍

peterge1998

🌍

RAMAR-RAR

🌍

wagnim

🌍

Airikr

πŸ’¬ πŸ€”

Galang23

🌍

kernoeb

🌍

Ten_Lego

🌍

MoaufmKlo

🌍

peterge1998

🌍

RAMAR-RAR

🌍

wagnim

🌍
From bb96ee82c58a1dada82d7b3d9a2bd0ee8d118939 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 27 Aug 2020 14:58:13 -0400 Subject: [PATCH 24/29] final edit --- .all-contributorsrc | 7 +++---- README.md | 10 +++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index fcda0724..26f28f43 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -15,9 +15,7 @@ "doc", "question", "translation", - "userTesting", - "ideas", - "maintenance" + "ideas" ] }, { @@ -81,6 +79,7 @@ "avatar_url": "https://avatars3.githubusercontent.com/u/13700948", "profile": "https://github.com/Galang23", "contributions": [ + "question", "translation" ] }, @@ -139,7 +138,7 @@ ] } ], - "contributorsPerLine": 5, + "contributorsPerLine": 6, "projectName": "instagrabber", "projectOwner": "austinhuang0131", "repoType": "github", diff --git a/README.md b/README.md index 28d8781a..5e154de9 100755 --- a/README.md +++ b/README.md @@ -50,22 +50,22 @@ Prominent contributors are listed here in the [all-contributors](https://allcont - + + - - + - - + +

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ““ πŸ€” 🚧

Austin Huang

πŸ’» πŸ“– πŸ’¬ 🌍 πŸ€”

Ammar Githam

πŸ’» 🎨 πŸ€” 🚧 πŸ’¬

AWAiS

πŸ’» πŸ€”

Shadowspear123

πŸ“ πŸ› πŸ€” πŸ’¬ πŸ““

Kevin Thomas

πŸ’΅

Airikr

πŸ’¬ πŸ€”

Airikr

πŸ’¬ πŸ€”

Galang23

🌍

Galang23

πŸ’¬ 🌍

kernoeb

🌍

Ten_Lego

🌍

MoaufmKlo

🌍

peterge1998

🌍

RAMAR-RAR

🌍

wagnim

🌍
From 1fda45c01afc9aec856361be520ed3fcf811b745 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Sat, 29 Aug 2020 15:30:24 -0400 Subject: [PATCH 25/29] fix #100 --- .../main/java/awais/instagrabber/activities/PostViewer.java | 4 +--- .../main/java/awais/instagrabber/asyncs/CommentsFetcher.java | 2 +- app/src/main/java/awais/instagrabber/utils/Utils.java | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/activities/PostViewer.java b/app/src/main/java/awais/instagrabber/activities/PostViewer.java index e7de230d..0079c93a 100755 --- a/app/src/main/java/awais/instagrabber/activities/PostViewer.java +++ b/app/src/main/java/awais/instagrabber/activities/PostViewer.java @@ -222,11 +222,9 @@ public final class PostViewer extends BaseLanguageActivity { viewerBinding.bottomPanel.commentsCount.setText(String.valueOf(commentsCount)); viewerBinding.bottomPanel.btnComments.setVisibility(View.VISIBLE); - postShortCode = result[0].getShortCode(); - viewerBinding.bottomPanel.btnComments.setOnClickListener(v -> startActivityForResult(new Intent(this, CommentsViewer.class) - .putExtra(Constants.EXTRAS_SHORTCODE, postShortCode) + .putExtra(Constants.EXTRAS_SHORTCODE, postModel.getShortCode()) .putExtra(Constants.EXTRAS_POST, viewerPostModel.getPostId()) .putExtra(Constants.EXTRAS_USER, postUserId), 6969)); viewerBinding.bottomPanel.btnComments.setClickable(true); diff --git a/app/src/main/java/awais/instagrabber/asyncs/CommentsFetcher.java b/app/src/main/java/awais/instagrabber/asyncs/CommentsFetcher.java index 31587154..cf043962 100755 --- a/app/src/main/java/awais/instagrabber/asyncs/CommentsFetcher.java +++ b/app/src/main/java/awais/instagrabber/asyncs/CommentsFetcher.java @@ -148,7 +148,7 @@ public final class CommentsFetcher extends AsyncTask String endCursor = ""; while (endCursor != null) { - final String url = "https://www.instagram.com/graphql/query/?query_hash=97b41c52301f77ce508f55e66d17620e&variables=" + + final String url = "https://www.instagram.com/graphql/query/?query_hash=bc3296d1ce80a24b1b6e40b1e72903f5&variables=" + "{\"shortcode\":\"" + shortCode + "\",\"first\":50,\"after\":\"" + endCursor + "\"}"; try { diff --git a/app/src/main/java/awais/instagrabber/utils/Utils.java b/app/src/main/java/awais/instagrabber/utils/Utils.java index b7f9a525..1674f945 100755 --- a/app/src/main/java/awais/instagrabber/utils/Utils.java +++ b/app/src/main/java/awais/instagrabber/utils/Utils.java @@ -1226,7 +1226,7 @@ public final class Utils { final int endIndex = (spaceIndex != -1 ? spaceIndex : length); - final String extractUrl = url.substring(startIndex, Math.min(length, endIndex) - 1); + final String extractUrl = url.substring(startIndex, Math.min(length, endIndex)); final SpannableString spannableString = new SpannableString(url); spannableString.setSpan(new URLSpan(extractUrl), startIndex, endIndex, 0); From 7b4c005513911b993940e560ce97f3a7ab234e2a Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Sat, 29 Aug 2020 15:55:40 -0400 Subject: [PATCH 26/29] fix #75, fix #94 (added error handling for suspicious situations) --- .../activities/CommentsViewer.java | 32 +++++++++++-------- .../instagrabber/asyncs/PostsFetcher.java | 2 +- .../DirectMessageThreadFragment.java | 9 ++++-- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/activities/CommentsViewer.java b/app/src/main/java/awais/instagrabber/activities/CommentsViewer.java index 0a98cc01..73352b6b 100755 --- a/app/src/main/java/awais/instagrabber/activities/CommentsViewer.java +++ b/app/src/main/java/awais/instagrabber/activities/CommentsViewer.java @@ -119,21 +119,25 @@ public final class CommentsViewer extends BaseLanguageActivity implements SwipeR } else if (which == 3) { Utils.copyText(this, commentModel.getText().toString()); } else if (which == 4) { - focus = commentsBinding.rvComments.findViewWithTag(commentModel); - focus.setBackgroundColor(0x80888888); - commentsBinding.commentCancelParent.setVisibility(View.VISIBLE); - String mention = "@"+profileModel.getUsername()+" "; - commentsBinding.commentText.setText(mention); - commentsBinding.commentText.requestFocus(); - commentsBinding.commentText.setSelection(mention.length()); - commentsBinding.commentText.postDelayed(new Runnable(){ - @Override - public void run(){ - imm = (InputMethodManager) getSystemService(getApplicationContext().INPUT_METHOD_SERVICE); - imm.showSoftInput(commentsBinding.commentText, 0); - } + if (commentModel == null) { + Toast.makeText(getApplicationContext(), R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + } + else { + focus = commentsBinding.rvComments.findViewWithTag(commentModel); + focus.setBackgroundColor(0x80888888); + commentsBinding.commentCancelParent.setVisibility(View.VISIBLE); + String mention = "@" + profileModel.getUsername() + " "; + commentsBinding.commentText.setText(mention); + commentsBinding.commentText.requestFocus(); + commentsBinding.commentText.setSelection(mention.length()); + commentsBinding.commentText.postDelayed(new Runnable() { + @Override + public void run() { + imm = (InputMethodManager) getSystemService(getApplicationContext().INPUT_METHOD_SERVICE); + imm.showSoftInput(commentsBinding.commentText, 0); + } + }, 200); } - ,200); } else if (which == 5) { new CommentAction().execute((commentModel.getLiked() ? "unlike/" : "like/")+commentModel.getId()); } else if (which == 6) { diff --git a/app/src/main/java/awais/instagrabber/asyncs/PostsFetcher.java b/app/src/main/java/awais/instagrabber/asyncs/PostsFetcher.java index 3e972871..204323d6 100755 --- a/app/src/main/java/awais/instagrabber/asyncs/PostsFetcher.java +++ b/app/src/main/java/awais/instagrabber/asyncs/PostsFetcher.java @@ -131,7 +131,7 @@ public final class PostsFetcher extends AsyncTask { Utils.checkExistence(downloadDir, customDir, isSlider, models[i]); } - if (models[models.length - 1] != null) + if (models.length > 0 && models[models.length - 1] != null) models[models.length - 1].setPageCursor(hasNextPage, endCursor); result = models; diff --git a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java index a077b082..2d19a507 100644 --- a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java @@ -67,6 +67,7 @@ import awais.instagrabber.models.direct_messages.DirectItemModel; import awais.instagrabber.models.direct_messages.InboxThreadModel; import awais.instagrabber.models.enums.DirectItemType; import awais.instagrabber.models.enums.DownloadMethod; +import awais.instagrabber.models.enums.MediaItemType; import awais.instagrabber.models.enums.UserInboxDirection; import awais.instagrabber.utils.Constants; import awais.instagrabber.utils.Utils; @@ -220,8 +221,12 @@ public class DirectMessageThreadFragment extends Fragment { case RAVEN_MEDIA: case MEDIA: final ProfileModel user = getUser(directItemModel.getUserId()); - Utils.dmDownload(requireContext(), user.getUsername(), DownloadMethod.DOWNLOAD_DIRECT, Collections.singletonList(itemType == DirectItemType.MEDIA ? directItemModel.getMediaModel() : directItemModel.getRavenMediaModel().getMedia())); - Toast.makeText(requireContext(), R.string.downloader_downloading_media, Toast.LENGTH_SHORT).show(); + String url = selectedItem.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO ? selectedItem.getVideoUrl() : selectedItem.getThumbUrl(); + if (url != null) { + Utils.dmDownload(requireContext(), user.getUsername(), DownloadMethod.DOWNLOAD_DIRECT, Collections.singletonList(itemType == DirectItemType.MEDIA ? directItemModel.getMediaModel() : directItemModel.getRavenMediaModel().getMedia())); + Toast.makeText(requireContext(), R.string.downloader_downloading_media, Toast.LENGTH_SHORT).show(); + } + else Toast.makeText(requireContext(), R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); break; case STORY_SHARE: if (directItemModel.getReelShare() != null) { From c3d92b8fc0d5d9bd2e0a9fc3d818d52f263034f2 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Sat, 29 Aug 2020 16:42:08 -0400 Subject: [PATCH 27/29] implement swipe-up sticker + refresh inbox list after sending message --- .../instagrabber/activities/StoryViewer.java | 18 ++++++++++--- .../asyncs/i/iStoryStatusFetcher.java | 18 +++++++++++++ .../DirectMessageInboxFragment.java | 6 ++--- .../DirectMessageSettingsFragment.java | 2 +- .../DirectMessageThreadFragment.java | 13 +++++++--- .../awais/instagrabber/models/StoryModel.java | 8 ++++++ .../models/stickers/SwipeUpModel.java | 20 +++++++++++++++ .../java/awais/instagrabber/utils/Utils.java | 25 ++++++------------- .../main/res/layout/activity_story_viewer.xml | 9 +++++++ 9 files changed, 90 insertions(+), 29 deletions(-) create mode 100755 app/src/main/java/awais/instagrabber/models/stickers/SwipeUpModel.java diff --git a/app/src/main/java/awais/instagrabber/activities/StoryViewer.java b/app/src/main/java/awais/instagrabber/activities/StoryViewer.java index 2385b557..125b357e 100755 --- a/app/src/main/java/awais/instagrabber/activities/StoryViewer.java +++ b/app/src/main/java/awais/instagrabber/activities/StoryViewer.java @@ -65,6 +65,7 @@ import awais.instagrabber.models.enums.MediaItemType; import awais.instagrabber.models.stickers.PollModel; import awais.instagrabber.models.stickers.QuestionModel; import awais.instagrabber.models.stickers.QuizModel; +import awais.instagrabber.models.stickers.SwipeUpModel; import awais.instagrabber.utils.Constants; import awais.instagrabber.utils.Utils; import awaisomereport.LogCollector; @@ -99,6 +100,7 @@ public final class StoryViewer extends BaseLanguageActivity { private QuestionModel question; private String[] mentions; private QuizModel quiz; + private SwipeUpModel swipeUp; private StoryModel currentStory; private String url, username; private int slidePos = 0, lastSlidePos = 0; @@ -220,14 +222,17 @@ public final class StoryViewer extends BaseLanguageActivity { return false; }); - storyViewerBinding.spotify.setOnClickListener(v -> { + final View.OnClickListener linkActionListener = v -> { final Object tag = v.getTag(); if (tag instanceof CharSequence) { final Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(tag.toString())); startActivity(intent); } - }); + }; + + storyViewerBinding.spotify.setOnClickListener(linkActionListener); + storyViewerBinding.swipeUp.setOnClickListener(linkActionListener); storyViewerBinding.viewStoryPost.setOnClickListener(v -> { final Object tag = v.getTag(); @@ -279,7 +284,7 @@ public final class StoryViewer extends BaseLanguageActivity { .show(); } else if (tag instanceof QuizModel) { - quiz = (QuizModel) quiz; + quiz = quiz; String[] choices = new String[quiz.getChoices().length]; for (int q = 0; q < choices.length; ++q) { choices[q] = (quiz.getMyChoice() == q ? "√ " :"") + quiz.getChoices()[q]+ " (" + quiz.getCounts()[q] + ")"; @@ -509,6 +514,13 @@ public final class StoryViewer extends BaseLanguageActivity { storyViewerBinding.quiz.setVisibility(quiz != null ? View.VISIBLE : View.GONE); storyViewerBinding.quiz.setTag(quiz); + swipeUp = currentStory.getSwipeUp(); + storyViewerBinding.swipeUp.setVisibility(swipeUp != null ? View.VISIBLE : View.GONE); + if (swipeUp != null) { + storyViewerBinding.swipeUp.setText(swipeUp.getText()); + storyViewerBinding.swipeUp.setTag(swipeUp.getUrl()); + } + releasePlayer(); final Intent intent = getIntent(); if (intent.getBooleanExtra(Constants.EXTRAS_HASHTAG, false)) { diff --git a/app/src/main/java/awais/instagrabber/asyncs/i/iStoryStatusFetcher.java b/app/src/main/java/awais/instagrabber/asyncs/i/iStoryStatusFetcher.java index d85f3d47..bae3c618 100755 --- a/app/src/main/java/awais/instagrabber/asyncs/i/iStoryStatusFetcher.java +++ b/app/src/main/java/awais/instagrabber/asyncs/i/iStoryStatusFetcher.java @@ -16,7 +16,9 @@ import awais.instagrabber.models.enums.MediaItemType; import awais.instagrabber.models.stickers.PollModel; import awais.instagrabber.models.stickers.QuestionModel; import awais.instagrabber.models.stickers.QuizModel; +import awais.instagrabber.models.stickers.SwipeUpModel; import awais.instagrabber.utils.Constants; +import awais.instagrabber.utils.LocaleUtils; import awais.instagrabber.utils.Utils; import awaisomereport.LogCollector; @@ -51,6 +53,7 @@ public final class iStoryStatusFetcher extends AsyncTask currentlyRunning; private InboxThreadModelListViewModel listViewModel; - public static boolean afterLeave = false; + public static boolean refreshPlease = false; private final FetchListener fetchListener = new FetchListener() { @Override @@ -119,9 +119,9 @@ public class DirectMessageInboxFragment extends Fragment implements SwipeRefresh @Override public void onResume() { super.onResume(); - if (afterLeave) { + if (refreshPlease) { onRefresh(); - afterLeave = false; + refreshPlease = false; } } diff --git a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageSettingsFragment.java b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageSettingsFragment.java index 9b2c642d..1f589a30 100644 --- a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageSettingsFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageSettingsFragment.java @@ -199,7 +199,7 @@ public class DirectMessageSettingsFragment extends Fragment implements SwipeRefr titleText.clearFocus(); } else if (action.equals("leave")) { - DirectMessageInboxFragment.afterLeave = true; + DirectMessageInboxFragment.refreshPlease = true; NavHostFragment.findNavController(DirectMessageSettingsFragment.this).popBackStack(R.id.directMessagesInboxFragment, false); } } diff --git a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java index 2d19a507..2cccabac 100644 --- a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java @@ -221,12 +221,16 @@ public class DirectMessageThreadFragment extends Fragment { case RAVEN_MEDIA: case MEDIA: final ProfileModel user = getUser(directItemModel.getUserId()); - String url = selectedItem.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO ? selectedItem.getVideoUrl() : selectedItem.getThumbUrl(); - if (url != null) { - Utils.dmDownload(requireContext(), user.getUsername(), DownloadMethod.DOWNLOAD_DIRECT, Collections.singletonList(itemType == DirectItemType.MEDIA ? directItemModel.getMediaModel() : directItemModel.getRavenMediaModel().getMedia())); + final DirectItemModel.DirectItemMediaModel selectedItem = + itemType == DirectItemType.MEDIA ? directItemModel.getMediaModel() : directItemModel.getRavenMediaModel().getMedia(); + final String url = selectedItem.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO ? selectedItem.getVideoUrl() : selectedItem.getThumbUrl(); + if (url == null) { + Toast.makeText(requireContext(), R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + } + else { + Utils.dmDownload(requireContext(), user.getUsername(), DownloadMethod.DOWNLOAD_DIRECT, selectedItem); Toast.makeText(requireContext(), R.string.downloader_downloading_media, Toast.LENGTH_SHORT).show(); } - else Toast.makeText(requireContext(), R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); break; case STORY_SHARE: if (directItemModel.getReelShare() != null) { @@ -372,6 +376,7 @@ public class DirectMessageThreadFragment extends Fragment { } directItemModel.setLiked(); } + DirectMessageInboxFragment.refreshPlease = true; hasSentSomething = true; new DirectMessageInboxThreadFetcher(threadId, UserInboxDirection.OLDER, null, fetchListener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); }); diff --git a/app/src/main/java/awais/instagrabber/models/StoryModel.java b/app/src/main/java/awais/instagrabber/models/StoryModel.java index 1e2256d6..a2962e2b 100755 --- a/app/src/main/java/awais/instagrabber/models/StoryModel.java +++ b/app/src/main/java/awais/instagrabber/models/StoryModel.java @@ -6,6 +6,7 @@ import awais.instagrabber.models.enums.MediaItemType; import awais.instagrabber.models.stickers.PollModel; import awais.instagrabber.models.stickers.QuestionModel; import awais.instagrabber.models.stickers.QuizModel; +import awais.instagrabber.models.stickers.SwipeUpModel; public final class StoryModel implements Serializable { private final String storyMediaId, storyUrl, username, userId; @@ -15,6 +16,7 @@ public final class StoryModel implements Serializable { private PollModel poll; private QuestionModel question; private QuizModel quiz; + private SwipeUpModel swipeUp; private String[] mentions; private int position; private boolean isCurrentSlide = false, canReply = false; @@ -66,6 +68,8 @@ public final class StoryModel implements Serializable { return quiz; } + public SwipeUpModel getSwipeUp() { return swipeUp;} + public String[] getMentions() { return mentions; } @@ -106,6 +110,10 @@ public final class StoryModel implements Serializable { this.mentions = mentions; } + public void setSwipeUp(final SwipeUpModel swipeUp) { + this.swipeUp = swipeUp; + } + public void setPosition(final int position) { this.position = position; } diff --git a/app/src/main/java/awais/instagrabber/models/stickers/SwipeUpModel.java b/app/src/main/java/awais/instagrabber/models/stickers/SwipeUpModel.java new file mode 100755 index 00000000..4007d9b1 --- /dev/null +++ b/app/src/main/java/awais/instagrabber/models/stickers/SwipeUpModel.java @@ -0,0 +1,20 @@ +package awais.instagrabber.models.stickers; + +import java.io.Serializable; + +public final class SwipeUpModel implements Serializable { + private final String url, text; + + public SwipeUpModel(final String url, final String text) { + this.url = url; + this.text = text; + } + + public String getUrl() { + return url; + } + + public String getText() { + return text; + } +} \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/utils/Utils.java b/app/src/main/java/awais/instagrabber/utils/Utils.java index 1674f945..ef5f8222 100755 --- a/app/src/main/java/awais/instagrabber/utils/Utils.java +++ b/app/src/main/java/awais/instagrabber/utils/Utils.java @@ -990,10 +990,10 @@ public final class Utils { } public static void dmDownload(@NonNull final Context context, @Nullable final String username, final DownloadMethod method, - final List itemsToDownload) { + final DirectItemMediaModel itemsToDownload) { if (settingsHelper == null) settingsHelper = new SettingsHelper(context); - if (itemsToDownload == null || itemsToDownload.size() < 1) return; + if (itemsToDownload == null) return; if (ContextCompat.checkSelfPermission(context, Utils.PERMS[0]) == PackageManager.PERMISSION_GRANTED) dmDownloadImpl(context, username, method, itemsToDownload); @@ -1002,7 +1002,7 @@ public final class Utils { } private static void dmDownloadImpl(@NonNull final Context context, @Nullable final String username, - final DownloadMethod method, final List itemsToDownload) { + final DownloadMethod method, final DirectItemMediaModel selectedItem) { File dir = new File(Environment.getExternalStorageDirectory(), "Download"); if (settingsHelper.getBoolean(FOLDER_SAVE_TO)) { @@ -1014,22 +1014,11 @@ public final class Utils { dir = new File(dir, username); if (dir.exists() || dir.mkdirs()) { - final Main main = method != DownloadMethod.DOWNLOAD_FEED && context instanceof Main ? (Main) context : null; - - final int itemsToDownloadSize = itemsToDownload.size(); - final File finalDir = dir; - for (int i = itemsToDownloadSize - 1; i >= 0; i--) { - final DirectItemMediaModel selectedItem = itemsToDownload.get(i); - - if (main == null) { - new DownloadAsync(context, - selectedItem.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO ? selectedItem.getVideoUrl() : selectedItem.getThumbUrl(), - getDownloadSaveFileDm(finalDir, selectedItem, ""), - null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - - } - } + new DownloadAsync(context, + selectedItem.getMediaType() == MediaItemType.MEDIA_TYPE_VIDEO ? selectedItem.getVideoUrl() : selectedItem.getThumbUrl(), + getDownloadSaveFileDm(finalDir, selectedItem, ""), + null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else Toast.makeText(context, R.string.error_creating_folders, Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/res/layout/activity_story_viewer.xml b/app/src/main/res/layout/activity_story_viewer.xml index 55bae71f..7d7d0e08 100755 --- a/app/src/main/res/layout/activity_story_viewer.xml +++ b/app/src/main/res/layout/activity_story_viewer.xml @@ -81,6 +81,15 @@ android:textColor="@color/btn_blue_text_color" android:visibility="gone" app:backgroundTint="@color/btn_blue_background" /> + Date: Sat, 29 Aug 2020 21:34:14 -0400 Subject: [PATCH 28/29] support dm message type "clip" (which is glorified "media_share" for reels) --- .../instagrabber/adapters/DirectMessageItemsAdapter.java | 3 ++- .../viewholder/DirectMessageInboxItemViewHolder.java | 1 + .../directmessages/DirectMessageThreadFragment.java | 2 ++ .../awais/instagrabber/models/enums/DirectItemType.java | 3 ++- app/src/main/java/awais/instagrabber/utils/Utils.java | 8 +++++++- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/adapters/DirectMessageItemsAdapter.java b/app/src/main/java/awais/instagrabber/adapters/DirectMessageItemsAdapter.java index 8070aaf9..547f3cce 100644 --- a/app/src/main/java/awais/instagrabber/adapters/DirectMessageItemsAdapter.java +++ b/app/src/main/java/awais/instagrabber/adapters/DirectMessageItemsAdapter.java @@ -106,7 +106,8 @@ public final class DirectMessageItemsAdapter extends ListAdapter map = new HashMap<>(); diff --git a/app/src/main/java/awais/instagrabber/utils/Utils.java b/app/src/main/java/awais/instagrabber/utils/Utils.java index ef5f8222..d1d8492d 100755 --- a/app/src/main/java/awais/instagrabber/utils/Utils.java +++ b/app/src/main/java/awais/instagrabber/utils/Utils.java @@ -426,7 +426,7 @@ public final class Utils { if (userObj != null) { user = new ProfileModel( userObj.getBoolean("is_private"), - false, // temporary + false, userObj.optBoolean("is_verified"), String.valueOf(userObj.get("pk")), userObj.getString("username"), @@ -467,6 +467,7 @@ public final class Utils { if ("animated_media".equals(itemType)) return DirectItemType.ANIMATED_MEDIA; if ("voice_media".equals(itemType)) return DirectItemType.VOICE_MEDIA; if ("story_share".equals(itemType)) return DirectItemType.STORY_SHARE; + if ("clip".equals(itemType)) return DirectItemType.CLIP; return DirectItemType.TEXT; } @@ -705,6 +706,11 @@ public final class Utils { directMedia = getDirectMediaModel(itemObject.getJSONObject("media_share")); break; + case CLIP: + Log.d("austin_debug", "clip: "+itemObject.getJSONObject("clip").getJSONObject("clip")); + directMedia = getDirectMediaModel(itemObject.getJSONObject("clip").getJSONObject("clip")); + break; + case MEDIA: directMedia = getDirectMediaModel(itemObject.optJSONObject("media")); break; From a6c912c5d53c9c5eb7a92cee3c990c88c4cf38ea Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Sun, 30 Aug 2020 10:06:15 -0400 Subject: [PATCH 29/29] post location optimizations --- .../awais/instagrabber/activities/PostViewer.java | 12 ++++++------ .../java/awais/instagrabber/asyncs/FeedFetcher.java | 5 ++++- .../java/awais/instagrabber/asyncs/PostFetcher.java | 10 ++++++++-- .../awais/instagrabber/asyncs/i/iPostFetcher.java | 10 ++++++++-- .../awais/instagrabber/models/ViewerPostModel.java | 12 ++++++++---- app/src/main/res/layout/item_feed_top.xml | 2 +- 6 files changed, 35 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/activities/PostViewer.java b/app/src/main/java/awais/instagrabber/activities/PostViewer.java index 0079c93a..b46c765b 100755 --- a/app/src/main/java/awais/instagrabber/activities/PostViewer.java +++ b/app/src/main/java/awais/instagrabber/activities/PostViewer.java @@ -242,7 +242,7 @@ public final class PostViewer extends BaseLanguageActivity { } setupPostInfoBar("@"+viewerPostModel.getUsername(), viewerPostModel.getItemType(), - viewerPostModel.getLocation()); + viewerPostModel.getLocationName(), viewerPostModel.getLocation()); postCaption = postModel.getPostCaption(); viewerCaptionParent.setVisibility(View.VISIBLE); @@ -302,7 +302,7 @@ public final class PostViewer extends BaseLanguageActivity { final boolean postIdNull = postModel.getPostId() == null; if (!postIdNull) - setupPostInfoBar(intent.getStringExtra(Constants.EXTRAS_USER), postModel.getItemType(), null); + setupPostInfoBar(intent.getStringExtra(Constants.EXTRAS_USER), postModel.getItemType(), null, null); isFromShare = postModel.getPosition() == -1 || postIdNull; @@ -586,7 +586,7 @@ public final class PostViewer extends BaseLanguageActivity { } setupPostInfoBar("@"+viewerPostModel.getUsername(), viewerPostModel.getItemType(), - viewerPostModel.getLocation()); + viewerPostModel.getLocationName(), viewerPostModel.getLocation()); if (postModel instanceof PostModel) { final PostModel postModel = (PostModel) this.postModel; @@ -636,7 +636,7 @@ public final class PostViewer extends BaseLanguageActivity { } } - private void setupPostInfoBar(final String from, final MediaItemType mediaItemType, final JSONObject location) { + private void setupPostInfoBar(final String from, final MediaItemType mediaItemType, final String locationName, final String location) { if (prevUsername == null || !prevUsername.equals(from)) { viewerBinding.topPanel.ivProfilePic.setImageBitmap(null); viewerBinding.topPanel.ivProfilePic.setImageDrawable(null); @@ -712,8 +712,8 @@ public final class PostViewer extends BaseLanguageActivity { } else { viewerBinding.topPanel.location.setVisibility(View.VISIBLE); - viewerBinding.topPanel.location.setText(location.optString("name")); - viewerBinding.topPanel.location.setOnClickListener(v -> searchUsername(location.optString("id")+"/"+location.optString("slug"))); + viewerBinding.topPanel.location.setText(locationName); + viewerBinding.topPanel.location.setOnClickListener(v -> searchUsername(location)); viewerBinding.topPanel.title.setLayoutParams(new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT )); diff --git a/app/src/main/java/awais/instagrabber/asyncs/FeedFetcher.java b/app/src/main/java/awais/instagrabber/asyncs/FeedFetcher.java index 793d3574..b70fccea 100755 --- a/app/src/main/java/awais/instagrabber/asyncs/FeedFetcher.java +++ b/app/src/main/java/awais/instagrabber/asyncs/FeedFetcher.java @@ -158,7 +158,10 @@ public final class FeedFetcher extends AsyncTask { null, null, null, node.optLong("video_view_count", -1), -1, false, false, feedItem.getJSONObject("edge_media_preview_like").getLong("count"), - feedItem.optJSONObject("location")); + feedItem.isNull("location") ? null : feedItem.getJSONObject("location").optString("name"), + feedItem.isNull("location") ? null : + (feedItem.getJSONObject("location").optString("id") + "/" + + feedItem.getJSONObject("location").optString("slug"))); sliderItems[j].setSliderDisplayUrl(node.getString("display_url")); } diff --git a/app/src/main/java/awais/instagrabber/asyncs/PostFetcher.java b/app/src/main/java/awais/instagrabber/asyncs/PostFetcher.java index 528f2a76..38a6e0b0 100755 --- a/app/src/main/java/awais/instagrabber/asyncs/PostFetcher.java +++ b/app/src/main/java/awais/instagrabber/asyncs/PostFetcher.java @@ -95,7 +95,10 @@ public final class PostFetcher extends AsyncTask isVideo && media.has("video_view_count") ? media.getLong("video_view_count") : -1, timestamp, media.getBoolean("viewer_has_liked"), media.getBoolean("viewer_has_saved"), media.getJSONObject("edge_media_preview_like").getLong("count"), - media.optJSONObject("location")); + media.isNull("location") ? null : media.getJSONObject("location").optString("name"), + media.isNull("location") ? null : + (media.getJSONObject("location").optString("id") + "/" + + media.getJSONObject("location").optString("slug"))); postModel.setCommentsCount(commentsCount); @@ -120,7 +123,10 @@ public final class PostFetcher extends AsyncTask isChildVideo && node.has("video_view_count") ? node.getLong("video_view_count") : -1, timestamp, media.getBoolean("viewer_has_liked"), media.getBoolean("viewer_has_saved"), media.getJSONObject("edge_media_preview_like").getLong("count"), - media.optJSONObject("location")); + media.isNull("location") ? null : media.getJSONObject("location").optString("name"), + media.isNull("location") ? null : + (media.getJSONObject("location").optString("id") + "/" + + media.getJSONObject("location").optString("slug"))); postModels[i].setSliderDisplayUrl(node.getString("display_url")); Utils.checkExistence(downloadDir, customDir, true, postModels[i]); diff --git a/app/src/main/java/awais/instagrabber/asyncs/i/iPostFetcher.java b/app/src/main/java/awais/instagrabber/asyncs/i/iPostFetcher.java index 3e6330d7..a2d4c4a2 100755 --- a/app/src/main/java/awais/instagrabber/asyncs/i/iPostFetcher.java +++ b/app/src/main/java/awais/instagrabber/asyncs/i/iPostFetcher.java @@ -87,7 +87,10 @@ public final class iPostFetcher extends AsyncTask isVideo && media.has("view_count") ? media.getLong("view_count") : -1, timestamp, media.optBoolean("has_liked"), media.optBoolean("has_viewer_saved"), media.getLong("like_count"), - media.optJSONObject("location")); + media.isNull("location") ? null : media.getJSONObject("location").optString("name"), + media.isNull("location") ? null : + (media.getJSONObject("location").optString("id") + "/" + + media.getJSONObject("location").optString("slug"))); postModel.setCommentsCount(commentsCount); @@ -114,7 +117,10 @@ public final class iPostFetcher extends AsyncTask -1, timestamp, media.optBoolean("has_liked"), media.optBoolean("has_viewer_saved"), media.getLong("like_count"), - media.optJSONObject("location")); + media.isNull("location") ? null : media.getJSONObject("location").optString("name"), + media.isNull("location") ? null : + (media.getJSONObject("location").optString("id") + "/" + + media.getJSONObject("location").optString("slug"))); postModels[i].setSliderDisplayUrl(Utils.getHighQualityImage(node)); Utils.checkExistence(downloadDir, customDir, true, postModels[i]); diff --git a/app/src/main/java/awais/instagrabber/models/ViewerPostModel.java b/app/src/main/java/awais/instagrabber/models/ViewerPostModel.java index e4c1ec0d..fdc062e4 100755 --- a/app/src/main/java/awais/instagrabber/models/ViewerPostModel.java +++ b/app/src/main/java/awais/instagrabber/models/ViewerPostModel.java @@ -5,8 +5,7 @@ import org.json.JSONObject; import awais.instagrabber.models.enums.MediaItemType; public final class ViewerPostModel extends BasePostModel { - protected final String username; - protected final JSONObject location; + protected final String username, locationName, location; protected final long videoViews; protected String sliderDisplayUrl; protected long commentsCount, likes; @@ -14,7 +13,7 @@ public final class ViewerPostModel extends BasePostModel { public ViewerPostModel(final MediaItemType itemType, final String postId, final String displayUrl, final String shortCode, final String postCaption, final String username, final long videoViews, final long timestamp, - boolean liked, boolean bookmarked, long likes, final JSONObject location) { + boolean liked, boolean bookmarked, long likes, final String locationName, final String location) { this.itemType = itemType; this.postId = postId; this.displayUrl = displayUrl; @@ -26,6 +25,7 @@ public final class ViewerPostModel extends BasePostModel { this.liked = liked; this.likes = likes; this.bookmarked = bookmarked; + this.locationName = locationName; this.location = location; } @@ -41,7 +41,11 @@ public final class ViewerPostModel extends BasePostModel { return username; } - public JSONObject getLocation() { + public String getLocationName() { + return locationName; + } + + public String getLocation() { return location; } diff --git a/app/src/main/res/layout/item_feed_top.xml b/app/src/main/res/layout/item_feed_top.xml index 78dab810..31b688a5 100755 --- a/app/src/main/res/layout/item_feed_top.xml +++ b/app/src/main/res/layout/item_feed_top.xml @@ -44,7 +44,7 @@ android:layout_weight="1" android:gravity="center_vertical" android:textColor="@color/feed_text_primary_color" - android:textSize="18sp" /> + android:textSize="15sp" />