nagato

package module
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 12, 2024 License: MIT Imports: 10 Imported by: 0

README

Nagato

Go Report Card Go Reference

nagato is just another API wrapper library to use MyAnimeList API.

This library contains 2 types of wrapper library, nagato and mal. mal is library to call MyAnimeList API without any validation and modification of the request and response. nagato wraps mal but will validate the request first before calling the API and modify the response to an easier to use format.

This libary is built following MyAnimeList's API reference and inspired by nstratos's library. This library also contains some undocumented documentation, so use it at your own risk.

Features

Feature mal nagato
Oauth2
Get anime list
Get anime details
Get anime ranking
Get seasonal anime
Get suggested anime
Update my anime list
Delete my anime list
Get user anime list
Get forum boards
Get forum topic detail
Get forum topics
Get manga list
Get manga details
Get manga ranking
Update my manga list
Delete my manga list
Get user manga list
Get my user info
Additional Features
Return response code
Rate limit
Validate request
Custom data type
Prettier returned struct

Installation

# For nagato.
go get github.com/rl404/nagato

# For mal.
go get github.com/rl404/nagato/mal

Requirement

You need client id and client secret to use the API. You can get them by registering from here.

Example

Please go to /example folder for examples. Also, you can read the documentation for more details.

Trivia

Nagato's name is taken from japanese battleship. She is the lead ship of the Nagato-class. Also, exists in Kantai Collection games and anime.

License

MIT License

Copyright (c) 2022 Axel

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidDate            = errors.New("invalid date")
	ErrForumTopicMissingQuery = errors.New("at least one of BoardID, SubboardID, or Query is required")
)

List of errors.

Functions

This section is empty.

Types

type AlternativeTitles

type AlternativeTitles struct {
	Synonyms []string
	English  string
	Japanese string
}

AlternativeTitles is alternative title model.

type Anime

type Anime struct {
	ID                     int
	Title                  string
	MainPicture            Picture
	AlternativeTitles      AlternativeTitles
	StartDate              Date
	EndDate                Date
	Synopsis               string
	Mean                   float64
	Rank                   int
	Popularity             int
	NumListUsers           int
	NumScoringUsers        int
	NSFW                   NsfwType
	Genres                 []Genre
	MediaType              MediaType
	Status                 StatusType
	MyListStatus           UserAnimeListStatus // Need oauth.
	NumEpisodes            int
	StartSeason            Season
	Broadcast              Broadcast
	Source                 SourceType
	AverageEpisodeDuration time.Duration
	Rating                 RatingType
	Studios                []Studio
	Pictures               []Picture
	Background             string
	RelatedAnime           []RelatedAnime
	RelatedManga           []RelatedManga // Always empty.
	Recommendations        []AnimeRecommendation
	Statistics             Statistic
	NumFavorites           int         // Undocumented.
	OpeningThemes          []ThemeSong // Undocumented.
	EndingThemes           []ThemeSong // Undocumented.
	Videos                 []Video     // Undocumented.
}

Anime is anime model.

type AnimeField

type AnimeField string

AnimeField is anime fields.

const (
	AnimeFieldAlternativeTitles      AnimeField = "alternative_titles"
	AnimeFieldStartDate              AnimeField = "start_date"
	AnimeFieldEndDate                AnimeField = "end_date"
	AnimeFieldSynopsis               AnimeField = "synopsis"
	AnimeFieldMean                   AnimeField = "mean"
	AnimeFieldRank                   AnimeField = "rank"
	AnimeFieldPopularity             AnimeField = "popularity"
	AnimeFieldNumListUsers           AnimeField = "num_list_users"
	AnimeFieldNumScoringUsers        AnimeField = "num_scoring_users"
	AnimeFieldNSFW                   AnimeField = "nsfw"
	AnimeFieldGenres                 AnimeField = "genres"
	AnimeFieldMediaType              AnimeField = "media_type"
	AnimeFieldStatus                 AnimeField = "status"
	AnimeFieldMyListStatus           AnimeField = "my_list_status" // Need oauth2.
	AnimeFieldNumEpisodes            AnimeField = "num_episodes"
	AnimeFieldStartSeason            AnimeField = "start_season"
	AnimeFieldBroadcast              AnimeField = "broadcast"
	AnimeFieldSource                 AnimeField = "source"
	AnimeFieldAverageEpisodeDuration AnimeField = "average_episode_duration"
	AnimeFieldRating                 AnimeField = "rating"
	AnimeFieldStudios                AnimeField = "studios"
	AnimeFieldPictures               AnimeField = "pictures"       // Can't include this field in a list.
	AnimeFieldBackground             AnimeField = "background"     // Can't include this field in a list.
	AnimeFieldStatistics             AnimeField = "statistics"     // Can't include this field in a list.
	AnimeFieldNumFavorites           AnimeField = "num_favorites"  // Undocumented.
	AnimeFieldOpeningThemes          AnimeField = "opening_themes" // Undocumented & can't include this field in a list.
	AnimeFieldEndingThemes           AnimeField = "ending_themes"  // Undocumented & can't include this field in a list.
	AnimeFieldVideos                 AnimeField = "videos"         // Undocumented & can't include this field in a list.
)

Available anime fields.

