mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-14 19:29:52 +01:00
NextNextSeason
This commit is contained in:
1
huso.go
1
huso.go
@@ -21,7 +21,6 @@ import (
|
|||||||
const (
|
const (
|
||||||
husoVersion = "1.3"
|
husoVersion = "1.3"
|
||||||
registerSecret = "綾波レイ"
|
registerSecret = "綾波レイ"
|
||||||
seasonApiJikan = "seasons/now"
|
|
||||||
seasonStrJikan = "seasons/"
|
seasonStrJikan = "seasons/"
|
||||||
userApiJikan = "users/"
|
userApiJikan = "users/"
|
||||||
userApiMal = "users/"
|
userApiMal = "users/"
|
||||||
|
|||||||
58
knecht.go
58
knecht.go
@@ -135,45 +135,9 @@ func GetUserData(username string) (*User, []byte, error) {
|
|||||||
return &user, data, err
|
return &user, data, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSeasonDataAll() ([]Anime, []byte, error) {
|
func GetSeasonDataAll(season string) ([]Anime, []byte, error) {
|
||||||
seasonStr := GetCurrentSeasonString()
|
color.Infoln("Season (" + season + ") abfragen...")
|
||||||
color.Infoln("Aktuelle Season (" + seasonStr + ") abfragen...")
|
logOut.WriteLine("📺 Season (" + season + ") abfragen...")
|
||||||
logOut.WriteLine("📺 Aktuelle Season (" + seasonStr + ") abfragen...")
|
|
||||||
data, _, err := GetSeasonData(seasonApiJikan, 1)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
color.Infof("%d Anime auf %d Seiten\n", data.Pagination.Items.Total, data.Pagination.LastVisiblePage)
|
|
||||||
logOut.WriteLine(fmt.Sprintf("📺 %d Anime auf %d Seiten", data.Pagination.Items.Total, data.Pagination.LastVisiblePage))
|
|
||||||
animes := make([]Anime, 0)
|
|
||||||
// convert to anime
|
|
||||||
for _, a := range data.Data {
|
|
||||||
animes = append(animes, JikanConvert(&a))
|
|
||||||
}
|
|
||||||
for i := 2; data.Pagination.HasNextPage; i++ {
|
|
||||||
color.Infof("Seite %d abfragen...\n", i)
|
|
||||||
logOut.WriteLine(fmt.Sprintf("📺 Seite %d abfragen...", i))
|
|
||||||
newData, _, err := GetSeasonData(seasonApiJikan, i)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
data.Pagination.CurrentPage = newData.Pagination.CurrentPage
|
|
||||||
data.Pagination.HasNextPage = newData.Pagination.HasNextPage
|
|
||||||
data.Pagination.Items.Count += newData.Pagination.Items.Count
|
|
||||||
// convert to anime
|
|
||||||
for _, a := range newData.Data {
|
|
||||||
animes = append(animes, JikanConvert(&a))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
color.Infof("%d Anime bekommen\n", len(animes))
|
|
||||||
logOut.WriteLine(fmt.Sprintf("📺 %d Anime bekommen", len(animes)))
|
|
||||||
bytes, err := json.Marshal(animes)
|
|
||||||
return animes, bytes, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetNextSeasonDataAll(season string) ([]Anime, []byte, error) {
|
|
||||||
color.Infoln("Nächste Season (" + season + ") abfragen...")
|
|
||||||
logOut.WriteLine("📺 Nächste Season (" + season + ") abfragen...")
|
|
||||||
data, _, err := GetSeasonData(seasonStrJikan+season, 1)
|
data, _, err := GetSeasonData(seasonStrJikan+season, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
@@ -294,3 +258,19 @@ func GetNextSeasonString() string {
|
|||||||
return fmt.Sprintf("%04d", now.Year())
|
return fmt.Sprintf("%04d", now.Year())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetNextNextSeasonString() string {
|
||||||
|
var now = time.Now()
|
||||||
|
switch now.Month() {
|
||||||
|
case time.January, time.February, time.March:
|
||||||
|
return fmt.Sprintf("%04d/summer", now.Year())
|
||||||
|
case time.April, time.May, time.June:
|
||||||
|
return fmt.Sprintf("%04d/fall", now.Year())
|
||||||
|
case time.July, time.August, time.September:
|
||||||
|
return fmt.Sprintf("%04d/winter", now.Year()+1)
|
||||||
|
case time.October, time.November, time.December:
|
||||||
|
return fmt.Sprintf("%04d/spring", now.Year()+1)
|
||||||
|
default:
|
||||||
|
return fmt.Sprintf("%04d", now.Year())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
22
ober.go
22
ober.go
@@ -19,6 +19,7 @@ func RunWebserv() {
|
|||||||
r.GET("/", Headers(Start))
|
r.GET("/", Headers(Start))
|
||||||
r.GET("/api/season", Headers(Season))
|
r.GET("/api/season", Headers(Season))
|
||||||
r.GET("/api/nextseason", Headers(SeasonNext))
|
r.GET("/api/nextseason", Headers(SeasonNext))
|
||||||
|
r.GET("/api/nextnextseason", Headers(SeasonNextNext))
|
||||||
r.GET("/api/auth/{user}", Headers(AuthTest))
|
r.GET("/api/auth/{user}", Headers(AuthTest))
|
||||||
r.GET("/api/anime/{id}", Headers(AnimeGet))
|
r.GET("/api/anime/{id}", Headers(AnimeGet))
|
||||||
r.GET("/api/animesearch", Headers(AnimeSearchGet))
|
r.GET("/api/animesearch", Headers(AnimeSearchGet))
|
||||||
@@ -39,7 +40,7 @@ func RunWebserv() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Start(ctx *fasthttp.RequestCtx) {
|
func Start(ctx *fasthttp.RequestCtx) {
|
||||||
season, err := GetSeasonCache(seasonApiJikan)
|
season, err := GetSeasonCache(GetCurrentSeasonString())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
addErrorToCtx(ctx, err)
|
addErrorToCtx(ctx, err)
|
||||||
return
|
return
|
||||||
@@ -77,7 +78,7 @@ func AuthTest(ctx *fasthttp.RequestCtx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Season(ctx *fasthttp.RequestCtx) {
|
func Season(ctx *fasthttp.RequestCtx) {
|
||||||
data, err := seasoncache.Get(seasonApiJikan)
|
data, err := seasoncache.Get(GetCurrentSeasonString())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
addErrorToCtx(ctx, err)
|
addErrorToCtx(ctx, err)
|
||||||
return
|
return
|
||||||
@@ -110,6 +111,23 @@ func SeasonNext(ctx *fasthttp.RequestCtx) {
|
|||||||
ctx.SetStatusCode(fasthttp.StatusOK)
|
ctx.SetStatusCode(fasthttp.StatusOK)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SeasonNextNext(ctx *fasthttp.RequestCtx) {
|
||||||
|
data, err := seasoncache.Get(GetNextNextSeasonString())
|
||||||
|
if err != nil {
|
||||||
|
addErrorToCtx(ctx, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = writeResponseBody(ctx, data)
|
||||||
|
if err != nil {
|
||||||
|
addErrorToCtx(ctx, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.SetContentType("application/json; charset=utf-8")
|
||||||
|
ctx.SetStatusCode(fasthttp.StatusOK)
|
||||||
|
}
|
||||||
|
|
||||||
func AnimeGet(ctx *fasthttp.RequestCtx) {
|
func AnimeGet(ctx *fasthttp.RequestCtx) {
|
||||||
idVal := ctx.UserValue("id")
|
idVal := ctx.UserValue("id")
|
||||||
if idVal == nil {
|
if idVal == nil {
|
||||||
|
|||||||
@@ -151,30 +151,24 @@ func LangeArbeiten() {
|
|||||||
|
|
||||||
func LangeArbeit() {
|
func LangeArbeit() {
|
||||||
// season data
|
// season data
|
||||||
_, bytes, err := GetSeasonDataAll()
|
err := refreshSeason(GetCurrentSeasonString())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
color.Errorln(err.Error())
|
color.Errorln(err.Error())
|
||||||
logOut.WriteError(err)
|
logOut.WriteError(err)
|
||||||
} else {
|
|
||||||
err = seasoncache.Set(seasonApiJikan, bytes)
|
|
||||||
if err != nil {
|
|
||||||
color.Errorln(err.Error())
|
|
||||||
logOut.WriteError(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// next season data
|
// next season data
|
||||||
nextSeason := GetNextSeasonString()
|
err = refreshSeason(GetNextSeasonString())
|
||||||
_, bytes, err = GetNextSeasonDataAll(nextSeason)
|
if err != nil {
|
||||||
|
color.Errorln(err.Error())
|
||||||
|
logOut.WriteError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// next next season data
|
||||||
|
err = refreshSeason(GetNextNextSeasonString())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
color.Errorln(err.Error())
|
color.Errorln(err.Error())
|
||||||
logOut.WriteError(err)
|
logOut.WriteError(err)
|
||||||
} else {
|
|
||||||
err = seasoncache.Set(nextSeason, bytes)
|
|
||||||
if err != nil {
|
|
||||||
color.Errorln(err.Error())
|
|
||||||
logOut.WriteError(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// refresh anime cache with watched
|
// refresh anime cache with watched
|
||||||
@@ -187,8 +181,8 @@ func LangeArbeit() {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for _, a := range animesUsers {
|
for _, a := range animesUsers {
|
||||||
// search season first
|
// search seasons first
|
||||||
_, err = SearchSeason(a.Anime)
|
_, err = SearchSeasons(a.Anime)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -236,3 +230,11 @@ func refreshAnime(animeId int64) error {
|
|||||||
animeCache.Set(key, data)
|
animeCache.Set(key, data)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func refreshSeason(season string) error {
|
||||||
|
_, bytes, err := GetSeasonDataAll(season)
|
||||||
|
if err == nil {
|
||||||
|
err = seasoncache.Set(season, bytes)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|||||||
19
schaffer.go
19
schaffer.go
@@ -123,14 +123,11 @@ func GetSeasonCache(key string) ([]Anime, error) {
|
|||||||
return seasonData, err
|
return seasonData, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func SearchSeason(animeId int64) (*Anime, error) {
|
func SearchSeasons(animeId int64) (*Anime, error) {
|
||||||
season, err := GetSeasonCache(seasonApiJikan)
|
season, err := GetSeasonCache(GetCurrentSeasonString())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(season) == 0 {
|
|
||||||
return nil, errors.New("no seasonal anime")
|
|
||||||
}
|
|
||||||
for _, a := range season {
|
for _, a := range season {
|
||||||
if a.Anime == animeId {
|
if a.Anime == animeId {
|
||||||
return &a, err
|
return &a, err
|
||||||
@@ -140,8 +137,14 @@ func SearchSeason(animeId int64) (*Anime, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(season) == 0 {
|
for _, a := range season {
|
||||||
return nil, errors.New("no seasonal anime")
|
if a.Anime == animeId {
|
||||||
|
return &a, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
season, err = GetSeasonCache(GetNextNextSeasonString())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
for _, a := range season {
|
for _, a := range season {
|
||||||
if a.Anime == animeId {
|
if a.Anime == animeId {
|
||||||
@@ -153,7 +156,7 @@ func SearchSeason(animeId int64) (*Anime, error) {
|
|||||||
|
|
||||||
func SearchAnime(animeId int64) (*Anime, error) {
|
func SearchAnime(animeId int64) (*Anime, error) {
|
||||||
// search season first
|
// search season first
|
||||||
anime, err := SearchSeason(animeId)
|
anime, err := SearchSeasons(animeId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// get from MAL
|
// get from MAL
|
||||||
anime, _, err = GetAnimeDetailData(animeId)
|
anime, _, err = GetAnimeDetailData(animeId)
|
||||||
|
|||||||
Reference in New Issue
Block a user