mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-14 19:09:54 +01:00
MalConvert
This commit is contained in:
33
knecht.go
33
knecht.go
@@ -12,28 +12,31 @@ import (
|
|||||||
"github.com/valyala/fasthttp"
|
"github.com/valyala/fasthttp"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetAnimeDetailData(animeId int64) (*AnimeDetailMal, []byte, error) {
|
func GetAnimeDetailData(animeId int64) (*Anime, []byte, error) {
|
||||||
var anime AnimeDetailMal
|
var anime Anime
|
||||||
body, err := GetAnimeDetailBytesCached(animeId)
|
|
||||||
if err != nil {
|
|
||||||
return nil, body, err
|
|
||||||
}
|
|
||||||
err = json.Unmarshal(body, &anime)
|
|
||||||
return &anime, body, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetAnimeDetailBytesCached(animeId int64) ([]byte, error) {
|
|
||||||
key := strconv.FormatInt(animeId, 10)
|
key := strconv.FormatInt(animeId, 10)
|
||||||
data, err := animeCache.Get(key)
|
data, err := animeCache.Get(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
data, 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")
|
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 {
|
if err != nil {
|
||||||
return data, err
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
var animeMal AnimeDetailMal
|
||||||
|
err = json.Unmarshal(dataMal, &animeMal)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
// convert to anime
|
||||||
|
anime = MalConvert(&animeMal)
|
||||||
|
data, err = json.Marshal(&anime)
|
||||||
|
if err != nil {
|
||||||
|
return &anime, data, err
|
||||||
}
|
}
|
||||||
animeCache.Set(key, data)
|
animeCache.Set(key, data)
|
||||||
return data, err
|
} else {
|
||||||
|
err = json.Unmarshal(data, &anime)
|
||||||
}
|
}
|
||||||
return data, err
|
return &anime, data, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserAnimeListData(username, status string) (*AnimeListMal, []byte, error) {
|
func GetUserAnimeListData(username, status string) (*AnimeListMal, []byte, error) {
|
||||||
|
|||||||
43
schaffer.go
43
schaffer.go
@@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func JikanConvert(jik *SeasonAnimeJikan) Anime {
|
func JikanConvert(jik *SeasonAnimeJikan) Anime {
|
||||||
@@ -47,6 +48,48 @@ func JikanConvert(jik *SeasonAnimeJikan) Anime {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func MalConvert(mal *AnimeDetailMal) Anime {
|
||||||
|
res := Anime{
|
||||||
|
Anime: mal.ID,
|
||||||
|
Title: mal.Title,
|
||||||
|
TitleEn: mal.AlternativeTitles.En,
|
||||||
|
TitleJp: mal.AlternativeTitles.Ja,
|
||||||
|
ImageMediumURL: mal.MainPicture.Medium,
|
||||||
|
ImageLargeURL: mal.MainPicture.Large,
|
||||||
|
ImageThumbURL: "",
|
||||||
|
Type: mal.MediaType,
|
||||||
|
Status: mal.Status,
|
||||||
|
Episodes: mal.NumEpisodes,
|
||||||
|
Synopsis: mal.Synopsis,
|
||||||
|
Year: mal.StartSeason.Year,
|
||||||
|
Season: mal.StartSeason.Season,
|
||||||
|
Score: mal.Mean,
|
||||||
|
ScoredBy: mal.NumScoringUsers,
|
||||||
|
Rank: mal.Rank,
|
||||||
|
Popularity: mal.Popularity,
|
||||||
|
Members: mal.NumListUsers,
|
||||||
|
Source: mal.Source,
|
||||||
|
DayOfTheWeek: mal.Broadcast.DayOfTheWeek,
|
||||||
|
StartTime: mal.Broadcast.StartTime,
|
||||||
|
TrailerURL: "",
|
||||||
|
}
|
||||||
|
for _, g := range mal.Genres {
|
||||||
|
res.Genres = append(res.Genres, AnimeGenre{
|
||||||
|
ID: g.ID,
|
||||||
|
Name: g.Name,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
for _, s := range mal.Studios {
|
||||||
|
res.Studios = append(res.Studios, AnimeStudio{
|
||||||
|
ID: s.ID,
|
||||||
|
Name: s.Name,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
res.StartDate, _ = time.Parse("2006-01-02", mal.StartDate)
|
||||||
|
res.EndDate, _ = time.Parse("2006-01-02", mal.EndDate)
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
func GetSeasonCache() ([]Anime, error) {
|
func GetSeasonCache() ([]Anime, error) {
|
||||||
data, err := cache.Get(seasonApiJikan)
|
data, err := cache.Get(seasonApiJikan)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user