Skip to content

Lotarcc/jikan-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jikan Go

A Go wrapper for the Jikan API.

Features

  • Complete Jikan v4 API coverage
  • Configurable endpoint support (use public Jikan API or your own instance)
  • Support for AniList scores from Jikan indexer
  • Comprehensive test coverage

Installation

go get github.com/lotarcc/jikan-go

Basic Usage

package main

import (
    "fmt"
    "github.com/lotarcc/jikan-go"
)

func main() {
    // Use default configuration (public Jikan API)
    anime, err := jikan.GetAnimeById(1)
    if err != nil {
        panic(err)
    }
    fmt.Printf("Title: %s\n", anime.Data.Title)
}

Custom Configuration

package main

import (
    "fmt"
    "github.com/lotarcc/jikan-go"
)

func main() {
    // Initialize with custom configuration
    jikan.Initialize(jikan.Config{
        Endpoint:      "http://localhost:8080/v4", // Your Jikan instance
        ClientTimeout: 30,                         // 30 seconds timeout
    })

    // Get anime data including AniList score
    anime, err := jikan.GetAnimeById(1)
    if err != nil {
        panic(err)
    }

    fmt.Printf("Title: %s\n", anime.Data.Title)
    fmt.Printf("MAL Score: %.2f\n", anime.Data.Score)
    fmt.Printf("AniList Score: %.2f\n", anime.Data.AnilistScore)
}

Available Methods

Anime Endpoints

  • GetAnimeById(id int) (*AnimeById, error)
  • GetAnimeCharacters(id int) (*AnimeCharacters, error)
  • GetAnimeStaff(id int) (*AnimeStaff, error)
  • GetAnimeEpisodes(id, page int) (*AnimeEpisodes, error)
  • GetAnimeEpisodeById(id, episode int) (*AnimeEpisodeById, error)
  • GetAnimeNews(id, page int) (*AnimeNews, error)
  • GetAnimeForum(id int, filter AnimeForumFilter) (*AnimeForum, error)
  • GetAnimeVideos(id int) (*AnimeVideos, error)
  • GetAnimePictures(id int) (*AnimePictures, error)
  • GetAnimeStatistics(id int) (*AnimeStatistics, error)
  • GetAnimeMoreInfo(id int) (*AnimeMoreInfo, error)
  • GetAnimeRecommendations(id int) (*AnimeRecommendations, error)
  • GetAnimeUserUpdates(id, page int) (*AnimeUserUpdates, error)
  • GetAnimeReviews(id, page int) (*AnimeReviews, error)
  • GetAnimeRelations(id int) (*AnimeRelations, error)
  • GetAnimeThemes(id int) (*AnimeThemes, error)
  • GetAnimeExternal(id int) (*AnimeExternal, error)
  • GetAnimeSearch(query url.Values) (*AnimeSearch, error)

Error Handling

The wrapper provides detailed error messages for various scenarios:

// Handle API errors
anime, err := jikan.GetAnimeById(1)
if err != nil {
    switch err.Error() {
    case "404 Not Found":
        fmt.Println("Anime not found")
    case "429 Too Many Requests":
        fmt.Println("Rate limit exceeded")
    default:
        fmt.Printf("Error: %v\n", err)
    }
}

Testing

Run the test suite:

go test -v

The test suite includes:

  • Unit tests for all endpoints
  • Integration tests with mock servers
  • Comprehensive endpoint coverage
  • Error handling tests

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages