A Go wrapper for the Jikan API.
- 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
go get github.com/lotarcc/jikan-gopackage 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)
}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)
}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)
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)
}
}Run the test suite:
go test -vThe test suite includes:
- Unit tests for all endpoints
- Integration tests with mock servers
- Comprehensive endpoint coverage
- Error handling tests
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.