id, title, main_picture are returned by default.

func AnimeFieldRecommendations

func AnimeFieldRecommendations(fields ...AnimeField) AnimeField

AnimeFieldRecommendations is to generate recommendations field.

Can't include this field in a list.

func AnimeFieldRelatedAnime

func AnimeFieldRelatedAnime(fields ...AnimeField) AnimeField

AnimeFieldRelatedAnime is to generate related anime field.

Can't include this field in a list.

func AnimeFieldRelatedManga

func AnimeFieldRelatedManga(fields ...MangaField) AnimeField

AnimeFieldRelatedManga is to generate related manga field.

Related manga always return empty from API.

Can't include this field in a list.

func AnimeFieldUserStatus

func AnimeFieldUserStatus(fields ...UserAnimeField) AnimeField

AnimeFieldUserStatus is to generate user status field.

Used only for getting user anime list.

type AnimeRecommendation

type AnimeRecommendation struct {
	Anime              Anime
	NumRecommendations int
}

AnimeRecommendation is anime recommendation model.

type Author

type Author struct {
	Person Person
	Role   string
}

Author is author model.

type Broadcast

type Broadcast struct {
	DayOfTheWeek DayType
	StartTime    string
}

Broadcast is broadcast model.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is nagato client.

func New

func New(clientID string) *Client

New to create new default nagato client.

func (*Client) DeleteMyAnimeListStatus added in v0.3.0

func (c *Client) DeleteMyAnimeListStatus(id int) (int, error)

DeleteMyAnimeListStatus to delete my anime list status.

Need oauth2.

func (*Client) DeleteMyAnimeListStatusWithContext added in v0.3.0

func (c *Client) DeleteMyAnimeListStatusWithContext(ctx context.Context, id int) (int, error)

DeleteMyAnimeListStatusWithContext to delete my anime list status with context.

Need oauth2.

func (*Client) DeleteMyMangaListStatus added in v0.3.0

func (c *Client) DeleteMyMangaListStatus(id int) (int, error)

DeleteMyMangaListStatus to delete my manga list status.

Need oauth2.

func (*Client) DeleteMyMangaListStatusWithContext added in v0.3.0

func (c *Client) DeleteMyMangaListStatusWithContext(ctx context.Context, id int) (int, error)

DeleteMyMangaListStatusWithContext to delete my manga list status with context.

Need oauth2.

func (*Client) GetAnimeDetails

func (c *Client) GetAnimeDetails(id int, fields ...AnimeField) (*Anime, int, error)

GetAnimeDetails to get anime details.

func (*Client) GetAnimeDetailsWithContext

func (c *Client) GetAnimeDetailsWithContext(ctx context.Context, id int, fields ...AnimeField) (*Anime, int, error)

GetAnimeDetailsWithContext to get anime details with context.

func (*Client) GetAnimeList

func (c *Client) GetAnimeList(param GetAnimeListParam, fields ...AnimeField) ([]Anime, int, error)

GetAnimeList to get anime list.

func (*Client) GetAnimeListWithContext

func (c *Client) GetAnimeListWithContext(ctx context.Context, param GetAnimeListParam, fields ...AnimeField) ([]Anime, int, error)

GetAnimeListWithContext to get anime list with context.

func (*Client) GetAnimeRanking

func (c *Client) GetAnimeRanking(param GetAnimeRankingParam, fields ...AnimeField) ([]Anime, int, error)

GetAnimeRanking to get anime ranking list.

func (*Client) GetAnimeRankingWithContext

func (c *Client) GetAnimeRankingWithContext(ctx context.Context, param GetAnimeRankingParam, fields ...AnimeField) ([]Anime, int, error)

GetAnimeRankingWithContext to get anime ranking list with context.

func (*Client) GetForumBoards added in v0.3.0

func (c *Client) GetForumBoards() ([]ForumBoardCategory, int, error)

GetForumBoards to get forum board list.

func (*Client) GetForumBoardsWithContext added in v0.3.0

func (c *Client) GetForumBoardsWithContext(ctx context.Context) ([]ForumBoardCategory, int, error)

GetForumBoardsWithContext to get forum board list with context.

func (*Client) GetForumTopicDetails added in v0.3.0

func (c *Client) GetForumTopicDetails(param GetForumTopicDetailsParam) (*ForumTopicDetail, int, error)

GetForumTopicDetails to get forum topic details.

func (*Client) GetForumTopicDetailsWithContext added in v0.3.0

func (c *Client) GetForumTopicDetailsWithContext(ctx context.Context, param GetForumTopicDetailsParam) (*ForumTopicDetail, int, error)

GetForumTopicDetailsWithContext to get forum topic details with context.

func (*Client) GetForumTopics added in v0.3.0

func (c *Client) GetForumTopics(param GetForumTopicsParam) ([]ForumTopic, int, error)

GetForumTopics to get forum topic list.

func (*Client) GetForumTopicsWithContext added in v0.3.0

func (c *Client) GetForumTopicsWithContext(ctx context.Context, param GetForumTopicsParam) ([]ForumTopic, int, error)

GetForumTopicsWithContext to get forum topic list with context.

func (*Client) GetMangaDetails

func (c *Client) GetMangaDetails(id int, fields ...MangaField) (*Manga, int, error)

