Unofficial Instagram API written in Golang
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples [Update] Fix remaining golint issues reported, should be 100% after this Jun 11, 2018
goinsta [Update] Fix remaining golint issues reported, should be 100% after this Jun 11, 2018
utils [Update] Run gofmt -s <- This was found on goreportcard.com Jun 9, 2018
.gitignore Updated gitignore and added media comments May 13, 2018
CONTRIBUTING.md Create CONTRIBUTING.md Jun 2, 2018
LICENSE Create LICENSE Jun 2, 2018
README.md Updated readme Jun 3, 2018
account.go Use int64 type for long integers where neccessary (#1) Aug 9, 2018
activity.go Use int64 type for long integers where neccessary (#1) Aug 9, 2018
comments.go Use int64 type for long integers where neccessary (#1) Aug 9, 2018
const.go [Update] golint fixes reported by goreportcard.com (#135) Jun 10, 2018
doc.go [Update] golint fixes reported by goreportcard.com (#135) Jun 10, 2018
generator.go Deleted unneeded generator vars May 17, 2018
go.mod Add v2 suffix in go.mod module Aug 26, 2018
goinsta.go merge and update Import and Export Aug 8, 2018
hashtags.go [Update] golint fixes reported by goreportcard.com (#135) Jun 10, 2018
inbox.go Use int64 type for long integers where neccessary (#1) Aug 9, 2018
media.go Unmarshall was replaced with json decoder to eliminate the problems o… Aug 12, 2018
profiles.go [Update] golint fixes reported by goreportcard.com (#135) Jun 10, 2018
request.go Added new error reporting types Jun 12, 2018
search.go Use int64 type for long integers where neccessary (#1) Aug 9, 2018
timeline.go [Update] golint fixes reported by goreportcard.com (#135) Jun 10, 2018
types.go SelfieSticker from string to interface{} avoiding json error Aug 13, 2018
users.go Use int64 type for long integers where neccessary (#1) Aug 9, 2018
utils.go [Update] golint fixes reported by goreportcard.com (#135) Jun 10, 2018

README.md

GoInsta. Make Goinsta Great Again!

Unofficial Instagram API for Golang

Build Status GoDoc Go Report Card Coverage Status

Versioning

Goinsta used gopkg.in as versioning control. Stable new API is the version v2.0. You can get it using:

go get -u -v gopkg.in/ahmdrz/goinsta.v2

Features

  • HTTP2 by default. Goinsta uses HTTP2 client enhancing performance.
  • Object independency. Can handle multiple instagram accounts.
  • Like Instagram mobile application. Goinsta is very similar to Instagram official application.
  • Simple. Goinsta is made by lazy programmers!
  • Backup methods. You can use Export and Import functions.
  • Security. Your password is only required to login. After login your password is deleted.
  • No External Dependencies. Goinsta will not use any Go packages outside of the standard library.

New Version !

We are working on a new object-oriented API. Try it and tell us your suggestions. See https://github.com/ahmdrz/goinsta/blob/master/CONTRIBUTING.md

If you want to use the old version you can found it in v1 branch or using gopkg.in/ahmdrz/goinsta.v1/

Sorry for breaking dependences :(. You can use this command in your project folder to update old master branch to v1.

for i in `grep -r ahmdrz ./ | awk '{split($0, a, ":"); print a[1]}'`; do sed -i 's/github\.com\/ahmdrz\/goinsta/gopkg\.in\/ahmdrz\/goinsta\.v1/g' $i; done

Package installation

go get -u -v gopkg.in/ahmdrz/goinsta.v2

CLI installation

go get -u -v gopkg.in/ahmdrz/goinsta.v2
go install gopkg.in/ahmdrz/goinsta.v2/goinsta

Example

package main

import (
	"fmt"

	"gopkg.in/ahmdrz/goinsta.v2"
)

func main() {
  //insta, err := goinsta.Import("~/.goinsta")
  insta := goinsta.New("USERNAME", "PASSWORD")

  // also you can use New function from gopkg.in/ahmdrz/goinsta.v2/utils

  // insta.SetProxy("http://localhost:8080", true) // true for insecure connections
  if err := insta.Login(); err != nil {
    fmt.Println(err)
    return
  }
  // export your configuration
  // after exporting you can use Import function instead of New function.
  insta.Export("~/.goinsta")

  ...
}

Projects using Goinsta

Legal

This code is in no way affiliated with, authorized, maintained, sponsored or endorsed by Instagram or any of its affiliates or subsidiaries. This is an independent and unofficial API. Use at your own risk.

Donate

Ahmdrz

btc Bitcoin: 1KjcfrBPJtM4MfBSGTqpC6RcoEW1KBh15X

Mester

btc Bitcoin: 37aogDJYBFkdSJTWG7TgcpgNweGHPCy1Ks

Analytics

Schema

The objects of the following schema can point to other objects defined below.

Instagram

  • Account: Personal information and account interactions.
    • Followers
    • Following
    • Feed
      • FeedMedia
        • Item(s)
    • Stories
      • StoryFeed
        • Item(s)
    • Liked
      • FeedMedia
        • Item(s)
    • Saved
      • SavedMedia
        • Item(s)
    • Tags
      • FeedMedia
        • Item(s)
    • Blocked
      • BlockedUser(s)
  • Profiles: User interaction.
    • Blocked
      • BlockedUser(s)
    • Get user using ID
      • User
    • Get user using Username
      • User
  • Media:
    • Items
    • Comments # Comments and Comment are different.
      • User
      • Comment(s) # Slice of Comment
    • Likes
    • Likers
  • Item
    • Items # If it is a carousel.
  • Search:
    • Location
    • Username
    • Tags
    • Location Deprecated
    • Facebook
  • Activity:
    • Following
    • Recent
  • Hashtag: Hashtag allows user to search using hashtags.
    • Stories
      • StoryMedia
    • Media # By default hashtag contains Medias in the structure