mirror of
https://github.com/arnaucube/argos.git
synced 2026-02-07 02:56:41 +01:00
half implemented followRandom and UnfollowAll
This commit is contained in:
23
README.md
23
README.md
@@ -1,27 +1,34 @@
|
|||||||
# goTweetsAnalyze
|
# argos
|
||||||
twitter analyzer written in Go lang, insipired on the Python tweets_analyzer by x0rz https://github.com/x0rz/tweets_analyzer
|
twitter analyzer written in Go lang, insipired on the Python tweets_analyzer by x0rz https://github.com/x0rz/tweets_analyzer
|
||||||
|
|
||||||
#### Argus Panoptes
|
#### Argos Panoptes
|
||||||
https://en.wikipedia.org/wiki/Argus_Panoptes
|
https://en.wikipedia.org/wiki/Argus_Panoptes
|
||||||
|
|
||||||
https://en.wikipedia.org/wiki/Panopticon
|
https://en.wikipedia.org/wiki/Panopticon
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
[under development]
|
[under development]
|
||||||
|
|
||||||
#### Current features
|
#### Current features
|
||||||
- User analyzer
|
1. User analyzer
|
||||||
- word count
|
- word count
|
||||||
- weekly activity distribution
|
- weekly activity distribution
|
||||||
- daily activity distribution
|
- daily activity distribution
|
||||||
- devices used
|
- devices used
|
||||||
- Delete Tweets and Favs
|
- hashtags most used count
|
||||||
|
- user mentions coun [not implemented yet]
|
||||||
|
2. Delete Tweets and Favs
|
||||||
|
3. Unfollow all [not implemented yet]
|
||||||
|
4. Random follow [not implemented yet]
|
||||||
|
- selects n number of accounts to follow, and follows n random accounts
|
||||||
|
5. Random tweet [not implemented yet]
|
||||||
|
- post a tweet with random content (from newspaper)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
needs a twitterConfig.json file on the /build folder with the content:
|
needs a twitterConfig.json file on the /build folder with the content:
|
||||||
```
|
```
|
||||||
@@ -39,6 +46,6 @@ to run it:
|
|||||||
- open terminal
|
- open terminal
|
||||||
- execute the script with:
|
- execute the script with:
|
||||||
```
|
```
|
||||||
./argus
|
./argos
|
||||||
```
|
```
|
||||||
- follow the instructions that appears on the terminal
|
- follow the instructions that appears on the terminal
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
Binary file not shown.
@@ -10,13 +10,16 @@ import (
|
|||||||
"github.com/dghubble/go-twitter/twitter"
|
"github.com/dghubble/go-twitter/twitter"
|
||||||
)
|
)
|
||||||
|
|
||||||
func getAndPrintUserData(client *twitter.Client) *twitter.User {
|
func getUserData(client *twitter.Client) *twitter.User {
|
||||||
// Verify Credentials
|
// Verify Credentials
|
||||||
verifyParams := &twitter.AccountVerifyParams{
|
verifyParams := &twitter.AccountVerifyParams{
|
||||||
SkipStatus: twitter.Bool(true),
|
SkipStatus: twitter.Bool(true),
|
||||||
IncludeEmail: twitter.Bool(true),
|
IncludeEmail: twitter.Bool(true),
|
||||||
}
|
}
|
||||||
user, _, _ := client.Accounts.VerifyCredentials(verifyParams)
|
user, _, _ := client.Accounts.VerifyCredentials(verifyParams)
|
||||||
|
return user
|
||||||
|
}
|
||||||
|
func printUserData(user *twitter.User) {
|
||||||
fmt.Print("username: ")
|
fmt.Print("username: ")
|
||||||
c.Cyan(user.Name + " @" + user.ScreenName)
|
c.Cyan(user.Name + " @" + user.ScreenName)
|
||||||
if user.Email != "" {
|
if user.Email != "" {
|
||||||
@@ -27,11 +30,11 @@ func getAndPrintUserData(client *twitter.Client) *twitter.User {
|
|||||||
fmt.Print("Location: ")
|
fmt.Print("Location: ")
|
||||||
c.Red(user.Location)
|
c.Red(user.Location)
|
||||||
}
|
}
|
||||||
c.Cyan("user created on: " + user.CreatedAt)
|
fmt.Print("user created on: ")
|
||||||
|
c.Cyan(user.CreatedAt)
|
||||||
|
|
||||||
fmt.Print("number of tweets: ")
|
fmt.Print("number of tweets: ")
|
||||||
c.Purple(strconv.Itoa(user.StatusesCount))
|
c.Purple(strconv.Itoa(user.StatusesCount))
|
||||||
return user
|
|
||||||
}
|
}
|
||||||
func deleteTweets(client *twitter.Client, user *twitter.User) {
|
func deleteTweets(client *twitter.Client, user *twitter.User) {
|
||||||
tweets := getTweets(client, user.ScreenName, iterationsCount)
|
tweets := getTweets(client, user.ScreenName, iterationsCount)
|
||||||
@@ -45,14 +48,12 @@ func deleteTweets(client *twitter.Client, user *twitter.User) {
|
|||||||
}
|
}
|
||||||
c.Red("Deleted " + strconv.Itoa(count) + " tweets")
|
c.Red("Deleted " + strconv.Itoa(count) + " tweets")
|
||||||
}
|
}
|
||||||
func deleteFavs(client *twitter.Client) {
|
func optionDeleteTweets(client *twitter.Client) {
|
||||||
|
|
||||||
}
|
|
||||||
func deleteTweetsAndFavs(client *twitter.Client) {
|
|
||||||
fmt.Println("Getting user data...")
|
fmt.Println("Getting user data...")
|
||||||
user := getAndPrintUserData(client)
|
user := getUserData(client)
|
||||||
|
printUserData(user)
|
||||||
fmt.Println("")
|
fmt.Println("")
|
||||||
fmt.Println("Are you sure you want to delete you tweets? [y/n]")
|
c.Red("Are you sure you want to delete you tweets? [y/n]")
|
||||||
newcommand := bufio.NewReader(os.Stdin)
|
newcommand := bufio.NewReader(os.Stdin)
|
||||||
answer, _ := newcommand.ReadString('\n')
|
answer, _ := newcommand.ReadString('\n')
|
||||||
answer = strings.TrimSpace(answer)
|
answer = strings.TrimSpace(answer)
|
||||||
@@ -60,8 +61,8 @@ func deleteTweetsAndFavs(client *twitter.Client) {
|
|||||||
case "y":
|
case "y":
|
||||||
fmt.Println("ok, you are sure")
|
fmt.Println("ok, you are sure")
|
||||||
deleteTweets(client, user)
|
deleteTweets(client, user)
|
||||||
deleteFavs(client)
|
user = getUserData(client)
|
||||||
user = getAndPrintUserData(client)
|
printUserData(user)
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
fmt.Println("Operation cancelled")
|
fmt.Println("Operation cancelled")
|
||||||
68
followRandom.go
Normal file
68
followRandom.go
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/dghubble/go-twitter/twitter"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*func getUserByScreenName(ScreenName string) *twitter.User{
|
||||||
|
|
||||||
|
|
||||||
|
}*/
|
||||||
|
func getUserFollower(client *twitter.Client) string {
|
||||||
|
ScreenName := "username"
|
||||||
|
return ScreenName
|
||||||
|
}
|
||||||
|
|
||||||
|
func followUser(client *twitter.Client, ScreenName string) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func followRandom(client *twitter.Client, nFollow int, ScreenName string) {
|
||||||
|
fmt.Println("Starting to follow " + strconv.Itoa(nFollow) + " users")
|
||||||
|
|
||||||
|
for i := 0; i < nFollow; i++ {
|
||||||
|
ScreenName = getUserFollower(client)
|
||||||
|
followUser(client, ScreenName)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func optionFollowRandom(client *twitter.Client) {
|
||||||
|
c.Red("how many accounts to follow?")
|
||||||
|
newcommand := bufio.NewReader(os.Stdin)
|
||||||
|
answer, _ := newcommand.ReadString('\n')
|
||||||
|
answer = strings.TrimSpace(answer)
|
||||||
|
fmt.Print("Number of users to follow: ")
|
||||||
|
c.Purple(answer)
|
||||||
|
nFollow, err := strconv.Atoi(answer)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("incorrect entry, need a positive number")
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Print("entry @username of a user, to get a 1st user to follow, that will be a user that the 1st user is following, and the 2nd user will be a user that the 3rd user is following): @")
|
||||||
|
newcommand = bufio.NewReader(os.Stdin)
|
||||||
|
firstScreenName, _ := newcommand.ReadString('\n')
|
||||||
|
firstScreenName = strings.TrimSpace(firstScreenName)
|
||||||
|
fmt.Print("first user to follow: @")
|
||||||
|
c.Purple(answer)
|
||||||
|
|
||||||
|
c.Red("Are you sure? [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")
|
||||||
|
followRandom(client, nFollow, firstScreenName)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
fmt.Println("Operation cancelled")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -32,7 +32,7 @@ func getTweets(client *twitter.Client, username string, iterations int) []twitte
|
|||||||
|
|
||||||
return tweets
|
return tweets
|
||||||
}
|
}
|
||||||
func getUserTweets(client *twitter.Client) {
|
func optionGetUserTweets(client *twitter.Client) {
|
||||||
newcommand := bufio.NewReader(os.Stdin)
|
newcommand := bufio.NewReader(os.Stdin)
|
||||||
fmt.Print("enter username: @")
|
fmt.Print("enter username: @")
|
||||||
username, _ := newcommand.ReadString('\n')
|
username, _ := newcommand.ReadString('\n')
|
||||||
|
|||||||
22
main.go
22
main.go
@@ -13,10 +13,10 @@ const minNumHashtag = 2
|
|||||||
const iterationsCount = 3
|
const iterationsCount = 3
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
c.DarkGray("Argus Panoptes")
|
c.Yellow("Argos Panoptes")
|
||||||
fmt.Println("---------------")
|
fmt.Println("---------------")
|
||||||
c.Cyan("argus initialized")
|
c.Cyan("argos initialized")
|
||||||
c.Purple("https://github.com/arnaucode/argus")
|
c.Purple("https://github.com/arnaucode/argos")
|
||||||
fmt.Println("version " + version)
|
fmt.Println("version " + version)
|
||||||
fmt.Println("Reading twitterConfig.json file")
|
fmt.Println("Reading twitterConfig.json file")
|
||||||
client := readConfigTokensAndConnect()
|
client := readConfigTokensAndConnect()
|
||||||
@@ -25,7 +25,9 @@ func main() {
|
|||||||
fmt.Print("Please select command number")
|
fmt.Print("Please select command number")
|
||||||
options := `
|
options := `
|
||||||
1 - Analyze username
|
1 - Analyze username
|
||||||
2 - Delete Tweets
|
2 - Delete Tweets & Rretweets
|
||||||
|
3 - Unfollow all
|
||||||
|
4 - Follow random
|
||||||
0 - Exit script
|
0 - Exit script
|
||||||
option to select: `
|
option to select: `
|
||||||
for {
|
for {
|
||||||
@@ -37,11 +39,19 @@ option to select: `
|
|||||||
switch option {
|
switch option {
|
||||||
case "1":
|
case "1":
|
||||||
fmt.Println("selected 1 - Analyze username")
|
fmt.Println("selected 1 - Analyze username")
|
||||||
getUserTweets(client)
|
optionGetUserTweets(client)
|
||||||
break
|
break
|
||||||
case "2":
|
case "2":
|
||||||
fmt.Println("selected 2 - Delete Tweets")
|
fmt.Println("selected 2 - Delete Tweets")
|
||||||
deleteTweetsAndFavs(client)
|
optionDeleteTweets(client)
|
||||||
|
break
|
||||||
|
case "3":
|
||||||
|
fmt.Println("selected 3 - Unfollow all")
|
||||||
|
optionUnfollowAll(client)
|
||||||
|
break
|
||||||
|
case "4":
|
||||||
|
fmt.Println("selected 4 - Follow random")
|
||||||
|
optionFollowRandom(client)
|
||||||
break
|
break
|
||||||
case "0":
|
case "0":
|
||||||
fmt.Println("selected 0 - exit script")
|
fmt.Println("selected 0 - exit script")
|
||||||
|
|||||||
44
unfollowAll.go
Normal file
44
unfollowAll.go
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/dghubble/go-twitter/twitter"
|
||||||
|
)
|
||||||
|
|
||||||
|
func printUserFollowsData(user *twitter.User) {
|
||||||
|
fmt.Print("followers: ")
|
||||||
|
c.Cyan(strconv.Itoa(user.FollowersCount))
|
||||||
|
fmt.Print("following: ")
|
||||||
|
c.Cyan(strconv.Itoa(user.FriendsCount))
|
||||||
|
}
|
||||||
|
func unfollowFollowingUsers(client *twitter.Client, user *twitter.User) {
|
||||||
|
following, _, _ := client.Friends.List(&twitter.FriendListParams{
|
||||||
|
ScreenName: user.ScreenName,
|
||||||
|
Count: 200,
|
||||||
|
})
|
||||||
|
fmt.Println(following)
|
||||||
|
}
|
||||||
|
func optionUnfollowAll(client *twitter.Client) {
|
||||||
|
fmt.Println("Getting user data...")
|
||||||
|
user := getUserData(client)
|
||||||
|
printUserFollowsData(user)
|
||||||
|
fmt.Println("")
|
||||||
|
c.Red("Are you sure you want to unfollow all? [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")
|
||||||
|
unfollowFollowingUsers(client, user)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
fmt.Println("Operation cancelled")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user