|
|
package main
import ( "bufio" "fmt" "os" "strconv" "strings"
"github.com/dghubble/go-twitter/twitter" )
type DateRT struct { Retweets []twitter.Tweet }
func optionAnalyzeTweet(client *twitter.Client) { newcommand := bufio.NewReader(os.Stdin) fmt.Print("enter link of the tweet: ") link, _ := newcommand.ReadString('\n') link = strings.TrimSpace(link) fmt.Print("link selected: ") c.Cyan(link) fmt.Println("-----------------------") linkParam := strings.Split(link, "/") tweetIdStr := linkParam[len(linkParam)-1] c.Cyan(tweetIdStr) tweetId, err := strconv.ParseInt(tweetIdStr, 10, 64) if err != nil { fmt.Println(err) }
tweet, _, err := client.Statuses.Show(tweetId, nil) if err != nil { fmt.Println(err) } fmt.Print("tweet text: ") c.Yellow(tweet.Text)
retweets := getRetweets(client, tweetId)
var dates = make(map[string]DateRT) for _, retweet := range retweets { retws := dates[retweet.CreatedAt].Retweets retws = append(retws, retweet) var currDate DateRT currDate.Retweets = retws dates[retweet.CreatedAt] = currDate } fmt.Print("total of: ") fmt.Println(len(retweets))
for k, v := range dates { printDateRT(k, v) } c.Purple("Warning: Twitter API only gives the last 100 Retweets") } func printDateRT(k string, v DateRT) { fmt.Print("\x1b[32;1m" + k + "\x1b[0m") fmt.Println(" " + strconv.Itoa(len(v.Retweets)) + " Retweets at this date:") for _, retweet := range v.Retweets { source := strings.Split(strings.Split(retweet.Source, ">")[1], "<")[0] if len(v.Retweets) > 1 { fmt.Print("\x1b[31;1m") //red
} fmt.Print(" @" + retweet.User.ScreenName) fmt.Print("\x1b[0m") //defaultColor
fmt.Println(", source: " + source)
}
}
|