argos/optionAnalyzeTweet.go
optionAnalyzeTweet.goRaw
1package main
2
3import (
4 "bufio"
5 "fmt"
6 "os"
7 "strconv"
8 "strings"
9
10 "github.com/dghubble/go-twitter/twitter"
11)
12
13type DateRT struct {
14 Retweets []twitter.Tweet
15}
16
17func optionAnalyzeTweet(client *twitter.Client) {
18 newcommand := bufio.NewReader(os.Stdin)
19 fmt.Print("enter link of the tweet: ")
20 link, _ := newcommand.ReadString('\n')
21 link = strings.TrimSpace(link)
22 fmt.Print("link selected: ")
23 c.Cyan(link)
24 fmt.Println("-----------------------")
25 linkParam := strings.Split(link, "/")
26 tweetIdStr := linkParam[len(linkParam)-1]
27 c.Cyan(tweetIdStr)
28 tweetId, err := strconv.ParseInt(tweetIdStr, 10, 64)
29 if err != nil {
30 fmt.Println(err)
31 }
32
33 tweet, _, err := client.Statuses.Show(tweetId, nil)
34 if err != nil {
35 fmt.Println(err)
36 }
37 fmt.Print("tweet text: ")
38 c.Yellow(tweet.Text)
39
40 retweets := getRetweets(client, tweetId)
41
42 var dates = make(map[string]DateRT)
43 for _, retweet := range retweets {
44 retws := dates[retweet.CreatedAt].Retweets
45 retws = append(retws, retweet)
46 var currDate DateRT
47 currDate.Retweets = retws
48 dates[retweet.CreatedAt] = currDate
49 }
50 fmt.Print("total of: ")
51 fmt.Println(len(retweets))
52
53 for k, v := range dates {
54 printDateRT(k, v)
55 }
56 c.Purple("Warning: Twitter API only gives the last 100 Retweets")
57}
58func printDateRT(k string, v DateRT) {
59 fmt.Print("\x1b[32;1m" + k + "\x1b[0m")
60 fmt.Println(" " + strconv.Itoa(len(v.Retweets)) + " Retweets at this date:")
61 for _, retweet := range v.Retweets {
62 source := strings.Split(strings.Split(retweet.Source, ">")[1], "<")[0]
63 if len(v.Retweets) > 1 {
64 fmt.Print("\x1b[31;1m") //red
65 }
66 fmt.Print(" @" + retweet.User.ScreenName)
67 fmt.Print("\x1b[0m") //defaultColor
68 fmt.Println(", source: " + source)
69
70 }
71
72}