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)
|
|
|
|
}
|
|
|
|
}
|