mirror of
https://github.com/bestnite/go-igdb.git
synced 2025-04-20 00:45:54 +08:00
go-igdb
A Go client library for the IGDB (Internet Game Database) API v4. This library provides a convenient way to interact with IGDB's protobuf-based API endpoints.
Features
- Full support for IGDB API v4 endpoints
- Protobuf-based communication for efficient data transfer
- Rate limiting support
- Automatic token management for Twitch authentication
- Retry mechanism for failed requests
- Optional FlareSolverr integration for handling Cloudflare protection
Installation
go get github.com/bestnite/go-igdb
Quick Start
package main
import (
"log"
"github.com/bestnite/go-igdb"
)
func Test1(c *igdb.Client) {
game, err := c.Games.GetByID(1942)
if err != nil {
log.Fatal(err)
}
log.Printf("Name of game %d: %s\n", 1942, game.Name)
}
func Test2(c *igdb.Client) {
games, err := c.Games.GetByIDs([]uint64{119171, 119133})
if err != nil {
log.Fatal(err)
}
log.Printf("Names of games %d and %d: %s and %s\n", 119171, 119133, games[0].Name, games[1].Name)
}
func Test3(c *igdb.Client) {
total, err := c.Games.Count()
if err != nil {
log.Fatal(err)
}
log.Printf("Total number of games: %d\n", total)
}
func Test4(c *igdb.Client) {
games, err := c.Games.Paginated(0, 10)
if err != nil {
log.Fatal(err)
}
log.Printf("Names of ids 0 to 10 games:\n")
for _, game := range games {
log.Println(game.Name)
}
}
func Test5(c *igdb.Client) {
game, err := c.Games.Query("fields name,rating; sort rating desc; limit 1;")
if err != nil {
log.Fatalf("failed to get game: %s", err)
}
log.Printf("Name of first game with highest rating: %s\n", game[0].Name)
}
func Test6(c *igdb.Client) {
games, err := c.Games.Query("fields *; where rating > 70; limit 10;")
if err != nil {
panic(err)
}
log.Printf("Names of games with rating > 70 limit 10:\n")
for _, game := range games {
log.Println(game.Name)
}
}
func main() {
client := igdb.New("your-client-id", "your-client-secret")
Test1(client)
Test2(client)
Test3(client)
Test4(client)
Test5(client)
Test6(client)
}
Example Projects
Dependencies
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Languages
Go
99.8%
Shell
0.2%