GetMangaDetails to get manga details.

func (*Client) GetMangaDetailsWithContext

func (c *Client) GetMangaDetailsWithContext(ctx context.Context, id int, fields ...MangaField) (*Manga, int, error)

GetMangaDetailsWithContext to get manga details with context.

func (*Client) GetMangaList

func (c *Client) GetMangaList(param GetMangaListParam, fields ...MangaField) ([]Manga, int, error)

GetMangaList to get manga list.

func (*Client) GetMangaListWithContext

func (c *Client) GetMangaListWithContext(ctx context.Context, param GetMangaListParam, fields ...MangaField) ([]Manga, int, error)

GetMangaListWithContext to get manga list with context.

func (*Client) GetMangaRanking

func (c *Client) GetMangaRanking(param GetMangaRankingParam, fields ...MangaField) ([]Manga, int, error)

GetMangaRanking to get manga ranking.

func (*Client) GetMangaRankingWithContext

func (c *Client) GetMangaRankingWithContext(ctx context.Context, param GetMangaRankingParam, fields ...MangaField) ([]Manga, int, error)

GetMangaRankingWithContext to get manga ranking with context.

func (*Client) GetSeasonalAnime

func (c *Client) GetSeasonalAnime(param GetSeasonalAnimeParam, fields ...AnimeField) ([]Anime, int, error)

GetSeasonalAnime to get seasonal anime list.

func (*Client) GetSeasonalAnimeWithContext

func (c *Client) GetSeasonalAnimeWithContext(ctx context.Context, param GetSeasonalAnimeParam, fields ...AnimeField) ([]Anime, int, error)

GetSeasonalAnimeWithContext to get seasonal anime list with context.

func (*Client) GetSuggestedAnime

func (c *Client) GetSuggestedAnime(param GetSuggestedAnimeParam, fields ...AnimeField) ([]Anime, int, error)

GetSuggestedAnime to get suggested anime list.

Need oauth2.

func (*Client) GetSuggestedAnimeWithContext

func (c *Client) GetSuggestedAnimeWithContext(ctx context.Context, param GetSuggestedAnimeParam, fields ...AnimeField) ([]Anime, int, error)

GetSuggestedAnimeWithContext to get suggested anime list with context.

Need oauth2.

func (*Client) GetUserAnimeList

func (c *Client) GetUserAnimeList(param GetUserAnimeListParam, fields ...AnimeField) ([]UserAnime, int, error)

GetUserAnimeList to get user anime list.

func (*Client) GetUserAnimeListWithContext

func (c *Client) GetUserAnimeListWithContext(ctx context.Context, param GetUserAnimeListParam, fields ...AnimeField) ([]UserAnime, int, error)

GetUserAnimeListWithContext to get user anime list with context.

func (*Client) GetUserInfo added in v0.3.0

func (c *Client) GetUserInfo(username string, fields ...UserField) (*User, int, error)

GetUserInfo to get user info.

Only `@me` in username param works for now.

Need oauth2.

func (*Client) GetUserInfoWithContext added in v0.3.0

func (c *Client) GetUserInfoWithContext(ctx context.Context, username string, fields ...UserField) (*User, int, error)

GetUserInfoWithContext to get user info with context.

Only `@me` in username param works for now.

Need oauth2.

func (*Client) GetUserMangaList

func (c *Client) GetUserMangaList(param GetUserMangaListParam, fields ...MangaField) ([]UserManga, int, error)

GetUserMangaList to get user manga list.

func (*Client) GetUserMangaListWithContext

func (c *Client) GetUserMangaListWithContext(ctx context.Context, param GetUserMangaListParam, fields ...MangaField) ([]UserManga, int, error)

GetUserMangaListWithContext to get user manga list with context.

func (*Client) SetHttpClient

func (c *Client) SetHttpClient(http *http.Client)

SetHttpClient to override http client used by mal client.

func (*Client) SetLimiter

func (c *Client) SetLimiter(limiter limiter.Limiter)

SetLimiter to override limiter in mal client.

func (*Client) SetMalClient

func (c *Client) SetMalClient(mal *mal.Client)

SetMalClient to override mal client.

func (*Client) UpdateMyAnimeListStatus added in v0.3.0

func (c *Client) UpdateMyAnimeListStatus(param UpdateMyAnimeListStatusParam) (*UserAnimeListStatus, int, error)

UpdateMyAnimeListStatus to update my anime list status.

Need oauth2.

func (*Client) UpdateMyAnimeListStatusWithContext added in v0.3.0

func (c *Client) UpdateMyAnimeListStatusWithContext(ctx context.Context, param UpdateMyAnimeListStatusParam) (*UserAnimeListStatus, int, error)

UpdateMyAnimeListStatusWithContext to update my anime list status with context.

Need oauth2.

func (*Client) UpdateMyMangaListStatus added in v0.3.0

func (c *Client) UpdateMyMangaListStatus(param UpdateMyMangaListStatusParam) (*UserMangaListStatus, int, error)

UpdateMyMangaListStatus to update my manga list status.

Need oauth2.

func (*Client) UpdateMyMangaListStatusWithContext added in v0.3.0

