@ -0,0 +1,86 @@ |
|||||
|
package main |
||||
|
|
||||
|
import ( |
||||
|
"fmt" |
||||
|
"strconv" |
||||
|
|
||||
|
"github.com/dghubble/go-twitter/twitter" |
||||
|
) |
||||
|
|
||||
|
func getTweets(client *twitter.Client, username string, iterations int) []twitter.Tweet { |
||||
|
var tweets []twitter.Tweet |
||||
|
var maxid int64 |
||||
|
for i := 0; i < iterations; i++ { |
||||
|
tweetsRaw, _, _ := client.Timelines.UserTimeline(&twitter.UserTimelineParams{ |
||||
|
ScreenName: username, |
||||
|
Count: 200, |
||||
|
MaxID: maxid, |
||||
|
}) |
||||
|
//if no tweets, stop getting tweets
|
||||
|
if len(tweetsRaw) == 0 { |
||||
|
break |
||||
|
} |
||||
|
maxid = tweetsRaw[len(tweetsRaw)-1].ID |
||||
|
|
||||
|
for _, v := range tweetsRaw { |
||||
|
tweets = append(tweets, v) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return tweets |
||||
|
} |
||||
|
|
||||
|
func getFavs(client *twitter.Client, username string, iterations int) []twitter.Tweet { |
||||
|
var tweets []twitter.Tweet |
||||
|
var maxid int64 |
||||
|
for i := 0; i < iterations; i++ { |
||||
|
tweetsRaw, _, _ := client.Favorites.List(&twitter.FavoriteListParams{ |
||||
|
ScreenName: username, |
||||
|
Count: 200, |
||||
|
MaxID: maxid, |
||||
|
}) |
||||
|
|
||||
|
//if no tweets, stop getting tweets
|
||||
|
if len(tweetsRaw) == 0 { |
||||
|
break |
||||
|
} |
||||
|
maxid = tweetsRaw[len(tweetsRaw)-1].ID |
||||
|
|
||||
|
for _, v := range tweetsRaw { |
||||
|
tweets = append(tweets, v) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return tweets |
||||
|
} |
||||
|
|
||||
|
func getUserData(client *twitter.Client) *twitter.User { |
||||
|
// Verify Credentials
|
||||
|
verifyParams := &twitter.AccountVerifyParams{ |
||||
|
SkipStatus: twitter.Bool(true), |
||||
|
IncludeEmail: twitter.Bool(true), |
||||
|
} |
||||
|
user, _, _ := client.Accounts.VerifyCredentials(verifyParams) |
||||
|
return user |
||||
|
} |
||||
|
|
||||
|
func printUserData(user *twitter.User) { |
||||
|
fmt.Print("username: ") |
||||
|
c.Cyan(user.Name + " @" + user.ScreenName) |
||||
|
if user.Email != "" { |
||||
|
fmt.Print("Email ") |
||||
|
c.Red(user.Email) |
||||
|
} |
||||
|
if user.Location != "" { |
||||
|
fmt.Print("Location: ") |
||||
|
c.Red(user.Location) |
||||
|
} |
||||
|
fmt.Print("user created on: ") |
||||
|
c.Cyan(user.CreatedAt) |
||||
|
|
||||
|
fmt.Print("number of tweets: ") |
||||
|
c.Purple(strconv.Itoa(user.StatusesCount)) |
||||
|
|
||||
|
fmt.Print("number of favs: ") |
||||
|
c.Purple(strconv.Itoa(user.FavouritesCount)) |
||||
|
} |
@ -0,0 +1,44 @@ |
|||||
|
package main |
||||
|
|
||||
|
import ( |
||||
|
"bufio" |
||||
|
"fmt" |
||||
|
"os" |
||||
|
"strconv" |
||||
|
"strings" |
||||
|
|
||||
|
"github.com/dghubble/go-twitter/twitter" |
||||
|
) |
||||
|
|
||||
|
func deleteFavs(client *twitter.Client, user *twitter.User) { |
||||
|
tweets := getFavs(client, user.ScreenName, iterationsCount) |
||||
|
count := 0 |
||||
|
for _, v := range tweets { |
||||
|
c.Red("deleting: [id: " + v.IDStr + "] " + v.Text) |
||||
|
deleted, _, _ := client.Favorites.Destroy(&twitter.FavoriteDestroyParams{ |
||||
|
ID: v.ID, |
||||
|
}) |
||||
|
c.Green("DELETED: [id: " + deleted.IDStr + "] " + deleted.Text) |
||||
|
count++ |
||||
|
} |
||||
|
c.Red("Deleted " + strconv.Itoa(count) + " favs") |
||||
|
} |
||||
|
|
||||
|
func optionDeleteFavs(client *twitter.Client) { |
||||
|
c.Red("Are you sure you want to delete your favs? [y/n]") |
||||
|
newcommand := bufio.NewReader(os.Stdin) |
||||
|
answer, _ := newcommand.ReadString('\n') |
||||
|
answer = strings.TrimSpace(answer) |
||||
|
switch answer { |
||||
|
case "y": |
||||
|
fmt.Println("ok, you are sure") |
||||
|
user := getUserData(client) |
||||
|
deleteFavs(client, user) |
||||
|
user = getUserData(client) |
||||
|
printUserData(user) |
||||
|
break |
||||
|
default: |
||||
|
fmt.Println("Operation cancelled") |
||||
|
break |
||||
|
} |
||||
|
} |