mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-14 10:39: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")
|
jikanApiBaseUri = flag.String("jikanApiBaseUri", "https://api.jikan.moe/v4/", "Jikan API base URL")
|
||||||
malApiId = flag.String("malApiId", "cc17dcf40581b9dfc8a5a12dba458153", "MyAnimeList API Client ID")
|
malApiId = flag.String("malApiId", "cc17dcf40581b9dfc8a5a12dba458153", "MyAnimeList API Client ID")
|
||||||
cache *bigcache.BigCache
|
cache *bigcache.BigCache
|
||||||
|
animeCache *bigcache.BigCache
|
||||||
db *nutsdb.DB
|
db *nutsdb.DB
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -56,6 +57,11 @@ func main() {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
defer cache.Close()
|
defer cache.Close()
|
||||||
|
animeCache, err = bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
defer animeCache.Close()
|
||||||
|
|
||||||
nutsOpt := nutsdb.DefaultOptions
|
nutsOpt := nutsdb.DefaultOptions
|
||||||
nutsOpt.Dir = "nuts"
|
nutsOpt.Dir = "nuts"
|
||||||
|
|||||||
18
knecht.go
18
knecht.go
@@ -12,9 +12,9 @@ import (
|
|||||||
"github.com/valyala/fasthttp"
|
"github.com/valyala/fasthttp"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetAnimeDetailData(malId int64) (*AnimeDetailMal, []byte, error) {
|
func GetAnimeDetailData(animeId int64) (*AnimeDetailMal, []byte, error) {
|
||||||
var anime AnimeDetailMal
|
var anime AnimeDetailMal
|
||||||
body, err := GetAnimeDetailBytes(malId)
|
body, err := GetAnimeDetailBytesCached(animeId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, body, err
|
return nil, body, err
|
||||||
}
|
}
|
||||||
@@ -22,8 +22,18 @@ func GetAnimeDetailData(malId int64) (*AnimeDetailMal, []byte, error) {
|
|||||||
return &anime, body, err
|
return &anime, body, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetAnimeDetailBytes(malId int64) ([]byte, error) {
|
func GetAnimeDetailBytesCached(animeId 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")
|
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) {
|
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
|
// iterate sent animes
|
||||||
for _, anime := range animes {
|
for i, anime := range animes {
|
||||||
// check if anime is in season
|
// check if anime is in season
|
||||||
_, err = SearchSeason(anime.Anime)
|
_, err = SearchSeason(anime.Anime)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@@ -195,8 +195,7 @@ func WatchPost(ctx *fasthttp.RequestCtx) {
|
|||||||
addErrorToCtx(ctx, err)
|
addErrorToCtx(ctx, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
anime.Users = animeData.Users
|
animes[i].Users = animeData.Users
|
||||||
fmt.Printf("%+v\n", anime)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ func GetSeasonCache() (*SeasonJikan, error) {
|
|||||||
return &seasonData, err
|
return &seasonData, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func SearchSeason(malId int64) (*SeasonAnimeJikan, error) {
|
func SearchSeason(animeId int64) (*SeasonAnimeJikan, error) {
|
||||||
season, err := GetSeasonCache()
|
season, err := GetSeasonCache()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -24,7 +24,7 @@ func SearchSeason(malId int64) (*SeasonAnimeJikan, error) {
|
|||||||
return nil, errors.New("no seasonal anime")
|
return nil, errors.New("no seasonal anime")
|
||||||
}
|
}
|
||||||
for _, a := range season.Data {
|
for _, a := range season.Data {
|
||||||
if a.MalID == malId {
|
if a.MalID == animeId {
|
||||||
return &a, err
|
return &a, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user