rl404/go-malscraper

View on GitHub
api_search.go

Summary

Maintainability
B
5 hrs
Test Coverage
package malscraper

import (
    "github.com/rl404/go-malscraper/model"
)

// SearchAnime to quick search anime.
//
// Example: https://myanimelist.net/anime.php?q=naruto.
func (m *Malscraper) SearchAnime(title string, page ...int) ([]model.AnimeSearch, int, error) {
    p := 1
    if len(page) > 0 {
        p = page[0]
    }
    return m.AdvSearchAnime(model.Query{Title: title, Page: p})
}

// AdvSearchAnime to search anime with advanced query.
//
// Available constant options.
//
//  Type          Status           Rating
//  -----------   --------------   -------------
//  TypeDefault   StatusDefault    RatingDefault
//  TypeTV        StatusOnGoing    RatingG
//  TypeOVA       StatusFinished   RatingPG
//  TypeMovie     StatusUpcoming   RatingPG13
//  TypeSpecial                    RatingR17
//  TypeONA                        RatingR
//  TypeMusic                      RatingRx
//
// ProducerID should be from `GetProducers()`.
//
// GenreID should be from `GetAnimeGenres()`.
//
// Example: https://myanimelist.net/anime.php?q=naruto.
func (m *Malscraper) AdvSearchAnime(query model.Query) ([]model.AnimeSearch, int, error) {
    if query.Page == 0 {
        query.Page = 1
    }
    return m.api.SearchAnime(query)
}

// SearchManga to quick search manga.
//
// Example: https://myanimelist.net/manga.php?q=naruto.
func (m *Malscraper) SearchManga(title string, page ...int) ([]model.MangaSearch, int, error) {
    p := 1
    if len(page) > 0 {
        p = page[0]
    }
    return m.AdvSearchManga(model.Query{Title: title, Page: p})
}

// AdvSearchManga to search manga with advanced query.
//
// Available constant options.
//
//  Type             Status
//  -----------      --------------
//  TypeDefault      StatusDefault
//  TypeManga        StatusOnGoing
//  TypeLightNovel   StatusFinished
//  TypeOneShot      StatusUpcoming
//  TypeDoujinshi    StatusHiatus
//  TypeManhwa       StatusDiscontinued
//  TypeManhua
//  TypeNovel
//
// MagazineID should be from `GetMagazines()`.
//
// GenreID should be from `GetMangaGenres()`.
//
// Example: https://myanimelist.net/manga.php?q=naruto.
func (m *Malscraper) AdvSearchManga(query model.Query) ([]model.MangaSearch, int, error) {
    if query.Page == 0 {
        query.Page = 1
    }
    return m.api.SearchManga(query)
}

// SearchCharacter to search character.
//
// Example: https://myanimelist.net/character.php?q=luffy.
func (m *Malscraper) SearchCharacter(name string, page ...int) ([]model.CharacterSearch, int, error) {
    p := 1
    if len(page) > 0 {
        p = page[0]
    }
    return m.api.SearchCharacter(name, p)
}

// SearchPeople to search people.
//
// Example: https://myanimelist.net/people.php?q=kana.
func (m *Malscraper) SearchPeople(name string, page ...int) ([]model.PeopleSearch, int, error) {
    p := 1
    if len(page) > 0 {
        p = page[0]
    }
    return m.api.SearchPeople(name, p)
}

// SearchClub to quick search club.
//
// Example: https://myanimelist.net/clubs.php?cat=club&catid=0&q=naruto&action=find.
func (m *Malscraper) SearchClub(name string, page ...int) ([]model.ClubSearch, int, error) {
    p := 1
    if len(page) > 0 {
        p = page[0]
    }
    return m.AdvSearchClub(model.ClubQuery{Name: name, Page: p})
}

// AdvSearchClub to search club with advanced query.
//
// Available constant options.
//
//  Category             Sort
//  ------------------   -----------
//  AllCategory          SortDefault
//  AnimeCategory        SortName
//  ConventionCategory   SortComment
//  ActorCategory        SortPost
//  CharacterCategory    SortMember
//  CompanyCategory
//  GameCategory
//  JapanCategory
//  CityCategory
//  MusicCategory
//  MangaCategory
//  SchoolCategory
//  OtherCategory
//
// Example: https://myanimelist.net/clubs.php?cat=club&catid=0&q=naruto&action=find.
func (m *Malscraper) AdvSearchClub(query model.ClubQuery) ([]model.ClubSearch, int, error) {
    if query.Page == 0 {
        query.Page = 1
    }
    return m.api.SearchClub(query)
}

// SearchUser to quick search user.
//
// Example: https://myanimelist.net/users.php?q=rl404.
func (m *Malscraper) SearchUser(username string, page ...int) ([]model.UserSearch, int, error) {
    p := 1
    if len(page) > 0 {
        p = page[0]
    }
    return m.AdvSearchUser(model.UserQuery{Username: username, Page: p})
}

// AdvSearchUser to search user with advanced query.
//
// Gender should be one of these constants.
//
//  GenderDefault
//  GenderMale
//  GenderFemale
//  GenderNonBinary
//
// Example: https://myanimelist.net/users.php?q=rl404.
func (m *Malscraper) AdvSearchUser(query model.UserQuery) ([]model.UserSearch, int, error) {
    if query.Page == 0 {
        query.Page = 1
    }
    return m.api.SearchUser(query)
}