You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
1.7 KiB

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