func (c *Client) UpdateMyMangaListStatusWithContext(ctx context.Context, param UpdateMyMangaListStatusParam) (*UserMangaListStatus, int, error)

UpdateMyMangaListStatusWithContext to update my manga list status with context.

Need oauth2.

type Date

type Date struct {
	Year  int `validate:"gte=0"`
	Month int `validate:"gte=0,lte=12"`
	Day   int `validate:"gte=0,lte=31"`
}

Date is date model.

type DayType

type DayType string

DayType is day types.

const (
	DayMonday    DayType = "monday"
	DayTuesday   DayType = "tuesday"
	DayWednesday DayType = "wednesday"
	DayThursday  DayType = "thursday"
	DayFriday    DayType = "friday"
	DaySaturday  DayType = "saturday"
	DaySunday    DayType = "sunday"
	DayOther     DayType = "other"
)

Available day types.

type ForumBoard added in v0.3.0

type ForumBoard struct {
	ID          int
	Title       string
	Description string
	Subboards   []ForumSubboard
}

ForumBoard is forum board model.

type ForumBoardCategory added in v0.3.0

type ForumBoardCategory struct {
	Title  string
	Boards []ForumBoard
}

ForumBoardCategory is forum board category model.

type ForumPoll added in v0.3.0

type ForumPoll struct {
	ID       int
	Question string
	IsClosed bool
	Options  []ForumPollOption
}

ForumPoll is forum poll model.

type ForumPollOption added in v0.3.0

type ForumPollOption struct {
	ID    int
	Text  string
	Votes int
}

ForumPollOption is forum poll option.

type ForumPost added in v0.3.0

type ForumPost struct {
	ID        int
	Number    int
	CreatedAt time.Time
	CreatedBy string
	Body      string
	Signature string
}

ForumPost is forum post model.

type ForumSubboard added in v0.3.0

type ForumSubboard struct {
	ID    int
	Title string
}

ForumSubboard is forum subboard model.

type ForumTopic added in v0.3.0

type ForumTopic struct {
	ID                int
	Title             string
	CreatedAt         time.Time
	CreatedBy         string
	PostCount         int
	LastPostCreatedAt time.Time
	LastPostCreatedBy string
	IsLocked          bool
}

ForumTopic is forum topic model.

type ForumTopicDetail added in v0.3.0

type ForumTopicDetail struct {
	Title string
	Posts []ForumPost
	Poll  ForumPoll
}

ForumTopicDetail is forum topic detail model.

type ForumTopicSortType added in v0.3.0

type ForumTopicSortType string

ForumTopicSortType is forum topic sort types.

const (
	ForumTopicSortRecent ForumTopicSortType = "recent"
)

Available forum topic sort types.

type Genre

type Genre struct {
	ID   int
	Name string
}

Genre is genre model.

type GetAnimeListParam

type GetAnimeListParam struct {
	Query  string `validate:"required,gte=3,lte=64" mod:"trim"`
	NSFW   bool   ``
	Limit  int    `validate:"gt=0,lte=100" mod:"default=100"`
	Offset int    `validate:"gte=0"`
}

GetAnimeListParam is get anime list param model.

type GetAnimeRankingParam

type GetAnimeRankingParam struct {
	RankingType RankingType `validate:"oneof=all airing upcoming tv ova movie special bypopularity favorite" mod:"trim,default=all"`
	NSFW        bool        ``
	Limit       int         `validate:"gt=0,lte=500" mod:"default=100"`
	Offset      int         `validate:"gte=0"`
}

GetAnimeRankingParam is get anime ranking param.

type GetForumTopicDetailsParam added in v0.3.0

type GetForumTopicDetailsParam struct {
	ID     int `validate:"gt=0"`
	Limit  int `validate:"gt=0,lte=100" mod:"default=100"`
	Offset int `validate:"gte=0"`
}

GetForumTopicDetailsParam is get forum topic details param.

type GetForumTopicsParam added in v0.3.0

type GetForumTopicsParam struct {
	BoardID       int                `validate:"gte=0"`
	SubboardID    int                `validate:"gte=0"`
	Query         string             `mod:"trim"`
	TopicUsername string             `mod:"trim"`
	Username      string             `mod:"trim"`
	Sort          ForumTopicSortType `validate:"oneof=recent" mod:"trim,default=recent"`
	Limit         int                `validate:"gt=0,lte=100" mod:"default=100"`
	Offset        int                `validate:"gte=0"`
}

GetForumTopicsParam is get forum topics param.

type GetMangaListParam

type GetMangaListParam struct {
	Query  string `validate:"required,gte=3,lte=64" mod:"trim"`
	NSFW   bool   ``
	Limit  int    `validate:"gt=0,lte=100" mod:"default=100"`
	Offset int    `validate:"gte=0"`
}

GetMangaListParam is get manga list param model.

type GetMangaRankingParam

type GetMangaRankingParam struct {
	RankingType RankingType `validate:"oneof=all manga novels oneshots doujin manhwa manhua bypopularity favorite" mod:"trim,default=all"`
	NSFW        bool        ``
	Limit       int         `validate:"gt=0,lte=500" mod:"default=100"`
	Offset      int         `validate:"gte=0"`
}

GetMangaRankingParam is get manga ranking param.

