X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=anime.go;h=393f94eefe03a4bf5666400a2e7e174276e54cbe;hb=909b4836ad2d5c4730dff54b1f0dfa951fa6252e;hp=fa43987dc5948c102242f2e607995692164b7ecd;hpb=d4b2e65bcd1d39acce5aee34e86b493539c7b12b;p=go-anidb.git diff --git a/anime.go b/anime.go index fa43987..393f94e 100644 --- a/anime.go +++ b/anime.go @@ -1,6 +1,7 @@ package anidb import ( + "fmt" "github.com/Kovensky/go-anidb/misc" "strconv" "time" @@ -49,9 +50,9 @@ type Anime struct { AID AID // The Anime ID. R18 bool // Whether this anime is considered porn. - Type AnimeType // Production/distribution type. - TotalEpisodes int // Total number of regular episodes. - EpisodeCount EpisodeCount // Known numbers of the various types of episodes. + Type AnimeType // Production/distribution type. + TotalEpisodes int // Total number of regular episodes. + EpisodeCount misc.EpisodeCount // Known numbers of the various types of episodes. StartDate time.Time // Date of first episode release, if available. EndDate time.Time // Date of last episode release, if available. @@ -70,7 +71,7 @@ type Anime struct { TemporaryVotes Rating // Votes from people who are still watching this. Reviews Rating // Votes from reviewers. - Episodes Episodes // List of episodes. + Episodes []*Episode // List of episodes. Awards []string Resources Resources @@ -80,15 +81,6 @@ type Anime struct { Cached time.Time // When the data was retrieved from the server. } -type EpisodeCount struct { - RegularCount int - SpecialCount int - CreditsCount int - OtherCount int - TrailerCount int - ParodyCount int -} - // Convenience method that runs AnimeByID on the result of // SearchAnime. func (adb *AniDB) AnimeByName(name string) <-chan *Anime { @@ -127,7 +119,7 @@ func (a *Anime) Episode(ep *misc.Episode) *Episode { case 1: return list[0] default: - panic("Single episode search returned more than one result") + panic(fmt.Sprintf("Single episode search returned more than one result (wanted %v, got %v)", ep, list)) } } @@ -144,3 +136,15 @@ func (a *Anime) EpisodeByString(name string) *Episode { func (a *Anime) EpisodeByNumber(number int) *Episode { return a.EpisodeByString(strconv.Itoa(number)) } + +func (a *Anime) EpisodeByEID(eid EID) *Episode { + if a == nil { + return nil + } + for _, ep := range a.Episodes { + if ep.EID == eid { + return ep + } + } + return nil +}