]> git.lizzy.rs Git - go-anidb.git/blobdiff - file.go
anidb: Add EpisodeString field to File
[go-anidb.git] / file.go
diff --git a/file.go b/file.go
index 0a1c6d3d057a8023eca890fe942dfd545746b3cc..6606f23a73ea347cc4f86f6060bc1fe488a8db71 100644 (file)
--- a/file.go
+++ b/file.go
@@ -39,7 +39,9 @@ type File struct {
        AID AID
        EID EID
        GID GID
+       LID LIDMap
 
+       EpisodeString string
        EpisodeNumber misc.EpisodeList
 
        Incomplete bool
@@ -73,6 +75,22 @@ type File struct {
        Cached time.Time
 }
 
+func (f *File) Anime() *Anime {
+       return f.AID.Anime()
+}
+
+func (f *File) Episode() *Episode {
+       return f.EID.Episode()
+}
+
+func (f *File) Group() *Group {
+       return f.GID.Group()
+}
+
+func (f *File) MyList() {
+       _ = f.LID[0]
+}
+
 type RelatedEpisodes map[EID]float32
 
 func (er RelatedEpisodes) MarshalJSON() ([]byte, error) {
@@ -99,3 +117,30 @@ func (er RelatedEpisodes) UnmarshalJSON(b []byte) error {
 
        return nil
 }
+
+type LIDMap map[UID]LID
+
+func (m LIDMap) MarshalJSON() ([]byte, error) {
+       generic := make(map[string]int, len(m))
+       for k, v := range m {
+               generic[strconv.Itoa(int(k))] = int(v)
+       }
+       return json.Marshal(generic)
+}
+
+func (m LIDMap) UnmarshalJSON(b []byte) error {
+       var generic map[string]int
+       if err := json.Unmarshal(b, &generic); err != nil {
+               return err
+       }
+       for k, v := range generic {
+               ik, err := strconv.ParseInt(k, 10, 32)
+               if err != nil {
+                       return err
+               }
+
+               m[UID(ik)] = LID(v)
+       }
+
+       return nil
+}