type GetSeasonalAnimeParam

type GetSeasonalAnimeParam struct {
	Year   int                   `validate:"gt=0"`
	Season SeasonType            `validate:"required,oneof=winter spring summer fall" mod:"trim"`
	NSFW   bool                  ``
	Sort   SeasonalAnimeSortType `validate:"oneof=anime_num_list_users anime_score" mod:"trim,default=anime_num_list_users"`
	Limit  int                   `validate:"gt=0,lte=500" mod:"default=100"`
	Offset int                   `validate:"gte=0"`
}

GetSeasonalAnimeParam is get seasonal anime param.

type GetSuggestedAnimeParam

type GetSuggestedAnimeParam struct {
	NSFW   bool ``
	Limit  int  `validate:"gt=0,lte=100" mod:"default=100"`
	Offset int  `validate:"gte=0"`
}

GetSuggestedAnimeParam is get suggested anime param.

type GetUserAnimeListParam

type GetUserAnimeListParam struct {
	Username string              `validate:"required,gte=3,lte=64" mod:"trim"`
	Status   UserAnimeStatusType `validate:"oneof='' watching completed on_hold dropped plan_to_watch" mod:"trim"`
	NSFW     bool                ``
	Sort     UserAnimeSortType   `validate:"oneof=list_score list_updated_at anime_title anime_start_date anime_id" mod:"trim,default=anime_title"`
	Limit    int                 `validate:"gt=0,lte=1000" mod:"default=100"`
	Offset   int                 `validate:"gte=0"`
}

GetUserAnimeListParam is get user anime list param.

type GetUserMangaListParam

type GetUserMangaListParam struct {
	Username string              `validate:"required,gte=3,lte=64" mod:"trim"`
	Status   UserMangaStatusType `validate:"oneof='' reading completed on_hold dropped plan_to_read" mod:"trim"`
	NSFW     bool                ``
	Sort     UserMangaSortType   `validate:"oneof=list_score list_updated_at manga_title manga_start_date manga_id" mod:"trim,default=manga_title"`
	Limit    int                 `validate:"gt=0,lte=1000" mod:"default=100"`
	Offset   int                 `validate:"gte=0"`
}

GetUserMangaListParam is get user manga list param.

type Magazine

type Magazine struct {
	ID   int
	Name string
}

Magazine is magazine model.

type Manga

type Manga struct {
	ID                int
	Title             string
	MainPicture       Picture
	AlternativeTitles AlternativeTitles
	StartDate         Date
	EndDate           Date
	Synopsis          string
	Mean              float64
	Rank              int
	Popularity        int
	NumListUsers      int
	NumScoringUsers   int
	NSFW              NsfwType
	Genres            []Genre
	MediaType         MediaType
	Status            StatusType
	MyListStatus      UserMangaListStatus // Need oauth2.
	NumVolumes        int
	NumChapters       int
	Authors           []Author
	Pictures          []Picture
	Background        string
	RelatedAnime      []RelatedAnime // Always empty.
	RelatedManga      []RelatedManga
	Recommendations   []MangaRecommendation
	Serialization     []Serialization
	NumFavorites      int // Undocumented.
}

Manga is manga model.

type MangaField

type MangaField string

MangaField is manga fields.

const (
	MangaFieldAlternativeTitles MangaField = "alternative_titles"
	MangaFieldStartDate         MangaField = "start_date"
	MangaFieldEndDate           MangaField = "end_date"
	MangaFieldSynopsis          MangaField = "synopsis"
	MangaFieldMean              MangaField = "mean"
	MangaFieldRank              MangaField = "rank"
	MangaFieldPopularity        MangaField = "popularity"
	MangaFieldNumListUsers      MangaField = "num_list_users"
	MangaFieldNumScoringUsers   MangaField = "num_scoring_users"
	MangaFieldNSFW              MangaField = "nsfw"
	MangaFieldGenres            MangaField = "genres"
	MangaFieldMediaType         MangaField = "media_type"
	MangaFieldStatus            MangaField = "status"
	MangaFieldMyListStatus      MangaField = "my_list_status" // Need oauth2.
	MangaFieldNumVolumes        MangaField = "num_volumes"
	MangaFieldNumChapters       MangaField = "num_chapters"
	MangaFieldAuthors           MangaField = "authors{first_name,last_name}"
	MangaFieldPictures          MangaField = "pictures"      // Can't include this field in a list.
	MangaFieldBackground        MangaField = "background"    // Can't include this field in a list.
	MangaFieldSerialization     MangaField = "serialization" // Can't include this field in a list.
	MangaFieldNumFavorites      MangaField = "num_favorites" // Undocumented.
)

Available manga fields.

id, title, main_picture are returned by default.

func MangaFieldRecommendations

func MangaFieldRecommendations(fields ...MangaField) MangaField

MangaFieldRecommendations is to generate recommendations field.

Can't include this field in a list.

func MangaFieldRelatedAnime

func MangaFieldRelatedAnime(fields ...AnimeField) MangaField

MangaFieldRelatedAnime is to generate related anime field.

Related anime always return empty from API.

Can't include this field in a list.

func MangaFieldRelatedManga

func MangaFieldRelatedManga(fields ...MangaField) MangaField

