aboutsummaryrefslogtreecommitdiff
path: root/tools/importer/ACDReader.go
diff options
context:
space:
mode:
authorrtz12 <koenig@fagott.pw>2015-12-28 18:56:16 (UTC)
committerrtz12 <koenig@fagott.pw>2015-12-28 18:56:16 (UTC)
commit23f73a60a4cf4621dd5951bfe6601a8c154cad07 (patch)
tree91604c8fb001c93f0a3e021624d1b2ad22d7e24f /tools/importer/ACDReader.go
parent95d733307cc87610101469953e61435dbcbeb052 (diff)
Grilimporter hinzugefuegt
Diffstat (limited to 'tools/importer/ACDReader.go')
-rw-r--r--tools/importer/ACDReader.go81
1 files changed, 81 insertions, 0 deletions
diff --git a/tools/importer/ACDReader.go b/tools/importer/ACDReader.go
new file mode 100644
index 0000000..694087e
--- /dev/null
+++ b/tools/importer/ACDReader.go
@@ -0,0 +1,81 @@
1package main
2
3import (
4 "encoding/json"
5 "fmt"
6 "io/ioutil"
7 "os"
8 "regexp"
9 "strconv"
10 "strings"
11
12 "fagott.pw/grilist/modules/grils"
13)
14
15var tagRegex = regexp.MustCompile(`\<a.*?\>(.+)\<\/a\>`)
16
17type ACDReader struct{}
18
19func ifErrExit(err error) {
20 if err != nil {
21 fmt.Fprintf(os.Stderr, "%v\n", err)
22 os.Exit(1)
23 }
24}
25
26func toInt(s string) int {
27 i, err := strconv.ParseInt(s, 10, 32)
28 ifErrExit(err)
29 return int(i)
30}
31
32func (r *ACDReader) Read(path string) WrappedGril {
33 g := WrappedGril{}
34 g.Gril = grils.Gril{}
35 data, err := ioutil.ReadFile(path)
36 ifErrExit(err)
37 var jObj interface{}
38 err = json.Unmarshal(data, &jObj)
39 ifErrExit(err)
40 for k, v := range jObj.(map[string]interface{}) {
41 switch k {
42 case "Character ID":
43 g.Gril.ID = toInt(v.(string))
44 case "Romaji Name":
45 g.Gril.RomajiName = v.(string)
46 case "Japanese Name":
47 g.Gril.KanjiName = v.(string)
48 case "Aliases":
49 g.Gril.OtherNames = make([]string, 0)
50 for _, n := range strings.Split(v.(string), ",") {
51 if n == "" {
52 continue
53 }
54 g.Gril.OtherNames = append(
55 g.Gril.OtherNames,
56 strings.TrimSpace(n))
57 }
58 case "Tagged":
59 g.Gril.Tags = make([]string, 0)
60 for _, n := range strings.Split(v.(string), ",") {
61 if n == "" {
62 continue
63 }
64 tag := strings.TrimSpace(n)
65 tag = tagRegex.FindStringSubmatch(tag)[1]
66 g.Gril.Tags = append(
67 g.Gril.Tags,
68 tag)
69 }
70 case "__img":
71 g.Image = v.(string)
72 case "__thumb":
73 g.Thumb = v.(string)
74 }
75 }
76 return g
77}
78
79func (r *ACDReader) ID() int {
80 return int(grils.DataSourceACD)
81}