mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-13 13:59:53 +01:00
Schedule refresh
This commit is contained in:
17
huso.go
17
huso.go
@@ -56,7 +56,7 @@ func main() {
|
||||
|
||||
// cache init
|
||||
var err error
|
||||
animeCache, err = bigcache.NewBigCache(bigcache.DefaultConfig(6 * time.Hour))
|
||||
animeCache, err = bigcache.NewBigCache(bigcache.DefaultConfig(7 * time.Hour))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@@ -85,9 +85,11 @@ func main() {
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
initSeason()
|
||||
Arbeit()
|
||||
LangeArbeit()
|
||||
|
||||
go Arbeiten()
|
||||
go LangeArbeiten()
|
||||
|
||||
go RunWebserv()
|
||||
|
||||
@@ -96,14 +98,3 @@ func main() {
|
||||
|
||||
<-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())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,68 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/gookit/color"
|
||||
"github.com/xujiajun/nutsdb"
|
||||
)
|
||||
|
||||
func Arbeiten() {
|
||||
for range time.Tick(time.Hour) {
|
||||
// Alle Daten
|
||||
_, bytes, err := GetSeasonDataAll()
|
||||
if err != nil {
|
||||
color.Errorln(err.Error())
|
||||
} else {
|
||||
err = seasoncache.Set(seasonApiJikan, bytes)
|
||||
if err != nil {
|
||||
color.Errorln(err.Error())
|
||||
}
|
||||
}
|
||||
Arbeit()
|
||||
}
|
||||
}
|
||||
|
||||
func Arbeit() {
|
||||
// season data
|
||||
_, bytes, err := GetSeasonDataAll()
|
||||
if err != nil {
|
||||
color.Errorln(err.Error())
|
||||
} else {
|
||||
err = seasoncache.Set(seasonApiJikan, bytes)
|
||||
if err != nil {
|
||||
color.Errorln(err.Error())
|
||||
}
|
||||
}
|
||||
// refresh animelist of users
|
||||
// TODO
|
||||
}
|
||||
|
||||
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) {
|
||||
err := DbClean()
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user