4.9 KiB
WARNING
- All forks must respect GPLv3. Please report violations in Issues or confidentially.
- 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!
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 want to help coding it!
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.
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. Assignsadapters
.adapters
: Scripts used to present a list ofmodels
fromasyncs
intoactivities
.- Those inside
viewholder
are for frontend, while others are for backend.
- Those inside
asyncs
: Scripts used to communicate with Instagram. Returnsmodels
which is sent toadapters
.asyncs.i
: Scripts that fetch data fromi.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") withinDirectMessageActivity
inactivities
.interfaces
: Custom backend components for this app.models
: Data structure for Instagram API responses fromasyncs
.utils
: Various tools.MainHelper.java
is basically an extension ofactivities.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).
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 to ask for help from any current maintainer!
I found a bug!
Please read FAQ first.
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 or through support channels to remove it.
Generally, reporting bugs directly in support channels is not recommended, as they can be difficult to find.
I want to help... in some other way.
You can...
- translate it
- promote it (reddit r/AndroidApps, YouTube HowToMen, Ekşi Sözlük)
- star it
Happy contributing!