MangaFieldRelatedManga is to generate related manga field.

Can't include this field in a list.

func MangaFieldUserStatus

func MangaFieldUserStatus(fields ...UserMangaField) MangaField

MangaFieldUserStatus is to generate user status field.

Used only for getting user manga list.

type MangaRecommendation

type MangaRecommendation struct {
	Manga              Manga
	NumRecommendations int
}

MangaRecommendation is manga recommendation model.

type MediaType

type MediaType string

MediaType is media types.

const (
	MediaUnknown MediaType = "unknown"

	// Anime.
	MediaTV      MediaType = "tv"
	MediaOVA     MediaType = "ova"
	MediaMovie   MediaType = "movie"
	MediaSpecial MediaType = "special"
	MediaONA     MediaType = "ona"
	MediaMusic   MediaType = "music"

	// Manga.
	MediaManga      MediaType = "manga"
	MediaNovel      MediaType = "novel"
	MediaOneShot    MediaType = "one_shot"
	MediaDoujinshi  MediaType = "doujinshi"
	MediaManhwa     MediaType = "manhwa"
	MediaManhua     MediaType = "manhua"
	MediaOEL        MediaType = "oel"
	MediaLightNovel MediaType = "light_novel" // Undocumented.
)

Available media types.

type NsfwType

type NsfwType string

NsfwType is nsfw types.

const (
	NsfwWhite NsfwType = "white"
	NsfwGray  NsfwType = "gray"
	NsfwBlack NsfwType = "black" // API never return this.
)

Available nsfw types.

type Person

type Person struct {
	ID        int
	FirstName string
	LastName  string
}

Person is person model.

type Picture

type Picture struct {
	Large  string
	Medium string
}

Picture is picture model.

type PriorityType

type PriorityType int

PriorityType is priority types.

const (
	PriorityLow PriorityType = iota
	PriorityMedium
	PriorityHigh
)

Available priority types.

type RankingType

type RankingType string

RankingType is ranking types.

const (
	RankingAll          RankingType = "all"
	RankingByPopularity RankingType = "bypopularity"
	RankingFavorite     RankingType = "favorite"

	// Anime.
	RankingAiring   RankingType = "airing"
	RankingUpcoming RankingType = "upcoming"
	RankingTV       RankingType = "tv"
	RankingOVA      RankingType = "ova"
	RankingMovie    RankingType = "movie"
	RankingSpecial  RankingType = "special"

	// Manga.
	RankingManga   RankingType = "manga"
	RankingNovel   RankingType = "novels"
	RankingOneShot RankingType = "oneshots"
	RankingDoujin  RankingType = "doujin"
	RankingManhwa  RankingType = "manhwa"
	RankingManhua  RankingType = "manhua"
)

Available ranking types.

type RatingType

type RatingType string

RatingType is rating types.

const (
	RatingG     RatingType = "g"
	RatingPG    RatingType = "pg"
	RatingPG13  RatingType = "pg_13"
	RatingR     RatingType = "r"
	RatingRPlus RatingType = "r+"
	RatingRX    RatingType = "rx"
)

Available rating types.

type RelatedAnime

type RelatedAnime struct {
	Anime        Anime
	RelationType RelationType
}

RelatedAnime is related anime model.

type RelatedManga

type RelatedManga struct {
	Manga        Manga
	RelationType RelationType
}

RelatedManga is related manga model.

type RelationType

type RelationType string

RelationType is relation types.

const (
	RelationSequel             RelationType = "sequel"
	RelationPrequel            RelationType = "prequel"
	RelationAlternativeSetting RelationType = "alternative_setting"
	RelationAlternativeVersion RelationType = "alternative_version"
	RelationSideStory          RelationType = "side_story"
	RelationParentStory        RelationType = "parent_story"
	RelationSummary            RelationType = "summary"
	RelationFullStory          RelationType = "full_story"
	RelationSpinOff            RelationType = "spin_off"  // Undocumented.
	RelationOther              RelationType = "other"     // Undocumented.
	RelationCharacter          RelationType = "character" // Undocumented.
)

Available relation types.

type RereadValueType

type RereadValueType int

RereadValueType is reread value types.

const (
	RereadValueVeryLow RereadValueType = iota + 1
	RereadValueLow
	RereadValueMedium
	RereadValueHigh
	RereadValueVeryHigh
)

Available reread value types.

type RewatchValueType

type RewatchValueType int

RewatchValueType is rewatch value types.

const (
	RewatchValueVeryLow RewatchValueType = iota + 1
	RewatchValueLow
	RewatchValueMedium
	RewatchValueHigh
	RewatchValueVeryHigh
)

Available rewatch value types.

type Season

type Season struct {
	Year   int
	Season SeasonType
}

Season is season model.

type SeasonType

type SeasonType string

SeasonType is season types.

const (
	SeasonWinter SeasonType = "winter"
	SeasonSpring SeasonType = "spring"
	SeasonSummer SeasonType = "summer"
	SeasonFall   SeasonType = "fall"
)

Available season types.

type SeasonalAnimeSortType

type SeasonalAnimeSortType string

SeasonalAnimeSortType is seasonal anime sort types.

