arnaucube
arnaucube/argosPublic Self-hosted repository
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}