Show reply statistics

This commit is contained in:
Christian Muehlhaeuser 2018-11-22 06:48:21 +01:00
parent 88423e10dc
commit 45a29f3be6
No known key found for this signature in database
GPG Key ID: 3CF9FA45CA1EBB7E
2 changed files with 29 additions and 5 deletions

View File

@ -18,6 +18,7 @@ import (
var ( var (
client *mastodon.Client client *mastodon.Client
self *mastodon.Account
topN = flag.Int("top", 10, "shows the top N items in each category") topN = flag.Int("top", 10, "shows the top N items in each category")
maxToots = flag.Int("recent", 0, "only account for the N most recent toots (excl replies & boosts)") maxToots = flag.Int("recent", 0, "only account for the N most recent toots (excl replies & boosts)")
@ -125,9 +126,10 @@ func initClient() {
func main() { func main() {
flag.Parse() flag.Parse()
initClient() initClient()
self, err := client.GetAccountCurrentUser(context.Background())
var err error
self, err = client.GetAccountCurrentUser(context.Background())
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -136,7 +138,7 @@ func main() {
if err != nil { if err != nil {
panic(err) panic(err)
} }
self := accounts[0] self = accounts[0]
*/ */
stats := &stats{ stats := &stats{
@ -148,6 +150,7 @@ func main() {
Replies: make(map[string]*tootStat), Replies: make(map[string]*tootStat),
Mentions: make(map[string]int64), Mentions: make(map[string]int64),
Boosts: make(map[string]int64), Boosts: make(map[string]int64),
Responses: make(map[string]int64),
} }
pb := &goprogressbar.ProgressBar{ pb := &goprogressbar.ProgressBar{
Text: fmt.Sprintf("Loading toots for %s", self.Username), Text: fmt.Sprintf("Loading toots for %s", self.Username),

View File

@ -39,6 +39,7 @@ type stats struct {
Replies map[string]*tootStat Replies map[string]*tootStat
Mentions map[string]int64 Mentions map[string]int64
Boosts map[string]int64 Boosts map[string]int64
Responses map[string]int64
} }
func parseToot(status *mastodon.Status, stats *stats) error { func parseToot(status *mastodon.Status, stats *stats) error {
@ -61,7 +62,15 @@ func parseToot(status *mastodon.Status, stats *stats) error {
if err != nil { if err != nil {
panic(err) panic(err)
} }
replies = int64(len(contexts.Descendants))
// handle replies for this status
for _, d := range contexts.Descendants {
if d.Account.ID == self.ID {
continue
}
replies++
stats.Responses[d.Account.Acct]++
}
for _, t := range status.Tags { for _, t := range status.Tags {
tag := strings.ToLower(t.Name) tag := strings.ToLower(t.Name)
@ -203,10 +212,11 @@ func printTootTable(cols []string, emptyText string, toots []string, tootStats [
} }
func printAccountStats(stats *stats) { func printAccountStats(stats *stats) {
var likes, boosts int64 var likes, boosts, replies int64
for _, t := range stats.Toots { for _, t := range stats.Toots {
likes += t.Likes likes += t.Likes
boosts += t.Boosts boosts += t.Boosts
replies += t.Replies
} }
fmt.Printf("Total toots: %d (excluding replies & boosts)\n", len(stats.Toots)) fmt.Printf("Total toots: %d (excluding replies & boosts)\n", len(stats.Toots))
@ -225,6 +235,9 @@ func printAccountStats(stats *stats) {
fmt.Printf("Boosts per toot: %.2f (total boosts: %d)\n", fmt.Printf("Boosts per toot: %.2f (total boosts: %d)\n",
float64(boosts)/float64(len(stats.Toots)), float64(boosts)/float64(len(stats.Toots)),
boosts) boosts)
fmt.Printf("Replies per toot: %.2f (total replies: %d)\n",
float64(replies)/float64(len(stats.Toots)),
replies)
fmt.Println() fmt.Println()
} }
@ -244,6 +257,14 @@ func printInteractionStats(stats *stats) {
printTable([]string{"Users you boosted most", "Interactions"}, printTable([]string{"Users you boosted most", "Interactions"},
"No interactions found.", "No interactions found.",
ss) ss)
ss = []kv{}
for k, v := range stats.Responses {
ss = append(ss, kv{k, v})
}
printTable([]string{"Users that responded most", "Interactions"},
"No interactions found.",
ss)
} }
func printTootStats(stats *stats) { func printTootStats(stats *stats) {