Files
huso/schaffer.go
2022-04-16 18:13:32 +02:00

74 lines
1.7 KiB
Go

package main
import (
"encoding/json"
"errors"
)
func JikanConvert(jik *SeasonAnimeJikan) AnimeDetail {
res := AnimeDetail{
Title: jik.Title,
TitleEn: jik.TitleEnglish,
TitleJp: jik.TitleJapanese,
ImageMediumURL: jik.Images.Jpg.ImageURL,
ImageLargeURL: jik.Images.Jpg.LargeImageURL,
ImageThumbURL: jik.Images.Jpg.SmallImageURL,
Type: jik.Type,
Status: jik.Status,
Episodes: jik.Episodes,
Synopsis: jik.Synopsis,
StartDate: jik.Aired.From,
EndDate: jik.Aired.To,
Year: jik.Year,
Season: jik.Season,
Score: jik.Score,
ScoredBy: jik.ScoredBy,
Rank: jik.Rank,
Popularity: jik.Popularity,
Members: jik.Members,
Source: jik.Source,
DayOfTheWeek: jik.Broadcast.Day,
StartTime: jik.Broadcast.Time,
TrailerURL: jik.Trailer.URL,
}
for _, g := range jik.Genres {
res.Genres = append(res.Genres, AnimeGenre{
ID: g.MalID,
Name: g.Name,
})
}
for _, s := range jik.Studios {
res.Studios = append(res.Studios, AnimeStudio{
ID: s.MalID,
Name: s.Name,
})
}
return res
}
func GetSeasonCache() (*SeasonJikan, error) {
data, err := cache.Get(seasonApiJikan)
if err != nil {
return nil, err
}
var seasonData SeasonJikan
err = json.Unmarshal(data, &seasonData)
return &seasonData, err
}
func SearchSeason(animeId int64) (*SeasonAnimeJikan, error) {
season, err := GetSeasonCache()
if err != nil {
return nil, err
}
if season.Pagination.Items.Count == 0 {
return nil, errors.New("no seasonal anime")
}
for _, a := range season.Data {
if a.MalID == animeId {
return &a, err
}
}
return nil, errors.New("anime not found")
}