Skip to content

Instantly share code, notes, and snippets.

@m-mizutani
Created October 12, 2014 03:03
Show Gist options
  • Save m-mizutani/29851ec344729153e3dd to your computer and use it in GitHub Desktop.
Save m-mizutani/29851ec344729153e3dd to your computer and use it in GitHub Desktop.
package main
import (
"bufio"
"encoding/csv"
"fmt"
"io"
"os"
"regexp"
"strconv"
"strings"
)
func main() {
var fp *os.File
var err error
if len(os.Args) < 2 {
fp = os.Stdin
} else {
fmt.Printf(">> file: %s\n", os.Args[1])
fp, err = os.Open(os.Args[1])
if err != nil {
panic(err)
}
defer fp.Close()
}
reader := bufio.NewReaderSize(fp, 4096)
enc_flag := false
datetime_re, _ := regexp.Compile(`^(\d+)/(\d+) (\d{2}:\d{2}:\d{2})\.\d+`)
var wd *bufio.Writer
var fd *os.File
for {
raw, _, err := reader.ReadLine()
line := string(raw)
rec := strings.Split(line, " ")
if len(rec) > 1 {
ev := strings.Split(rec[1], ",")
if ev[0] == "ENCOUNTER_START" {
enc_flag = true
csvReader := csv.NewReader(strings.NewReader(line))
rec, _ = csvReader.Read()
raid_name := strings.Replace(rec[2], " ", "_", -1)
raid_name = strings.Replace(raid_name, "'", "", -1)
res := datetime_re.FindAllStringSubmatch(rec[0], -1)
hms := strings.Split(res[0][3], ":")
mon, _ := strconv.Atoi(res[0][1])
day, _ := strconv.Atoi(res[0][2])
fname := fmt.Sprintf("WoWCombatLog_%02d%02d_%s%s%s_%s.txt",
mon, day, hms[0], hms[1], hms[2], raid_name)
fd, _ = os.Create(fname)
wd = bufio.NewWriter(fd)
fmt.Println(fname)
// fd, err := os.Create()
}
if enc_flag {
wd.WriteString(line)
wd.WriteString("\n")
wd.Flush()
// fmt.Println(line)
}
if ev[0] == "ENCOUNTER_END" {
enc_flag = false
fd.Close()
}
}
if err == io.EOF {
break
} else if err != nil {
panic(err)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment