mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-13 13:59:53 +01:00
Get Anime cached
This commit is contained in:
6
huso.go
6
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"
|
||||
|
||||
18
knecht.go
18
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) {
|
||||
|
||||
5
ober.go
5
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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user