mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-13 13:59:53 +01:00
MalConvert
This commit is contained in:
33
knecht.go
33
knecht.go
@@ -12,28 +12,31 @@ import (
|
||||
"github.com/valyala/fasthttp"
|
||||
)
|
||||
|
||||
func GetAnimeDetailData(animeId int64) (*AnimeDetailMal, []byte, error) {
|
||||
var anime AnimeDetailMal
|
||||
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) {
|
||||
func GetAnimeDetailData(animeId int64) (*Anime, []byte, error) {
|
||||
var anime Anime
|
||||
key := strconv.FormatInt(animeId, 10)
|
||||
data, err := animeCache.Get(key)
|
||||
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 {
|
||||
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)
|
||||
return data, err
|
||||
} else {
|
||||
err = json.Unmarshal(data, &anime)
|
||||
}
|
||||
return data, err
|
||||
return &anime, data, err
|
||||
}
|
||||
|
||||
func GetUserAnimeListData(username, status string) (*AnimeListMal, []byte, error) {
|
||||
|
||||
43
schaffer.go
43
schaffer.go
@@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
func JikanConvert(jik *SeasonAnimeJikan) Anime {
|
||||
@@ -47,6 +48,48 @@ func JikanConvert(jik *SeasonAnimeJikan) Anime {
|
||||
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) {
|
||||
data, err := cache.Get(seasonApiJikan)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user