Advertisement
fadhiilrachman

bot instalike

Jan 22nd, 2018
678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package main
  2.  
  3. // CODE BY CCOCOT
  4.  
  5. import (
  6.     "flag"
  7.     "github.com/ahmdrz/goinsta"
  8.     "log"
  9.     "math/rand"
  10.     "runtime"
  11.     "sync"
  12.     "time"
  13. )
  14.  
  15. func catch() {
  16.     if r := recover(); r != nil {
  17.         log.Fatalf("Error occured: %s", r)
  18.     } else {
  19.         log.Printf("Done !")
  20.     }
  21. }
  22.  
  23. func random(min, max int) int {
  24.     rand.Seed(time.Now().Unix())
  25.     return rand.Intn(max-min) + min
  26. }
  27.  
  28. func main() {
  29.     runtime.GOMAXPROCS(2)
  30.     var wg sync.WaitGroup
  31.     defer catch()
  32.  
  33.     usernamePtr := flag.String("username", "", "instagram username")
  34.     passwordPtr := flag.String("password", "", "instagram password")
  35.     sleepPtr := flag.Int("sleep", 0, "Delay in Minutes (Default Rand Range 1-4 Minutes)")
  36.     goroutinePtr := flag.Int("goroutine", 0, "set of gouroutine (Default is 1 Page)")
  37.  
  38.     flag.Parse()
  39.  
  40.     isUsernameEmpty := len(*usernamePtr) == 0
  41.     isPasswordEmpty := len(*passwordPtr) == 0
  42.     if isUsernameEmpty || isPasswordEmpty {
  43.         panic("Username / Password Empty | see flag in help -h")
  44.     }
  45.  
  46.     if *sleepPtr != 0 {
  47.         log.Printf("Flag --sleep detect, set sleep to %vm0s", *sleepPtr)
  48.     }
  49.  
  50.     if *goroutinePtr != 0 {
  51.         log.Printf("Flag --goroutine detect, set goroutine to %v", *goroutinePtr)
  52.     }
  53.  
  54.     log.Print("Try to login ... ")
  55.     insta := goinsta.New(*usernamePtr, *passwordPtr)
  56.     if err := insta.Login(); err != nil {
  57.         panic(err)
  58.     }
  59.  
  60.     log.Print("Login Success ...")
  61.  
  62.     tmpNextMaxID := ""
  63.     for {
  64.  
  65.         log.Print("Try to get media feed ...")
  66.         timline, err := insta.Timeline(tmpNextMaxID)
  67.         timline.AutoLoadMore = true
  68.         if err != nil {
  69.             panic(err)
  70.         }
  71.         log.Printf("Get Media with length : %d", len(timline.Items))
  72.  
  73.         for index, item := range timline.Items {
  74.             if !item.HasLiked {
  75.                 message := "[" + item.ID + "] @" + item.User.Username + ""
  76.                 log.Printf("[%d] Request Sent To -> %s", index, message)
  77.                 wg.Add(1)
  78.                 go func(wg *sync.WaitGroup, id, username string, index int) {
  79.                     defer wg.Done()
  80.                     _, err := insta.Like(item.ID)
  81.                     liked := true
  82.                     if err != nil {
  83.                         liked = false
  84.                     }
  85.                     log.Printf("[%d] Receive Response From <- [%s] @%s (LIKED: %t)", index, id, username, liked)
  86.                 }(&wg, item.ID, item.User.Username, index)
  87.             } else {
  88.                 log.Printf("[%d] SKIPPED <-> [%s] @%s (HASLIKED: %t)", index, item.ID, item.User.Username, item.HasLiked)
  89.             }
  90.             if *goroutinePtr != 0 {
  91.                 if mod := index % *goroutinePtr; mod == 0 {
  92.                     wg.Wait()
  93.                 }
  94.             }
  95.         }
  96.  
  97.         log.Printf("IsMoreAvaible: %t", timline.MoreAvailable)
  98.         if timline.MoreAvailable {
  99.             tmpNextMaxID = timline.NextMaxID
  100.         } else {
  101.             tmpNextMaxID = ""
  102.         }
  103.  
  104.         r := *sleepPtr
  105.         if *sleepPtr == 0 {
  106.             r = random(1, 4)
  107.         }
  108.         sleep := time.Duration(r) * time.Minute
  109.         log.Printf("Sleep For %v", sleep)
  110.         time.Sleep(sleep)
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement