2025-04-06 03:24:50 +10:00
u
2025-04-06 03:24:50 +10:00
2025-04-05 01:02:56 +11:00
u
2025-04-06 00:28:00 +11:00
u
2025-04-06 00:28:00 +11:00
u
2025-04-06 03:24:50 +10:00
fix
2025-04-05 12:18:58 +11:00
u
2025-04-05 01:22:14 +11:00
2025-04-05 01:02:56 +11:00
2025-04-05 11:53:00 +11:00
u
2025-04-06 03:24:50 +10:00
u
2025-04-06 03:24:50 +10:00
2025-04-05 01:02:56 +11:00
u
2025-04-05 02:42:09 +11: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.GetLastOneId()
	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)
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Description
a go library to access IGDB API
Readme MIT 432 KiB
Languages
Go 99.8%
Shell 0.2%