103 lines
2.7 KiB
Go
103 lines
2.7 KiB
Go
package eve
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// GetActiveChannels will parse a list of files for ones with today's timestamps
|
|
// This really just returns a list of human-readable channel names so
|
|
// there will be some eve specific logic to guess the channel name
|
|
// ..also it'll ignore "Private Chats" and any without todays YYYYMMDD timestamp
|
|
func GetActiveChannels(fileList []string) []string {
|
|
|
|
var chanList []string
|
|
var candidateFiles []string
|
|
t := time.Now()
|
|
|
|
layout := "20060102"
|
|
todayString := fmt.Sprint(t.Format(layout))
|
|
|
|
for _, file := range fileList {
|
|
if !strings.Contains(file, "Corp") {
|
|
if !strings.Contains(file, "Alliance") {
|
|
if !strings.Contains(file, "Local") {
|
|
if !strings.Contains(file, "Private Chat") {
|
|
if strings.Contains(file, todayString) {
|
|
candidateFiles = append(candidateFiles, file)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
for _, file := range candidateFiles {
|
|
fmt.Println(file)
|
|
chanList = append(chanList, chatNameFromFile(file))
|
|
}
|
|
|
|
fmt.Printf("searched %v files.. found %v chanels\n", len(fileList), len(chanList))
|
|
|
|
return chanList
|
|
}
|
|
|
|
// IsCurrentLog will return True if the logfile has a timestamp that looks like
|
|
// Today or Yesterdays (there is an assumption that the eve client won't be run for more than 24hrs strait)
|
|
func IsCurrentLog(file string) bool {
|
|
timeToday := time.Now()
|
|
timeYesterday := time.Now().Add(-24 * time.Hour)
|
|
layout := "20060102"
|
|
todayString := fmt.Sprint(timeToday.Format(layout))
|
|
yesterdayString := fmt.Sprint(timeYesterday.Format(layout))
|
|
fileNameSplit := strings.Split(file, "/")
|
|
fileName := fileNameSplit[len(fileNameSplit)-1] // returns file name without any "/" prefixes
|
|
|
|
if strings.Contains(fileName, todayString) {
|
|
return true
|
|
}
|
|
if strings.Contains(fileName, yesterdayString) {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func chatNameFromFile(fname string) string {
|
|
a := strings.Split(fname, "/")
|
|
b := a[len(a)-1] // returns file name without any "/" prefixes
|
|
|
|
// create a rune of the file name only
|
|
c := []rune(b)
|
|
|
|
// count how many characters.. minus the 20 at the end
|
|
// EG:
|
|
// "Rookie Help_20191218_161504.txt"
|
|
// becomes: "Rookie Help"
|
|
chars := len(c) - 20
|
|
myShortString := string(c[0:chars])
|
|
|
|
return myShortString
|
|
}
|
|
|
|
// TODO: run a uniq pass on the list of channels maybe
|
|
//func unique(intSlice []int) []int {
|
|
// keys := make(map[int]bool)
|
|
// list := []int{}
|
|
// for _, entry := range intSlice {
|
|
// if _, value := keys[entry]; !value {
|
|
// keys[entry] = true
|
|
// list = append(list, entry)
|
|
// }
|
|
// }
|
|
// return list
|
|
//}
|
|
//
|
|
//func uniqueTest() {
|
|
// intSlice := []int{1,5,3,6,9,9,4,2,3,1,5}
|
|
// fmt.Println(intSlice)
|
|
// uniqueSlice := unique(intSlice)
|
|
// fmt.Println(uniqueSlice)
|
|
//}
|