From 6ba9176ca75ce64503049b406734b4436773c6ff Mon Sep 17 00:00:00 2001 From: daru Date: Fri, 15 Apr 2022 21:54:51 +0200 Subject: [PATCH] Get Anime cached --- huso.go | 6 ++++++ knecht.go | 18 ++++++++++++++---- ober.go | 5 ++--- schaffer.go | 4 ++-- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/huso.go b/huso.go index 45db2cb..e29894b 100644 --- a/huso.go +++ b/huso.go @@ -37,6 +37,7 @@ var ( jikanApiBaseUri = flag.String("jikanApiBaseUri", "https://api.jikan.moe/v4/", "Jikan API base URL") malApiId = flag.String("malApiId", "cc17dcf40581b9dfc8a5a12dba458153", "MyAnimeList API Client ID") cache *bigcache.BigCache + animeCache *bigcache.BigCache db *nutsdb.DB ) @@ -56,6 +57,11 @@ func main() { log.Fatal(err) } defer cache.Close() + animeCache, err = bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour)) + if err != nil { + log.Fatal(err) + } + defer animeCache.Close() nutsOpt := nutsdb.DefaultOptions nutsOpt.Dir = "nuts" diff --git a/knecht.go b/knecht.go index 45a28da..8b4501f 100644 --- a/knecht.go +++ b/knecht.go @@ -12,9 +12,9 @@ import ( "github.com/valyala/fasthttp" ) -func GetAnimeDetailData(malId int64) (*AnimeDetailMal, []byte, error) { +func GetAnimeDetailData(animeId int64) (*AnimeDetailMal, []byte, error) { var anime AnimeDetailMal - body, err := GetAnimeDetailBytes(malId) + body, err := GetAnimeDetailBytesCached(animeId) if err != nil { return nil, body, err } @@ -22,8 +22,18 @@ func GetAnimeDetailData(malId int64) (*AnimeDetailMal, []byte, error) { return &anime, body, err } -func GetAnimeDetailBytes(malId int64) ([]byte, error) { - return GetDataMal(animeApiMal + strconv.FormatInt(malId, 10) + "?fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,media_type,status,genres,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,studios") +func GetAnimeDetailBytesCached(animeId int64) ([]byte, error) { + key := strconv.FormatInt(animeId, 10) + data, err := animeCache.Get(key) + if err != nil { + data, err = GetDataMal(animeApiMal + key + "?fields=id,title,main_picture,alternative_titles,start_date,end_date,synopsis,mean,rank,popularity,num_list_users,num_scoring_users,nsfw,media_type,status,genres,my_list_status,num_episodes,start_season,broadcast,source,average_episode_duration,rating,studios") + if err != nil { + return data, err + } + animeCache.Set(key, data) + return data, err + } + return data, err } func GetUserAnimeListData(username, status string) (*AnimeListMal, []byte, error) { diff --git a/ober.go b/ober.go index 0597042..258ade8 100644 --- a/ober.go +++ b/ober.go @@ -185,7 +185,7 @@ func WatchPost(ctx *fasthttp.RequestCtx) { } // iterate sent animes - for _, anime := range animes { + for i, anime := range animes { // check if anime is in season _, err = SearchSeason(anime.Anime) if err == nil { @@ -195,8 +195,7 @@ func WatchPost(ctx *fasthttp.RequestCtx) { addErrorToCtx(ctx, err) return } - anime.Users = animeData.Users - fmt.Printf("%+v\n", anime) + animes[i].Users = animeData.Users } // TODO diff --git a/schaffer.go b/schaffer.go index aada714..c696b58 100644 --- a/schaffer.go +++ b/schaffer.go @@ -15,7 +15,7 @@ func GetSeasonCache() (*SeasonJikan, error) { return &seasonData, err } -func SearchSeason(malId int64) (*SeasonAnimeJikan, error) { +func SearchSeason(animeId int64) (*SeasonAnimeJikan, error) { season, err := GetSeasonCache() if err != nil { return nil, err @@ -24,7 +24,7 @@ func SearchSeason(malId int64) (*SeasonAnimeJikan, error) { return nil, errors.New("no seasonal anime") } for _, a := range season.Data { - if a.MalID == malId { + if a.MalID == animeId { return &a, err } }