class

Srcom::Api::Games

Inherits Reference / Object

Constants

Log = Srcom::Log.for("games")

Class methods

find_by(name : String | Nil = nil, abbreviation : String | Nil = nil, released : Int32 | Nil = nil, gametype : String | Nil = nil, platform : String | Nil = nil, region : String | Nil = nil, genre : String | Nil = nil, engine : String | Nil = nil, developer : String | Nil = nil, publisher : String | Nil = nil, moderator : String | Nil = nil, order_by : String | Nil = nil, sort_direction : String | Nil = nil, page_size : Int32 = 20) : PageIterator(Game)

Searches through all Games using the given query parameters.

Searching by name performs a fuzzy search across game names and abbreviations.

Seaching by abbreviation performs an exact-match search.

Searching by released restricts to search to games released in that exact year.

All other search parameters must be an ID.

Possible values for order_by: "name.jap", "name.int", "abbreviation", "released", or "created", with the default being "name.int".

Possible values for sort_direction: "desc" or "asc", with the default being "asc".

NOTE: Not specifying any filter probably leads to the request eventually crashing, leading to incomplete data. If you need every game and can afford to lose some data per game, consider using .find_by_bulk instead.

NOTE: Since Games are very large objects this method defaults to a small page size to give the request a reasonable speed.

Source
find_by_bulk(name : String | Nil = nil, abbreviation : String | Nil = nil, released : Int32 | Nil = nil, gametype : String | Nil = nil, platform : String | Nil = nil, region : String | Nil = nil, genre : String | Nil = nil, engine : String | Nil = nil, developer : String | Nil = nil, publisher : String | Nil = nil, moderator : String | Nil = nil, order_by : String | Nil = nil, sort_direction : String | Nil = nil, page_size : Int32 = 1000) : PageIterator(BulkGame)

Searches through all Games using the given query parameters, returning BulkGames, which have a greatly reduced amount of data present.

Searching by name performs a fuzzy search across game names and abbreviations.

Seaching by abbreviation performs an exact-match search.

Searching by released restricts to search to games released in that exact year.

All other search parameters must be an ID.

Possible values for order_by: "name.jap", "name.int", "abbreviation", "released", or "created", with the default being "name.int".

Possible values for sort_direction: "desc" or "asc", with the default being "asc".

NOTE: As opposed to .find_by it is very much feasible to get every game on speedrun.com with this method.

Source
find_by_id(id : String) : Srcom::Game

Finds a Game given its id or abbreviation.

Source
get_categories(id : String, miscellaneous : Bool | Nil = nil, order_by : String | Nil = nil, sort_direction : String | Nil = nil) : Array(Category)

Gets the categories belonging to the Game given by its id or abbreviation.

Possible values for order_by: "name", "miscellaneous", or "pos", with the default being "pos".

Possible values for sort_direction: "desc" or "asc", with the default being "asc".

NOTE: If miscellaneous is set to true only miscellaneous categories will be returned. If it is set to false only non-miscellaneous categories will be returned. If it is set to nil both miscellaneous and non-miscellaneous categories will be returned.

Source
get_derived_games(id : String, name : String | Nil = nil, abbreviation : String | Nil = nil, released : Int32 | Nil = nil, gametype : String | Nil = nil, platform : String | Nil = nil, region : String | Nil = nil, genre : String | Nil = nil, engine : String | Nil = nil, developer : String | Nil = nil, publisher : String | Nil = nil, moderator : String | Nil = nil, order_by : String | Nil = nil, sort_direction : String | Nil = nil, page_size : Int32 = 200) : PageIterator(Game)

Searches through all the derived games of the Game given by its id or abbreviation using the given query parameters (and gets all derived games if none of the filters are used).

Searching by name performs a fuzzy search across game names and abbreviations.

Seaching by abbreviation performs an exact-match search.

Searching by released restricts to search to games released in that exact year.

All other search parameters must be an ID.

Possible values for order_by: "name.jap", "name.int", "abbreviation", "released", or "created", with the default being "name.int".

Possible values for sort_direction: "desc" or "asc", with the default being "asc".

NOTE: Since Games typically don't have too many derived games it is very much feasible to get everything here.

Source
get_levels(id : String, order_by : String | Nil = nil, sort_direction : String | Nil = nil) : Array(Level)

Gets the Levels belonging to the Game given by its id or abbreviation.

Possible values for order_by: "name" or "pos", with the default being "pos".

Possible values for sort_direction: "desc" or "asc", with the default being "asc".

Source
get_records(id : String, top : Int32 = 3, scope : String | Nil = nil, miscellaneous : Bool = true, skip_empty : Bool = false, page_size : Int32 = 200) : PageIterator(Leaderboard)

Gets every Leaderboard with the top N runs for the Game given by its id or abbreviation, skipping over empty Leaderboards if skip_empty is true.

If miscellaneous is set to false, only Leaderboards for non-miscellaneous categories will be returned. If it is set to true Leaderboards for both miscellaneous and non-miscellaneous categories will be returned.

NOTE: This can result in more than N runs per Leaderboard, as ties can occur.

Source
get_variables(id : String, order_by : String | Nil = nil, sort_direction : String | Nil = nil) : Array(Variable)

Gets the Variables belonging to the Game given by its id or abbreviation.

Possible values for order_by: "name", "mandatory", "pos" or "user-defined", with the default being "pos".

Possible values for sort_direction: "desc" or "asc", with the default being "asc".

Source