mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-14 10:39:53 +01:00
Schedule refresh
This commit is contained in:
17
huso.go
17
huso.go
@@ -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())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,27 +1,68 @@
|
|||||||
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()
|
||||||
_, bytes, err := GetSeasonDataAll()
|
|
||||||
if err != nil {
|
|
||||||
color.Errorln(err.Error())
|
|
||||||
} else {
|
|
||||||
err = seasoncache.Set(seasonApiJikan, bytes)
|
|
||||||
if err != nil {
|
|
||||||
color.Errorln(err.Error())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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() {
|
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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user