const (
	SeasonalAnimeSortByScore        SeasonalAnimeSortType = "anime_score" // Not working.
	SeasonalAnimeSortByNumListUsers SeasonalAnimeSortType = "anime_num_list_users"
)

Available seasonal anime sort types.

type Serialization

type Serialization struct {
	Magazine Magazine
	Role     string // Always empty.
}

Serialization is serialization model.

type SourceType

type SourceType string

SourceType is source types.

const (
	SourceOther        SourceType = "other"
	SourceOriginal     SourceType = "original"
	SourceManga        SourceType = "manga"
	Source4KomaManga   SourceType = "4_koma_manga"
	SourceWebManga     SourceType = "web_manga"
	SourceDigitalManga SourceType = "digital_manga"
	SourceNovel        SourceType = "novel"
	SourceLightNovel   SourceType = "light_novel"
	SourceVisualNovel  SourceType = "visual_novel"
	SourceGame         SourceType = "game"
	SourceCardGame     SourceType = "card_game"
	SourceBook         SourceType = "book"
	SourcePictureBook  SourceType = "picture_book"
	SourceRadio        SourceType = "radio"
	SourceMusic        SourceType = "music"
	SourceWebNovel     SourceType = "web_novel"   // Undocumented.
	SourceMixedMedia   SourceType = "mixed_media" // Undocumented.
)

Available source types.

type Statistic

type Statistic struct {
	NumListUsers int
	Status       StatisticStatus
}

Statistic is statistic model.

type StatisticStatus

type StatisticStatus struct {
	Watching    int
	Completed   int
	OnHold      int
	Dropped     int
	PlanToWatch int
}

StatisticStatus is statistic status model.

type StatusType

type StatusType string

StatusType is status types.

const (
	// Anime.
	StatusFinishedAiring  StatusType = "finished_airing"
	StatusCurrentlyAiring StatusType = "currently_airing"
	StatusNotYetAired     StatusType = "not_yet_aired"

	// Manga.
	StatusFinishedPublishing  StatusType = "finished"
	StatusCurrentlyPublishing StatusType = "currently_publishing"
	StatusNotYetPublished     StatusType = "not_yet_published"
	StatusOnHiatus            StatusType = "on_hiatus"    // Undocumented.
	StatusDiscontinued        StatusType = "discontinued" // Undocumented.
)

Available status types.

type Studio

type Studio struct {
	ID   int
	Name string
}

Studio is studio model.

type ThemeSong

type ThemeSong struct {
	ID   int
	Name string
}

ThemeSong is theme song model.

Undocumented.

type UpdateMyAnimeListStatusParam added in v0.3.0

type UpdateMyAnimeListStatusParam struct {
	ID             int                 `validate:"required,gt=0"`
	Status         UserAnimeStatusType `validate:"oneof='' watching completed on_hold dropped plan_to_watch" mod:"trim,default=plan_to_watch"`
	IsRewatching   bool                ``
	Score          int                 `validate:"gte=0,lte=10"`
	Episode        int                 `validate:"gte=0"`
	Priority       PriorityType        `validate:"gte=0,lte=2"`
	RewatchedTimes int                 `validate:"gte=0"`
	RewatchValue   RewatchValueType    `validate:"gte=0,lte=5"`
	Tags           []string            ``
	Comment        string              `mod:"trim"`
	StartDate      Date                ``
	FinishDate     Date                ``
}

UpdateMyAnimeListStatusParam is update my anime list status param.

type UpdateMyMangaListStatusParam added in v0.3.0

type UpdateMyMangaListStatusParam struct {
	ID          int                 `validate:"required,gt=0"`
	Status      UserMangaStatusType `validate:"oneof='' reading completed on_hold dropped plan_to_read" mod:"trim,default=plan_to_read"`
	IsRereading bool                ``
	Score       int                 `validate:"gte=0,lte=10"`
	Volume      int                 `validate:"gte=0"`
	Chapter     int                 `validate:"gte=0"`
	Priority    PriorityType        `validate:"gte=0,lte=2"`
	RereadTimes int                 `validate:"gte=0"`
	RereadValue RereadValueType     `validate:"gte=0,lte=5"`
	Tags        []string            ``
	Comment     string              `mod:"trim"`
	StartDate   Date                ``
	FinishDate  Date                ``
}

UpdateMyMangaListStatusParam is update my manga list status param.

type User added in v0.3.0

type User struct {
	ID              int
	Name            string
	Picture         string
	Gender          string
	Birthday        string
	Location        string
	JoinedAt        time.Time
	AnimeStatistics UserAnimeStatistic
	TimeZone        string
	IsSupporter     bool
}

User is user model.

type UserAnime

type UserAnime struct {
	Anime  Anime
	Status UserAnimeListStatus
}

UserAnime is user anime model.

type UserAnimeField

type UserAnimeField string

UserAnimeField is user anime fields.

const (
	UserAnimeNumTimesRewatched UserAnimeField = "num_times_rewatched"
	UserAnimeRewatchValue      UserAnimeField = "rewatch_value"
	UserAnimeTags              UserAnimeField = "tags"
	UserAnimeComments          UserAnimeField = "comments"
)

Available user anime fields.

status, score, num_episodes_watched, is_rewatching, start_date, finish_date, priority are returned by default.

