arnaucube
arnaucube/argosPublic Self-hosted repository
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)) * 40)
 16
 17	if n == lowest {
 18		fmt.Print("\x1b[36;1m") //cyan
 19	}
 20	if n == highest {
 21		fmt.Print("\x1b[31;1m") //red
 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") //defaultColor
 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}