Schedule refresh

This commit is contained in:
daru
2022-04-18 01:46:45 +02:00
parent b0a68b017e
commit 8fe7bf4d4b
2 changed files with 76 additions and 23 deletions

17
huso.go
View File

@@ -56,7 +56,7 @@ func main() {
// cache init // cache init
var err error var err error
animeCache, err = bigcache.NewBigCache(bigcache.DefaultConfig(6 * time.Hour)) animeCache, err = bigcache.NewBigCache(bigcache.DefaultConfig(7 * time.Hour))
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -85,9 +85,11 @@ func main() {
} }
defer db.Close() defer db.Close()
initSeason() Arbeit()
LangeArbeit()
go Arbeiten() go Arbeiten()
go LangeArbeiten()
go RunWebserv() go RunWebserv()
@@ -96,14 +98,3 @@ func main() {
<-sc <-sc
} }
func initSeason() {
_, bytes, err := GetSeasonDataAll()
if err != nil {
color.Errorln(err.Error())
}
err = seasoncache.Set(seasonApiJikan, bytes)
if err != nil {
color.Errorln(err.Error())
}
}

View File

@@ -1,14 +1,22 @@
package main package main
import ( import (
"encoding/json"
"strconv"
"time" "time"
"github.com/gookit/color" "github.com/gookit/color"
"github.com/xujiajun/nutsdb"
) )
func Arbeiten() { func Arbeiten() {
for range time.Tick(time.Hour) { for range time.Tick(time.Hour) {
// Alle Daten Arbeit()
}
}
func Arbeit() {
// season data
_, bytes, err := GetSeasonDataAll() _, bytes, err := GetSeasonDataAll()
if err != nil { if err != nil {
color.Errorln(err.Error()) color.Errorln(err.Error())
@@ -18,10 +26,43 @@ func Arbeiten() {
color.Errorln(err.Error()) color.Errorln(err.Error())
} }
} }
} // refresh animelist of users
// TODO
} }
func LangeArbeiten() { func LangeArbeiten() {
for range time.Tick(6 * time.Hour) {
LangeArbeit()
}
}
func LangeArbeit() {
// refresh anime cache with watched
animesUsers, err := ReadAnimeUsers()
if err != nil {
if err != nutsdb.ErrBucketEmpty {
color.Errorln(err.Error())
}
return
}
count := 0
for _, a := range animesUsers {
// search season first
_, err = SearchSeason(a.Anime)
if err != nil {
continue
}
err = refreshAnime(a.Anime)
if err != nil {
color.Errorln(err.Error())
continue
}
count++
}
color.Infof("%d Anime aktualisiert\n", count)
}
func SehrLangeArbeiten() {
for range time.Tick(time.Hour * 24) { for range time.Tick(time.Hour * 24) {
err := DbClean() err := DbClean()
if err != nil { if err != nil {
@@ -29,3 +70,24 @@ func LangeArbeiten() {
} }
} }
} }
func refreshAnime(animeId int64) error {
key := strconv.FormatInt(animeId, 10)
dataMal, 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 err
}
var animeMal AnimeDetailMal
err = json.Unmarshal(dataMal, &animeMal)
if err != nil {
return err
}
// convert to anime
anime := MalConvert(&animeMal)
data, err := json.Marshal(&anime)
if err != nil {
return err
}
animeCache.Set(key, data)
return nil
}