Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- // CODE BY CCOCOT
- import (
- "flag"
- "github.com/ahmdrz/goinsta"
- "log"
- "math/rand"
- "runtime"
- "sync"
- "time"
- )
- func catch() {
- if r := recover(); r != nil {
- log.Fatalf("Error occured: %s", r)
- } else {
- log.Printf("Done !")
- }
- }
- func random(min, max int) int {
- rand.Seed(time.Now().Unix())
- return rand.Intn(max-min) + min
- }
- func main() {
- runtime.GOMAXPROCS(2)
- var wg sync.WaitGroup
- defer catch()
- usernamePtr := flag.String("username", "", "instagram username")
- passwordPtr := flag.String("password", "", "instagram password")
- sleepPtr := flag.Int("sleep", 0, "Delay in Minutes (Default Rand Range 1-4 Minutes)")
- goroutinePtr := flag.Int("goroutine", 0, "set of gouroutine (Default is 1 Page)")
- flag.Parse()
- isUsernameEmpty := len(*usernamePtr) == 0
- isPasswordEmpty := len(*passwordPtr) == 0
- if isUsernameEmpty || isPasswordEmpty {
- panic("Username / Password Empty | see flag in help -h")
- }
- if *sleepPtr != 0 {
- log.Printf("Flag --sleep detect, set sleep to %vm0s", *sleepPtr)
- }
- if *goroutinePtr != 0 {
- log.Printf("Flag --goroutine detect, set goroutine to %v", *goroutinePtr)
- }
- log.Print("Try to login ... ")
- insta := goinsta.New(*usernamePtr, *passwordPtr)
- if err := insta.Login(); err != nil {
- panic(err)
- }
- log.Print("Login Success ...")
- tmpNextMaxID := ""
- for {
- log.Print("Try to get media feed ...")
- timline, err := insta.Timeline(tmpNextMaxID)
- timline.AutoLoadMore = true
- if err != nil {
- panic(err)
- }
- log.Printf("Get Media with length : %d", len(timline.Items))
- for index, item := range timline.Items {
- if !item.HasLiked {
- message := "[" + item.ID + "] @" + item.User.Username + ""
- log.Printf("[%d] Request Sent To -> %s", index, message)
- wg.Add(1)
- go func(wg *sync.WaitGroup, id, username string, index int) {
- defer wg.Done()
- _, err := insta.Like(item.ID)
- liked := true
- if err != nil {
- liked = false
- }
- log.Printf("[%d] Receive Response From <- [%s] @%s (LIKED: %t)", index, id, username, liked)
- }(&wg, item.ID, item.User.Username, index)
- } else {
- log.Printf("[%d] SKIPPED <-> [%s] @%s (HASLIKED: %t)", index, item.ID, item.User.Username, item.HasLiked)
- }
- if *goroutinePtr != 0 {
- if mod := index % *goroutinePtr; mod == 0 {
- wg.Wait()
- }
- }
- }
- log.Printf("IsMoreAvaible: %t", timline.MoreAvailable)
- if timline.MoreAvailable {
- tmpNextMaxID = timline.NextMaxID
- } else {
- tmpNextMaxID = ""
- }
- r := *sleepPtr
- if *sleepPtr == 0 {
- r = random(1, 4)
- }
- sleep := time.Duration(r) * time.Minute
- log.Printf("Sleep For %v", sleep)
- time.Sleep(sleep)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement