aboutsummaryrefslogtreecommitdiff
path: root/tools/animeimporter/ACDv2Reader.go
diff options
context:
space:
mode:
Diffstat (limited to 'tools/animeimporter/ACDv2Reader.go')
-rw-r--r--tools/animeimporter/ACDv2Reader.go59
1 files changed, 59 insertions, 0 deletions
diff --git a/tools/animeimporter/ACDv2Reader.go b/tools/animeimporter/ACDv2Reader.go
new file mode 100644
index 0000000..36564e4
--- /dev/null
+++ b/tools/animeimporter/ACDv2Reader.go
@@ -0,0 +1,59 @@
1package main
2
3import (
4 "encoding/json"
5 "io/ioutil"
6 "path/filepath"
7 "strconv"
8 "strings"
9
10 "fagott.pw/grilist/modules/grils"
11)
12
13func ifErrExit(err error) {
14 if err != nil {
15 panic(err)
16 }
17}
18
19func toInt(s string) int {
20 i, err := strconv.ParseInt(s, 10, 32)
21 ifErrExit(err)
22 return int(i)
23}
24
25type ACDv2Reader struct{}
26
27type ACDv2Series struct {
28 Name struct {
29 English string `json:"english"`
30 Romaji string `json:"romaji"`
31 Japanese string `json:"japanese"`
32 Furigana string `json:"furigana"`
33 Aliases []string `json:"aliases"`
34 } `json:"name"`
35 Tags []string `json:"tags"`
36 Image string `json:"image"`
37}
38
39func (r *ACDv2Reader) Read(path string) WrappedSeries {
40 s := WrappedSeries{}
41 data, err := ioutil.ReadFile(path)
42 ifErrExit(err)
43 var jObj ACDv2Series
44 err = json.Unmarshal(data, &jObj)
45 ifErrExit(err)
46 s.Image = jObj.Image
47 s.Series.ID = toInt(strings.TrimSuffix(filepath.Base(path), ".json"))
48 s.Series.Name = jObj.Name.English
49 s.Series.KanjiName = jObj.Name.Japanese
50 s.Series.RomajiName = jObj.Name.Romaji
51 s.Series.FuriganaName = jObj.Name.Furigana
52 s.Series.OtherNames = jObj.Name.Aliases
53 s.Series.Tags = jObj.Tags
54 return s
55}
56
57func (r *ACDv2Reader) ID() int {
58 return int(grils.DataSourceACD)
59}