Files
huso/huso.go
2022-04-16 01:14:34 +02:00

96 lines
2.1 KiB
Go

package main
import (
"flag"
"log"
"os"
"os/signal"
"runtime"
"syscall"
"time"
"github.com/allegro/bigcache/v3"
"github.com/gookit/color"
"github.com/xujiajun/nutsdb"
)
const (
husoVersion = "1.0"
registerSecret = "綾波レイ"
seasonApiJikan = "seasons/now"
userApiJikan = "users/"
userApiMal = "users/"
animeApiMal = "anime/"
malApiStatusP = "plan_to_watch"
malApiStatusW = "watching"
malApiStatusC = "completed"
malApiStatusH = "on_hold"
malApiStatusD = "dropped"
bucketUsers = "users"
bucketAnime = "anime"
bucketMedia = "media"
)
var (
webServerPort = flag.Int("port", 4876, "Port used by internal webserver")
malApiBaseUri = flag.String("malApiBaseUri", "https://api.myanimelist.net/v2/", "MyAnimeList 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")
cache *bigcache.BigCache
animeCache *bigcache.BigCache
db *nutsdb.DB
)
func main() {
// lese Flaggen
flag.Parse()
// bleib bei uns
sc := make(chan os.Signal, 1)
signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt)
color.Notice.Printf("huso %s %s\n", husoVersion, runtime.Version())
// cache init
var err error
cache, err = bigcache.NewBigCache(bigcache.DefaultConfig(2 * time.Hour))
if err != nil {
log.Fatal(err)
}
defer cache.Close()
animeCache, err = bigcache.NewBigCache(bigcache.DefaultConfig(6 * time.Hour))
if err != nil {
log.Fatal(err)
}
defer animeCache.Close()
nutsOpt := nutsdb.DefaultOptions
nutsOpt.Dir = "nuts"
db, err = nutsdb.Open(nutsOpt)
if err != nil {
log.Fatal(err)
}
defer db.Close()
initSeason()
go Arbeiten()
go RunWebserv()
//list, _, _ := GetUserAnimeListData("ultrasn0w", malApiStatusW)
//fmt.Printf("%+v\n", list)
<-sc
}
func initSeason() {
_, bytes, err := GetSeasonDataAll()
if err != nil {
color.Errorln(err.Error())
}
err = cache.Set(seasonApiJikan, bytes)
if err != nil {
color.Errorln(err.Error())
}
}