Files
huso/klotz.go
2022-08-25 23:31:18 +02:00

339 lines
9.6 KiB
Go

package main
import (
"sync"
"time"
)
type AnimeUser struct {
Anime int64 `json:"anime"`
Users []WatchUser `json:"users"`
}
type AnimeUserExtended struct {
Anime int64 `json:"anime"`
Users []WatchUser `json:"users"`
Data Anime `json:"data"`
Appointments []Appointment `json:"appointments"`
}
type Anime struct {
Anime int64 `json:"anime"`
Title string `json:"title"`
TitleEn string `json:"titleEn"`
TitleJp string `json:"titleJp"`
ImageMediumURL string `json:"imageMedium"`
ImageLargeURL string `json:"imageLarge"`
ImageThumbURL string `json:"imageThumb"`
URL string `json:"url"`
Type string `json:"type"`
Status string `json:"status"`
Episodes int `json:"episodes"`
Synopsis string `json:"synopsis"`
Genres []AnimeGenre `json:"genres"`
StartDate time.Time `json:"startDate"`
EndDate time.Time `json:"endDate"`
Year int `json:"year"`
Season string `json:"season"`
Score float64 `json:"score"`
ScoredBy int `json:"scoredBy"`
Rank int `json:"rank"`
Popularity int `json:"popularity"`
Members int `json:"members"`
Source string `json:"source"`
Weekday string `json:"weekday"`
Studios []AnimeStudio `json:"studios"`
TrailerURL string `json:"trailerUrl"`
TrailerEmbedURL string `json:"trailerEmbedUrl"`
}
type AnimeGenre struct {
ID int `json:"id"`
Name string `json:"name"`
}
type AnimeStudio struct {
ID int `json:"id"`
Name string `json:"name"`
}
type Appointment struct {
Anime int64 `json:"anime"`
Time time.Time `json:"date"`
Users []string `json:"users"`
Announced bool `json:"announced"`
}
type WatchUser struct {
Username string `json:"username"`
MalID int64 `json:"malId"`
Progress int `json:"progress"`
Updated time.Time `json:"updated"`
}
type User struct {
MalID int64 `json:"id"`
Username string `json:"username"`
URL string `json:"url"`
ImageURL string `json:"imageUrl"`
LastOnline time.Time `json:"lastOnline"`
Gender string `json:"gender"`
Birthday time.Time `json:"birthday"`
Location string `json:"location"`
Joined time.Time `json:"joined"`
}
type UserData struct {
Username string `json:"username"`
MalID int64 `json:"malId"`
DiscordID int64 `json:"discordId"`
Secret string `json:"secret"`
}
type RegisterData struct {
Username string `json:"username"`
MalID int64 `json:"malId"`
DiscordID int64 `json:"discordId"`
Secret string `json:"secret"`
Sauce string `json:"sauce"`
}
type AnimeDetailMal struct {
ID int64 `json:"id"`
Title string `json:"title"`
MainPicture struct {
Medium string `json:"medium"`
Large string `json:"large"`
} `json:"main_picture"`
AlternativeTitles struct {
Synonyms []string `json:"synonyms"`
En string `json:"en"`
Ja string `json:"ja"`
} `json:"alternative_titles"`
StartDate string `json:"start_date"`
EndDate string `json:"end_date"`
Synopsis string `json:"synopsis"`
Mean float64 `json:"mean"`
Rank int `json:"rank"`
Popularity int `json:"popularity"`
NumListUsers int `json:"num_list_users"`
NumScoringUsers int `json:"num_scoring_users"`
Nsfw string `json:"nsfw"`
MediaType string `json:"media_type"`
Status string `json:"status"`
Genres []struct {
ID int `json:"id"`
Name string `json:"name"`
} `json:"genres"`
NumEpisodes int `json:"num_episodes"`
StartSeason struct {
Year int `json:"year"`
Season string `json:"season"`
} `json:"start_season"`
Broadcast struct {
DayOfTheWeek string `json:"day_of_the_week"`
StartTime string `json:"start_time"`
} `json:"broadcast"`
Source string `json:"source"`
AverageEpisodeDuration int `json:"average_episode_duration"`
Rating string `json:"rating"`
Studios []struct {
ID int `json:"id"`
Name string `json:"name"`
} `json:"studios"`
}
type AnimeListMal struct {
Data []struct {
Node AnimeDetailMal `json:"node"`
ListStatus struct {
Status string `json:"status"`
Score int `json:"score"`
NumEpisodesWatched int `json:"num_episodes_watched"`
IsRewatching bool `json:"is_rewatching"`
UpdatedAt time.Time `json:"updated_at"`
} `json:"list_status"`
} `json:"data"`
Paging struct {
Next string `json:"next"`
} `json:"paging"`
}
type UserJikan struct {
Data struct {
MalID int64 `json:"mal_id"`
Username string `json:"username"`
URL string `json:"url"`
Images struct {
Jpg struct {
ImageURL string `json:"image_url"`
} `json:"jpg"`
Webp struct {
ImageURL string `json:"image_url"`
} `json:"webp"`
} `json:"images"`
LastOnline time.Time `json:"last_online"`
Gender string `json:"gender"`
Birthday time.Time `json:"birthday"`
Location string `json:"location"`
Joined time.Time `json:"joined"`
} `json:"data"`
}
type SeasonMal struct {
Data []struct {
Node AnimeDetailMal `json:"node"`
} `json:"data"`
Paging struct {
Next string `json:"next"`
} `json:"paging"`
Season struct {
Year int `json:"year"`
Season string `json:"season"`
} `json:"season"`
}
type SeasonAnimeJikan struct {
MalID int64 `json:"mal_id"`
URL string `json:"url"`
Images struct {
Jpg struct {
ImageURL string `json:"image_url"`
SmallImageURL string `json:"small_image_url"`
LargeImageURL string `json:"large_image_url"`
} `json:"jpg"`
Webp struct {
ImageURL string `json:"image_url"`
SmallImageURL string `json:"small_image_url"`
LargeImageURL string `json:"large_image_url"`
} `json:"webp"`
} `json:"images"`
Trailer struct {
YoutubeID string `json:"youtube_id"`
URL string `json:"url"`
EmbedURL string `json:"embed_url"`
Images struct {
ImageURL string `json:"image_url"`
SmallImageURL string `json:"small_image_url"`
MediumImageURL string `json:"medium_image_url"`
LargeImageURL string `json:"large_image_url"`
MaximumImageURL string `json:"maximum_image_url"`
} `json:"images"`
} `json:"trailer"`
Title string `json:"title"`
TitleEnglish string `json:"title_english"`
TitleJapanese string `json:"title_japanese"`
TitleSynonyms []string `json:"title_synonyms"`
Type string `json:"type"`
Source string `json:"source"`
Episodes int `json:"episodes"`
Status string `json:"status"`
Airing bool `json:"airing"`
Aired struct {
From time.Time `json:"from"`
To time.Time `json:"to"`
Prop struct {
From struct {
Day int `json:"day"`
Month int `json:"month"`
Year int `json:"year"`
} `json:"from"`
To struct {
Day int `json:"day"`
Month int `json:"month"`
Year int `json:"year"`
} `json:"to"`
} `json:"prop"`
String string `json:"string"`
} `json:"aired"`
Duration string `json:"duration"`
Rating string `json:"rating"`
Score float64 `json:"score"`
ScoredBy int `json:"scored_by"`
Rank int `json:"rank"`
Popularity int `json:"popularity"`
Members int `json:"members"`
Favorites int `json:"favorites"`
Synopsis string `json:"synopsis"`
Background string `json:"background"`
Season string `json:"season"`
Year int `json:"year"`
Broadcast struct {
Day string `json:"day"`
Time string `json:"time"`
Timezone string `json:"timezone"`
String string `json:"string"`
} `json:"broadcast"`
Producers []struct {
MalID int `json:"mal_id"`
Type string `json:"type"`
Name string `json:"name"`
URL string `json:"url"`
} `json:"producers"`
Licensors []struct {
MalID int `json:"mal_id"`
Type string `json:"type"`
Name string `json:"name"`
URL string `json:"url"`
} `json:"licensors"`
Studios []struct {
MalID int `json:"mal_id"`
Type string `json:"type"`
Name string `json:"name"`
URL string `json:"url"`
} `json:"studios"`
Genres []struct {
MalID int `json:"mal_id"`
Type string `json:"type"`
Name string `json:"name"`
URL string `json:"url"`
} `json:"genres"`
ExplicitGenres []interface{} `json:"explicit_genres"`
Themes []struct {
MalID int `json:"mal_id"`
Type string `json:"type"`
Name string `json:"name"`
URL string `json:"url"`
} `json:"themes"`
Demographics []struct {
MalID int `json:"mal_id"`
Type string `json:"type"`
Name string `json:"name"`
URL string `json:"url"`
} `json:"demographics"`
}
type SeasonJikan struct {
Pagination struct {
LastVisiblePage int `json:"last_visible_page"`
HasNextPage bool `json:"has_next_page"`
CurrentPage int `json:"current_page"`
Items struct {
Count int `json:"count"`
Total int `json:"total"`
PerPage int `json:"per_page"`
} `json:"items"`
} `json:"pagination"`
Data []SeasonAnimeJikan `json:"data"`
}
type MmOracle struct {
Id int `json:"id"`
Title string `json:"title"`
Anime int64 `json:"anime"`
AvgScore int `json:"avgScore"`
}
type MovieChart struct {
MmId int `json:"mmId"`
Anime int64 `json:"anime"`
Title string `json:"title"`
AvgScore float64 `json:"avgScore"`
UserCount int `json:"userCount"`
}
type SomewhatThreadSafeTime struct {
sync.Mutex
stamp time.Time
}