mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-14 06:49:52 +01:00
Next season feature
This commit is contained in:
70
knecht.go
70
knecht.go
@@ -134,9 +134,10 @@ func GetUserData(username string) (*User, []byte, error) {
|
||||
}
|
||||
|
||||
func GetSeasonDataAll() ([]Anime, []byte, error) {
|
||||
color.Infoln("Aktuelle Season abfragen...")
|
||||
logOut.WriteLine("📺 Aktuelle Season abfragen...")
|
||||
data, _, err := GetSeasonData(1)
|
||||
seasonStr := GetCurrentSeasonString()
|
||||
color.Infoln("Aktuelle Season (" + seasonStr + ") abfragen...")
|
||||
logOut.WriteLine("📺 Aktuelle Season (" + seasonStr + ") abfragen...")
|
||||
data, _, err := GetSeasonData(seasonApiJikan, 1)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -150,7 +151,7 @@ func GetSeasonDataAll() ([]Anime, []byte, error) {
|
||||
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(i)
|
||||
newData, _, err := GetSeasonData(seasonApiJikan, i)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -168,9 +169,44 @@ func GetSeasonDataAll() ([]Anime, []byte, error) {
|
||||
return animes, bytes, err
|
||||
}
|
||||
|
||||
func GetSeasonData(page int) (*SeasonJikan, []byte, error) {
|
||||
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)
|
||||
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(seasonStrJikan+season, 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 GetSeasonData(seasonRoute string, page int) (*SeasonJikan, []byte, error) {
|
||||
var data SeasonJikan
|
||||
body, err := GetSeasonBytes(page)
|
||||
body, err := GetSeasonBytes(seasonRoute, page)
|
||||
if err != nil {
|
||||
return nil, body, err
|
||||
}
|
||||
@@ -178,11 +214,11 @@ func GetSeasonData(page int) (*SeasonJikan, []byte, error) {
|
||||
return &data, body, err
|
||||
}
|
||||
|
||||
func GetSeasonBytes(page int) ([]byte, error) {
|
||||
func GetSeasonBytes(seasonRoute string, page int) ([]byte, error) {
|
||||
if page != 0 {
|
||||
return GetDataJikan(seasonApiJikan + "?page=" + strconv.Itoa(page))
|
||||
return GetDataJikan(seasonRoute + "?page=" + strconv.Itoa(page))
|
||||
}
|
||||
return GetDataJikan(seasonApiJikan)
|
||||
return GetDataJikan(seasonRoute)
|
||||
}
|
||||
|
||||
func GetDataMal(apiAddr string) ([]byte, error) {
|
||||
@@ -240,3 +276,19 @@ func GetCurrentSeasonString() string {
|
||||
return fmt.Sprintf("%04d", now.Year())
|
||||
}
|
||||
}
|
||||
|
||||
func GetNextSeasonString() string {
|
||||
var now = time.Now()
|
||||
switch now.Month() {
|
||||
case time.January, time.February, time.March:
|
||||
return fmt.Sprintf("%04d/spring", now.Year())
|
||||
case time.April, time.May, time.June:
|
||||
return fmt.Sprintf("%04d/summer", now.Year())
|
||||
case time.July, time.August, time.September:
|
||||
return fmt.Sprintf("%04d/fall", now.Year())
|
||||
case time.October, time.November, time.December:
|
||||
return fmt.Sprintf("%04d/winter", now.Year()+1)
|
||||
default:
|
||||
return fmt.Sprintf("%04d", now.Year())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user