type UserAnimeListStatus

type UserAnimeListStatus struct {
	Status             UserAnimeStatusType
	Score              int
	NumEpisodesWatched int
	IsRewatching       bool
	StartDate          Date
	FinishDate         Date
	Priority           PriorityType
	NumTimesRewatched  int
	RewatchValue       RewatchValueType
	Tags               []string
	Comments           string
	UpdatedAt          time.Time
}

UserAnimeListStatus is user anime list status model.

type UserAnimeSortType

type UserAnimeSortType string

UserAnimeSortType is user anime sort types.

const (
	UserAnimeSortScore     UserAnimeSortType = "list_score"
	UserAnimeSortUpdatedAt UserAnimeSortType = "list_updated_at"
	UserAnimeSortTitle     UserAnimeSortType = "anime_title"
	UserAnimeSortStartDate UserAnimeSortType = "anime_start_date"
	UserAnimeSortID        UserAnimeSortType = "anime_id" // Not working.
)

Available user anime sort types.

type UserAnimeStatistic added in v0.3.0

type UserAnimeStatistic struct {
	WatchingCount    int
	CompletedCount   int
	OnHoldCount      int
	DroppedCount     int
	PlanToWatchCount int
	TotalCount       int
	WatchedDays      float64
	WatchingDays     float64
	CompletedDays    float64
	OnHoldDays       float64
	DroppedDays      float64
	TotalDays        float64
	Episode          int
	RewatchedTimes   int
	MeanScore        float64
}

UserAnimeStatistic is user anime statistic.

type UserAnimeStatusType

type UserAnimeStatusType string

UserAnimeStatusType is user anime status types.

const (
	UserAnimeStatusWatching    UserAnimeStatusType = "watching"
	UserAnimeStatusCompleted   UserAnimeStatusType = "completed"
	UserAnimeStatusOnHold      UserAnimeStatusType = "on_hold"
	UserAnimeStatusDropped     UserAnimeStatusType = "dropped"
	UserAnimeStatusPlanToWatch UserAnimeStatusType = "plan_to_watch"
)

Available user anime status types.

type UserField added in v0.3.0

type UserField string

UserField is user fields.

const (
	UserFieldTimeZone        UserField = "time_zone"
	UserFieldAnimeStatistics UserField = "anime_statistics"
)

Available user fields.

id, name, picture, gender, birthday, location, joined_at is_supporter are returned by default.

type UserManga

type UserManga struct {
	Manga  Manga
	Status UserMangaListStatus
}

UserManga is user manga model.

type UserMangaField

type UserMangaField string

UserMangaField is user manga fields.

const (
	UserMangaNumTimesReread UserMangaField = "num_times_reread"
	UserMangaRereadValue    UserMangaField = "reread_value"
	UserMangaTags           UserMangaField = "tags"
	UserMangaComments       UserMangaField = "comments"
)

Available user manga fields.

status, score, num_volumes_read, num_chapters_read, is_rereading, start_date, finish_date, priority are returned by default.

type UserMangaListStatus

type UserMangaListStatus struct {
	Status          UserMangaStatusType
	Score           int
	NumVolumesRead  int
	NumChaptersRead int
	IsRereading     bool
	StartDate       Date
	FinishDate      Date
	Priority        PriorityType
	NumTimesReread  int
	RereadValue     RereadValueType
	Tags            []string
	Comments        string
	UpdatedAt       time.Time
}

UserMangaListStatus is my manga list status model.

type UserMangaSortType

type UserMangaSortType string

UserMangaSortType is user manga sort types.

const (
	UserMangaSortScore     UserMangaSortType = "list_score"
	UserMangaSortUpdatedAt UserMangaSortType = "list_updated_at"
	UserMangaSortTitle     UserMangaSortType = "manga_title"
	UserMangaSortStartDate UserMangaSortType = "manga_start_date"
	UserMangaSortID        UserMangaSortType = "manga_id" // Not working.
)

Available user manga sort types.

type UserMangaStatusType

type UserMangaStatusType string

UserMangaStatusType is user manga status types.

const (
	UserMangaStatusReading    UserMangaStatusType = "reading"
	UserMangaStatusCompleted  UserMangaStatusType = "completed"
	UserMangaStatusOnHold     UserMangaStatusType = "on_hold"
	UserMangaStatusDropped    UserMangaStatusType = "dropped"
	UserMangaStatusPlanToRead UserMangaStatusType = "plan_to_read"
)

Available user manga status types.

type Video

type Video struct {
	ID        int
	Title     string
	URL       string
	Thumbnail string
}

Video is video model.

Undocumented.

Directories

Path Synopsis
example
mal
internal
playground
Package playground is a wrapper of the original "github.com/go-playground/validator" and "github.com/go-playground/mold" library.
Package playground is a wrapper of the original "github.com/go-playground/validator" and "github.com/go-playground/mold" library.
Package mal is library for making request to MyAnimeList API using https://myanimelist.net/apiconfig/references/authorization and https://myanimelist.net/apiconfig/references/api/v2 as reference.
Package mal is library for making request to MyAnimeList API using https://myanimelist.net/apiconfig/references/authorization and https://myanimelist.net/apiconfig/references/api/v2 as reference.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL