argos/analyzeDates.go
analyzeDates.goRaw
1package main
2
3import (
4 "fmt"
5 "sort"
6 "strconv"
7 "strings"
8
9 "github.com/dghubble/go-twitter/twitter"
10)
11
12var week = [7]string{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}
13
14func printBar(n int, lowest int, highest int) {
15 bar := int((float64(n) / float64(highest)) * 50)
16
17 if n == lowest {
18 fmt.Print("\x1b[36;1m")
19 }
20 if n == highest {
21 fmt.Print("\x1b[31;1m")
22 }
23
24 for i := 0; i < bar; i++ {
25 fmt.Print("█")
26 }
27
28 if bar == 0 && n > 0 {
29 fmt.Print("█")
30 }
31 if n == lowest {
32 fmt.Print(" lowest")
33 }
34 if n == highest {
35 fmt.Print(" highest")
36 }
37 fmt.Print("\x1b[0m")
38 fmt.Println(" ")
39}
40func getHigherValueOfMap(m map[string]int) (int, int) {
41 var values []int
42 for _, v := range m {
43 values = append(values, v)
44 }
45 sort.Ints(values)
46 //returns lower, higher values
47 return values[0], values[len(values)-1]
48}
49
50func printDays(days map[string]int) {
51 lowest, highest := getHigherValueOfMap(days)
52
53 for i := 0; i < len(week); i++ {
54 fmt.Print(week[i] + " - " + strconv.Itoa(days[week[i]]) + "tw")
55 fmt.Print(" ")
56 printBar(days[week[i]], lowest, highest)
57 }
58}
59func analyzeDays(tweets []twitter.Tweet) {
60 var days = make(map[string]int)
61 for _, v := range tweets {
62 //fmt.Println(v.CreatedAt)
63 day := strings.Split(v.CreatedAt, " ")[0]
64 if _, ok := days[day]; ok {
65 days[day] = days[day] + 1
66 } else {
67 days[day] = 1
68 }
69 }
70 printDays(days)
71}
72
73func printHours(hours map[string]int) {
74 lowest, highest := getHigherValueOfMap(hours)
75
76 for i := 0; i < 24; i++ {
77 var h string
78 if i < 10 {
79 h = "0" + strconv.Itoa(i)
80 } else {
81 h = strconv.Itoa(i)
82 }
83 fmt.Print(h + "h - " + strconv.Itoa(hours[h]) + "tw")
84 fmt.Print(" ")
85 printBar(hours[h], lowest, highest)
86 }
87}
88func analyzeHours(tweets []twitter.Tweet) {
89 var hours = make(map[string]int)
90 for _, v := range tweets {
91 time := strings.Split(v.CreatedAt, " ")[3]
92 hour := strings.Split(time, ":")[0]
93 if _, ok := hours[hour]; ok {
94 hours[hour] = hours[hour] + 1
95 } else {
96 hours[hour] = 1
97 }
98 }
99 printHours(hours)
100}
101
102func analyzeDates(tweets []twitter.Tweet) {
103 fmt.Println("Weekly activity distribution (per day)")
104 analyzeDays(tweets)
105 fmt.Println(" ")
106 fmt.Println("Daily activity distribution (per hour)")
107 analyzeHours(tweets)
108}