Modules¶
boardgamegeek.api
- Core functions¶
This module contains the core functionality needed to retrieve data from boardgamegeek.com and parse it into usable objects.
- class boardgamegeek.api.BGGClient(cache=<boardgamegeek.cache.CacheBackendMemory object>, timeout=15, retries=3, retry_delay=5, disable_ssl=False, requests_per_minute=30)[source]¶
Python client for www.boardgamegeek.com’s XML API 2.
Caching for the requests can be used by specifying an URI for the
cache
parameter. By default, an in-memory cache is used, with sqlite being the other currently supported option.:param
boardgamegeek.cache.CacheBackend
cache: An object to be used for caching the requests :param float timeout: Timeout for network operations, in seconds :param int retries: Number of retries to perform in case the API returns HTTP 202 (retry) or in case of timeouts :param float retry_delay: Time to sleep, in seconds, between retries when the API returns HTTP 202 (retry) :param disable_ssl: ignored, left for backwards compatibility :param requests_per_minute: how many requests per minute to allow to go out to BGG (throttle prevention)Example usage:
>>> bgg = BGGClient() >>> game = bgg.game("Android: Netrunner") >>> game.id 124742 >>> bgg_no_cache = BGGClient(cache=CacheBackendNone()) >>> bgg_sqlite_cache = BGGClient(cache=CacheBackendSqlite(path="/path/to/cache.db", ttl=3600))
- collection(user_name, subtype='boardgame', exclude_subtype=None, ids=None, versions=None, version=None, own=None, rated=None, played=None, commented=None, trade=None, want=None, wishlist=None, wishlist_prio=None, preordered=None, want_to_play=None, want_to_buy=None, prev_owned=None, has_parts=None, want_parts=None, min_rating=None, rating=None, min_bgg_rating=None, bgg_rating=None, min_plays=None, max_plays=None, collection_id=None, modified_since=None)¶
Returns an user’s game collection
- Parameters:
user_name (str) – user name to retrieve the collection for
subtype (str) – what type of items to return. One of the constants in
boardgamegeek.api.BGGRestrictCollectionTo
exclude_subtype (str) – if not
None
(default), exclude the specified subtype. Else, one of the constants inboardgamegeek.api.BGGRestrictCollectionTo
ids (list) – if not
None
(default), limit the results to the specified ids.versions (bool) – DEPRECATED use version instead
version (bool) – include item version information
own (bool) – include (if
True
) or exclude (ifFalse
) owned itemsrated (bool) – include (if
True
) or exclude (ifFalse
) rated itemsplayed (bool) – include (if
True
) or exclude (ifFalse
) played itemscommented (bool) – include (if
True
) or exclude (ifFalse
) items commented ontrade (bool) – include (if
True
) or exclude (ifFalse
) items for tradewant (bool) – include (if
True
) or exclude (ifFalse
) items wanted in tradewishlist (bool) – include (if
True
) or exclude (ifFalse
) items in the wishlistwishlist_prio (int) – return only the items with the specified wishlist priority (valid values: 1 to 5)
preordered (bool) – include (if
True
) or exclude (ifFalse
) preordered itemswant_to_play (bool) – include (if
True
) or exclude (ifFalse
) items wanting to playwant_to_buy (bool) – include (if
True
) or exclude (ifFalse
) items wanting to buyprev_owned (bool) – include (if
True
) or exclude (ifFalse
) previously owned itemshas_parts (bool) – include (if
True
) or exclude (ifFalse
) items for which there is a comment in the “Has parts” fieldwant_parts (bool) – include (if
True
) or exclude (ifFalse
) items for which there is a comment in the “Want parts” fieldmin_rating (double) – return items rated by the user with a minimum of
min_rating
rating (double) – return items rated by the user with a maximum of
rating
:param double min_bgg_rating : return items rated on BGG with a minimum of
min_bgg_rating
:param double bgg_rating: return items rated on BGG with a maximum ofbgg_rating
:param int collection_id: restrict results to the collection specified by this id :param str modified_since:restrict results to those whose status (own, want, etc.) has been changed/added since
modified_since
. Format:YY-MM-DD
orYY-MM-DD HH:MM:SS
- Returns:
Collection
object- Return type:
boardgamegeek.collection.Collection
- Returns:
None
if user not found- Raises:
boardgamegeek.exceptions.BGGValueError in case of invalid parameter(s)
- Raises:
BGGApiRetryError if request should be retried after delay
- Raises:
boardgamegeek.exceptions.BGGApiError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BGGApiTimeoutError if there was a timeout
- game(name=None, game_id=None, choose='first', versions=False, videos=False, historical=False, marketplace=False, comments=False, rating_comments=False, exact=True)[source]¶
Get information about a game.
- Parameters:
name (str) – If not None, get information about a game with this name
game_id (integer) – If not None, get information about a game with this id
choose (str) – method of selecting the game by name, when dealing with multiple results. Valid values are : “first”, “recent” or “best-rank”
versions (bool) – include versions information
videos (bool) – include videos
historical (bool) – include historical data
marketplace (bool) – include marketplace data
comments (bool) – include comments
rating_comments (bool) – include comments with rating (ignored in favor of
comments
, if that is true)exact (bool) – limit results to items that match the name exactly
- Returns:
BoardGame
object- Return type:
boardgamegeek.games.BoardGame
- Raises:
boardgamegeek.exceptions.BoardGameGeekError in case of invalid name or game_id
- Raises:
boardgamegeek.exceptions.BoardGameGeekAPIRetryError if request should be retried after delay
- Raises:
boardgamegeek.exceptions.BoardGameGeekAPIError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BoardGameGeekTimeoutError if there was a timeout
- game_list(game_id_list, versions=False, videos=False, historical=False, marketplace=False)[source]¶
Get list of games by from a list of ids.
- Parameters:
game_id_list (list) – List of game ids
versions (bool) – include versions information
videos (bool) – include videos
historical (bool) – include historical data
marketplace (bool) – include marketplace data
- Returns:
list of
BoardGame
objects- Return type:
list`
- Raises:
boardgamegeek.exceptions.BoardGameGeekAPIRetryError if this request should be retried after a short delay
- Raises:
boardgamegeek.exceptions.BoardGameGeekAPIError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BoardGameGeekTimeoutError if there was a timeout
- games(name)[source]¶
Return a list containing all games with the given name
- Parameters:
name (str) – the name of the game to search for
- Returns:
list of
boardgamegeek.games.BoardGame
- Raises:
boardgamegeek.exceptions.BoardGameGeekAPIRetryError if request should be retried after delay
- Raises:
boardgamegeek.exceptions.BoardGameGeekAPIError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BoardGameGeekTimeoutError if there was a timeout
- get_game_id(name, choose='first', exact=True)[source]¶
Returns the BGG ID of a game, searching by name
- Parameters:
name (str) – The name of the game to search for
choose (boardgamegeek.BGGChoose) – method of selecting the game by name, when dealing with multiple results.
exact (bool) – limit results to items that match the name exactly
- Returns:
the game’s id
- Return type:
integer
- Returns:
None
if game wasn’t found- Raises:
boardgamegeek.exceptions.BGGError in case of invalid name
- Raises:
BGGApiRetryError if request should be retried after delay
- Raises:
boardgamegeek.exceptions.BGGApiError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BGGApiTimeoutError if there was a timeout
- guild(guild_id, members=True)¶
Retrieves details about a guild
- Parameters:
guild_id (integer) – the id number of the guild
members (bool) – if
True
, names of the guild members will be fetched
- Returns:
Guild
object containing the data- Returns:
None
if the information couldn’t be retrieved- Return type:
boardgamegeek.guild.Guild
- Raises:
BGGValueError in case of an invalid parameter(s)
- Raises:
boardgamegeek.exceptions.BGGApiRetryError if request should be retried after delay
- Raises:
boardgamegeek.exceptions.BGGApiError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BGGApiTimeoutError if there was a timeout
- hot_items(item_type)¶
Return the list of “Hot Items”
- Parameters:
item_type (str) – hot item type. Valid values: “boardgame”, “rpg”, “videogame”, “boardgameperson”, “rpgperson”, “boardgamecompany”, “rpgcompany”, “videogamecompany”)
- Returns:
HotItems
object- Return type:
boardgamegeek.hotitems.HotItems
- Returns:
None
in case the hot items couldn’t be retrieved- Raises:
boardgamegeek.exceptions.BGGValueError in case of invalid parameter(s)
- Raises:
boardgamegeek.exceptions.BGGApiRetryError if this request should be retried after a short delay
- Raises:
boardgamegeek.exceptions.BGGApiError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BGGApiTimeoutError if there was a timeout
- plays(name=None, game_id=None, min_date=None, max_date=None, subtype='boardgame')¶
Retrieves the plays for an user (if using
name
) or for a game (if usinggame_id
)- Parameters:
name (str) – user name to retrieve the plays for
game_id (integer) – game id to retrieve the plays for
min_date (datetime.date) – return only plays of the specified date or later
max_date (datetime.date) – return only plays of the specified date or earlier
subtype (str) – limit plays results to the specified subtype.
- Returns:
object containing all the plays
- Return type:
boardgamegeek.plays.Plays
- Returns:
None
if the user/game couldn’t be found- Raises:
boardgamegeek.exceptions.BGGValueError in case of invalid parameter(s)
- Raises:
BGGApiRetryError if request should be retried after delay
- Raises:
boardgamegeek.exceptions.BGGApiError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BGGApiTimeoutError if there was a timeout
- search(query, search_type=None, exact=False)¶
Search for a game
- Parameters:
query (str) – the string to search for
search_type (list) – list of
boardgamegeek.api.BGGRestrictItemTypeTo
, indicating what to include in the search results.exact (bool) – if True, try to match the name exactly
- Returns:
list of
SearchResult
- Return type:
list of
boardgamegeek.search.SearchResult
- Raises:
boardgamegeek.exceptions.BGGValueError in case of invalid parameter(s)
- Raises:
BGGApiRetryError if request should be retried after delay
- Raises:
boardgamegeek.exceptions.BGGApiError if the API response was invalid or couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BGGApiTimeoutError if there was a timeout
- user(name, buddies=True, guilds=True, hot=True, top=True, domain='boardgame')¶
Retrieves details about an user
- Parameters:
name (str) – user’s login name
buddies (bool) – if
True
, get the user’s buddiesguilds (bool) – if
True
, get the user’s guildshot (bool) – if
True
, get the user’s “hot” listtop (bool) – if
True
, get the user’s “top” listdomain (str) – restrict items on the “hot” and “top” lists to
domain
. One of the constants inboardgamegeek.BGGSelectDomain
- Returns:
User
object- Return type:
boardgamegeek.user.User
- Returns:
None
if the user couldn’t be found- Raises:
ValueError in case of invalid parameters
- Raises:
boardgamegeek.exceptions.BGGValueError in case of invalid parameter(s)
- Raises:
boardgamegeek.exceptions.BGGItemNotFoundError if the user wasn’t found
- Raises:
boardgamegeek.exceptions.BGGApiRetryError if request should be retried after delay
- Raises:
boardgamegeek.exceptions.BGGApiError if the response couldn’t be parsed
- Raises:
boardgamegeek.exceptions.BGGApiTimeoutError if there was a timeout
boardgamegeek.collection
- Collection information¶
- class boardgamegeek.objects.collection.Collection(data)[source]¶
A dictionary-like object represeting a
Collection
- Parameters:
data (dict) – a dictionary containing the collection data
- Raises:
boardgamegeek.exceptions.BoardGameGeekError
in case of invalid data
- add_game(game)[source]¶
Add a game to the
Collection
- Parameters:
game (dict) – game data
- Raises:
boardgamegeek.exceptions.BoardGameGeekError
in case of invalid data
- property items¶
Returns the items in the collection
- Returns:
the items in the collection
- Return type:
list of
boardgamegeek.games.CollectionBoardGame
- property owner¶
Return the collection’s owner
- Returns:
the collection’s owner
- Return type:
str
boardgamegeek.exceptions
- Exceptions¶
boardgamegeek.games
- Games information¶
- class boardgamegeek.objects.games.CollectionBoardGame(data)[source]¶
A boardgame retrieved from the collection information, which has less information than the one retrieved via the /thing api and which also contains some user-specific information.
- property comment¶
- Returns:
comment left by user
- Return type:
str
- property for_trade¶
- Returns:
game for trading
- Return type:
bool
- property last_modified¶
- Returns:
last modified date
- Return type:
str
- property owned¶
- Returns:
game owned
- Return type:
bool
- property preordered¶
- Returns:
game preordered
- Return type:
bool
- property prev_owned¶
- Returns:
game previously owned
- Return type:
bool
- property rating¶
- Returns:
user’s rating of the game
- Return type:
float
- Returns:
None
if n/a
- property want¶
- Returns:
game wanted
- Return type:
bool
- property want_to_buy¶
- Returns:
want to buy
- Return type:
bool
- property want_to_play¶
- Returns:
want to play
- Return type:
bool
- property wishlist¶
- Returns:
game on wishlist
- Return type:
bool
- class boardgamegeek.objects.games.BoardGame(data)[source]¶
Object containing information about a board game
- property accessory¶
- Returns:
True if this item is an accessory
- Return type:
bool
- add_expanded_game(data)[source]¶
Add a game expanded by this one
- Parameters:
data (dict) – expanded game’s data
- Raises:
boardgamegeek.exceptions.BoardGameGeekError
if data is invalid
- add_expansion(data)[source]¶
Add an expansion of this game
- Parameters:
data (dict) – expansion data
- Raises:
boardgamegeek.exceptions.BoardGameGeekError
if data is invalid
- property alternative_names¶
- Returns:
alternative names
- Return type:
list of str
- property artists¶
- Returns:
artists
- Return type:
list of str
- property categories¶
- Returns:
categories
- Return type:
list of str
- property description¶
- Returns:
description
- Return type:
str
- property designers¶
- Returns:
designers
- Return type:
list of str
- property expands¶
- Returns:
games this item expands
- Return type:
list of
boardgamegeek.things.Thing
- property expansion¶
- Returns:
True if this item is an expansion
- Return type:
bool
- property expansions¶
- Returns:
expansions
- Return type:
list of
boardgamegeek.things.Thing
- property families¶
- Returns:
families
- Return type:
list of str
- property implementations¶
- Returns:
implementations
- Return type:
list of str
- property marketplace¶
- Returns:
marketplace listings of this game
- Return type:
list of
boardgamegeek.game.MarketplaceListing
- property mechanics¶
- Returns:
mechanics
- Return type:
list of str
- property min_age¶
- Returns:
minimum recommended age
- Return type:
integer
- Returns:
None
if n/a
- property player_suggestions¶
:return player suggestion list with votes :rtype: list of dicts
- property publishers¶
- Returns:
publishers
- Return type:
list of str
- property rating_average_weight¶
- Returns:
average weight
- Return type:
float
- Returns:
None
if n/a
- property rating_num_weights¶
- Returns:
- Return type:
integer
- Returns:
None
if n/a
- property users_commented¶
- Returns:
number of user comments
- Return type:
integer
- Returns:
None
if n/a
- property users_owned¶
- Returns:
number of users owning this game
- Return type:
integer
- Returns:
None
if n/a
- property users_trading¶
- Returns:
number of users trading this game
- Return type:
integer
- Returns:
None
if n/a
- property users_wanting¶
- Returns:
number of users wanting this game
- Return type:
integer
- Returns:
None
if n/a
- property users_wishing¶
- Returns:
number of users wishing for this game
- Return type:
integer
- Returns:
None
if n/a
- property versions¶
- Returns:
versions of this game
- Return type:
list of
boardgamegeek.game.BoardGameVersion
- property videos¶
- Returns:
videos of this game
- Return type:
list of
boardgamegeek.game.BoardGameVideo
- class boardgamegeek.objects.games.PlayerSuggestion(data)[source]¶
Player Suggestion
- property numeric_player_count¶
Convert player count to a an int If player count contains a + symbol then add one to the player count
- class boardgamegeek.objects.games.BoardGameStats(data)[source]¶
Statistics about a board game
- property rating_average¶
- Returns:
average rating
- Return type:
float
- Returns:
None
if n/a
- property rating_average_weight¶
- Returns:
average weight
- Return type:
float
- Returns:
None
if n/a
- property rating_bayes_average¶
- Returns:
bayes average rating
- Return type:
float
- Returns:
None
if n/a
- property rating_median¶
- Returns:
- Return type:
float
- Returns:
None
if n/a
- property rating_num_weights¶
- Returns:
- Return type:
integer
- Returns:
None
if n/a
- property rating_stddev¶
- Returns:
standard deviation
- Return type:
float
- Returns:
None
if n/a
- property users_commented¶
- Returns:
number of user comments
- Return type:
integer
- Returns:
None
if n/a
- property users_owned¶
- Returns:
number of users owning this game
- Return type:
integer
- Returns:
None
if n/a
- property users_rated¶
- Returns:
how many users rated the game
- Return type:
integer
- Returns:
None
if n/a
- property users_trading¶
- Returns:
number of users trading this game
- Return type:
integer
- Returns:
None
if n/a
- property users_wanting¶
- Returns:
number of users wanting this game
- Return type:
integer
- Returns:
None
if n/a
- property users_wishing¶
- Returns:
number of users wishing for this game
- Return type:
integer
- Returns:
None
if n/a
- class boardgamegeek.objects.games.BoardGameVideo(data)[source]¶
Object containing information about a board game video
- property category¶
- Returns:
the category of this video
- Returns:
None
if n/a- Return type:
string
- property language¶
- Returns:
the language of this video
- Returns:
None
if n/a- Return type:
string
- property link¶
- Returns:
the link to this video
- Returns:
None
if n/a- Return type:
string
- property post_date¶
- Returns:
date when this video was uploaded
- Return type:
datetime.datetime
- Returns:
None
if n/a
- property uploader¶
- Returns:
the name of the user which uploaded this video
- Returns:
None
if n/a- Return type:
string
- property uploader_id¶
- Returns:
id of the uploader
- Return type:
integer
- Returns:
None
if n/a
- class boardgamegeek.objects.games.BoardGameVersion(data)[source]¶
Object containing information about a board game version
- property artist¶
- Returns:
artist of this version
- Return type:
string
- Returns:
None
if n/a
- property depth¶
- Returns:
depth of the box
- Return type:
double
- Returns:
0.0 if n/a
- property language¶
- Returns:
language of this version
- Return type:
string
- Returns:
None
if n/a
- property length¶
- Returns:
length of the box
- Return type:
double
- Returns:
0.0 if n/a
- property name¶
- Returns:
name of this version
- Return type:
string
- Returns:
None
if n/a
- property product_code¶
- Returns:
product code of this version
- Return type:
string
- Returns:
None
if n/a
- property publisher¶
- Returns:
publisher of this version
- Return type:
string
- Returns:
None
if n/a
- property weight¶
- Returns:
weight of the box
- Return type:
double
- Returns:
0.0 if n/a
- property width¶
- Returns:
width of the box
- Return type:
double
- Returns:
0.0 if n/a
- property year¶
- Returns:
publishing year
- Return type:
integer
- Returns:
None
if n/a
boardgamegeek.guild
- Guild information¶
- class boardgamegeek.objects.guild.Guild(data)[source]¶
Class containing guild information
- property addr1¶
- Returns:
first field of the address
- Return type:
str
- Returns:
None
if n/a
- property addr2¶
- Returns:
second field of the address
- Return type:
str
- Returns:
None
if n/a
- property address¶
- Returns:
address (both fields concatenated)
- Return type:
str
- Returns:
None
if n/a
- property category¶
- Returns:
category
- Return type:
str
- Returns:
None
if n/a
- property city¶
- Returns:
city
- Return type:
str
- Returns:
None
if n/a
- property country¶
- Returns:
country
- Return type:
str
- Returns:
None
if n/a
- property description¶
- Returns:
description
- Return type:
str
- Returns:
None
if n/a
- property manager¶
- Returns:
manager
- Return type:
str
- Returns:
None
if n/a
- property members¶
- Returns:
members of the guild
- Return type:
set of str
- property members_count¶
- Returns:
number of members, as reported by the server
- Return type:
int
- property postalcode¶
- Returns:
postal code
- Return type:
integer
- Returns:
None
if n/a
- property state¶
- Returns:
state or provine
- Return type:
str
- Returns:
None
if n/a
- property website¶
- Returns:
website address
- Return type:
str
- Returns:
None
if n/a
boardgamegeek.hotitems
- BoardGameGeek “Hot Items”¶
- class boardgamegeek.objects.hotitems.HotItem(data)[source]¶
A hot item from a list. Can refer to either an item (
boardgame
,videogame
, etc.), a person (rpgperson
,boardgameperson
) or even a company (boardgamecompany
,videogamecompany
), depending on the type of hot list retrieved.- property rank¶
- Returns:
Ranking of this hot item
- Return type:
integer
- property thumbnail¶
- Returns:
thumbnail URL
- Return type:
str
- Returns:
None
if n/a
- property year¶
- Returns:
publishing year
- Return type:
integer
- Returns:
None
if n/a
- class boardgamegeek.objects.hotitems.HotItems(data)[source]¶
A collection of
boardgamegeek.hotitems.HotItem
- add_hot_item(data)[source]¶
Add a new hot item to the container
- Parameters:
data – dictionary containing the data
- property items¶
- Returns:
list of hotitems
- Return type:
list of
boardgamegeek.hotitems.HotItem
boardgamegeek.plays
- BoardGameGeek “Plays”¶
- class boardgamegeek.objects.plays.GamePlays(data)[source]¶
- property game_id¶
- Returns:
id of the game this plays list belongs to
- Return type:
integer
- Returns:
None
if this list is that of an user
- class boardgamegeek.objects.plays.UserPlays(data)[source]¶
- property user¶
- Returns:
name of the playlist owner
- Return type:
str
- Returns:
None
if this is the playlist of a game (not an user’s)
- property user_id¶
- Returns:
id of the playlist owner
- Return type:
integer
- Returns:
None
if this is the playlist of a game (not an user’s)
- class boardgamegeek.objects.plays.PlaySession(data)[source]¶
Container for a play session information.
- Parameters:
data (dict) – a dictionary containing the collection data
- Raises:
boardgamegeek.exceptions.BoardGameGeekError
in case of invalid data
- property comment¶
- Returns:
comment on the play session
- Return type:
str
- Returns:
None
if n/a
- property date¶
- Returns:
the date of the play session
- Return type:
datetime.datetime
- Returns:
None
if n/a
- property duration¶
- Returns:
duration of the play session
- Return type:
integer
- Returns:
None
if n/a
- property game_id¶
- Returns:
played game id
- Return type:
integer
- Returns:
None
if n/a
- property game_name¶
- Returns:
played game name
- Return type:
str
- Returns:
None
if n/a
- property id¶
- Returns:
id
- Return type:
integer
- Returns:
None
if n/a
- property incomplete¶
- Returns:
incomplete session
- Return type:
bool
- property location¶
- Returns:
- property nowinstats¶
- Returns:
- property quantity¶
- Returns:
number of recorded plays
- Return type:
integer
- Returns:
None
if n/a
- property user_id¶
- Returns:
id of the user owning this play session
- Return type:
integer
- Returns:
None
if n/a
- class boardgamegeek.objects.plays.PlaysessionPlayer(data)[source]¶
Class representing a player in a play session
- Parameters:
data (dict) – a dictionary containing the collection data
- Raises:
boardgamegeek.exceptions.BoardGameGeekError
in case of invalid data
- property color¶
- Returns:
- Return type:
- Returns:
None
if n/a
- property name¶
- Returns:
- Return type:
- Returns:
None
if n/a
- property new¶
- Returns:
- Return type:
- Returns:
None
if n/a
- property rating¶
- Returns:
- Return type:
- Returns:
None
if n/a
- property score¶
- Returns:
- Return type:
- Returns:
None
if n/a
- property startposition¶
- Returns:
- Return type:
- Returns:
None
if n/a
- property user_id¶
- Returns:
user id
- Return type:
integer
- Returns:
None
if n/a
- property username¶
- Returns:
user name
- Return type:
str
- Returns:
None
if n/a
- property win¶
- Returns:
- Return type:
- Returns:
None
if n/a
boardgamegeek.search
- Search results¶
boardgamegeek.things
- Generic objects¶
- class boardgamegeek.objects.things.Thing(data)[source]¶
A thing, an object with a name and an id. Base class for various objects in the library.
- property id¶
- Returns:
id
- Return type:
integer
- property name¶
- Returns:
name
- Return type:
str
boardgamegeek.user
- BoardGameGeek “Users”¶
- class boardgamegeek.objects.user.User(data)[source]¶
Information about an user.
- property avatar¶
- Returns:
avatar’s URL
- Return type:
str
- Returns:
None
if n/a
- property buddies¶
- Returns:
user’s buddies
- Return type:
list of
boardgamegeek.things.Thing
- property firstname¶
- Returns:
user’s first name
- Return type:
str
- Returns:
None
if n/a
- property guilds¶
- Returns:
user’s guilds
- Return type:
list of
boardgamegeek.things.Thing
- property hot10¶
- Returns:
user’s hot10
- Return type:
list of
boardgamegeek.things.Thing
- property lastname¶
- Returns:
user’s last name
- Return type:
str
- Returns:
None
if n/a
- property top10¶
- Returns:
user’s top10
- Return type:
list of
boardgamegeek.things.Thing
- property total_buddies¶
- Returns:
number of buddies
- Return type:
integer
- property total_guilds¶
- Returns:
number of guilds
- Return type:
integer
boardgamegeek.utils
- Generic helper functions¶
- class boardgamegeek.utils.RateLimitingAdapter(rpm=30, **kw)[source]¶
Adapter for the Requests library which makes sure there’s a delay between consecutive requests to the BGG site so that we don’t get throttled
- send(request, **kw)[source]¶
Sends PreparedRequest object. Returns Response object.
- Parameters:
request – The
PreparedRequest
being sent.stream – (optional) Whether to stream the request content.
timeout (float or tuple or urllib3 Timeout object) – (optional) How long to wait for the server to send data before giving up, as a float, or a (connect timeout, read timeout) tuple.
verify – (optional) Either a boolean, in which case it controls whether we verify the server’s TLS certificate, or a string, in which case it must be a path to a CA bundle to use
cert – (optional) Any user-provided SSL certificate to be trusted.
proxies – (optional) The proxies dictionary to apply to the request.
- Return type:
requests.Response
- boardgamegeek.utils.fix_url(url)[source]¶
The BGG API started returning URLs like //cf.geekdo-images.com/images/pic55406.jpg for thumbnails and images. This function fixes them.
- Parameters:
url – the url to fix
- Returns:
the fixed url
- boardgamegeek.utils.request_and_parse_xml(requests_session, url, params=None, timeout=15, retries=3, retry_delay=5)[source]¶
Downloads an XML from the specified url, parses it and returns the xml ElementTree.
- Parameters:
requests_session – A Session of the
requests
library, used to fetch the urlurl – the address where to get the XML from
params – dictionary containing the parameters which should be sent with the request
timeout – number of seconds after which the request times out
retries – number of retries to perform in case of timeout
retry_delay – the amount of seconds to sleep when retrying an API call that returned 202
- Returns:
xml.etree.ElementTree()
corresponding to the XML- Raises:
BGGApiRetryError
if this request should be retried after a short delay- Raises:
BGGApiError
if the response was invalid or couldn’t be parsed- Raises:
BGGApiTimeoutError
if there was a timeout
- boardgamegeek.utils.xml_subelement_attr(xml_elem, subelement, convert=None, attribute='value', default=None, quiet=False)[source]¶
Search for a sub-element and return the value of its attribute.
For the following XML document:
<xml_elem> <subelement value="THIS" /> </xml_elem>
a call to
xml_subelement_attr(xml_elem, "subelement")
would return"THIS"
- Parameters:
xml_elem – search the children nodes of this element
subelement – Name of the sub-element to search for
convert – if not None, a callable to perform the conversion of this attribute to a certain object type
attribute – name of the attribute to get
default – default value if the subelement or attribute is not found
quiet – if True, don’t raise exception from conversions, return default instead
- Returns:
value of the attribute or
None
in error cases
- boardgamegeek.utils.xml_subelement_attr_by_attr(xml_elem, subelement, filter_attr, filter_value, convert=None, attribute='value', default=None, quiet=False)[source]¶
Search for a sub-element having an attribute
filter_attr
set tofilter_value
For the following XML document:
<xml_elem> <subelement filter="this" value="THIS" /> </xml_elem>
a call to
xml_subelement_attr(xml_elem, "subelement", "filter", "this")
would return"THIS"
- Parameters:
xml_elem – search the children nodes of this element
subelement – Name of the sub-element to search for
filter_attr – Name of the attribute the sub-element must contain
filter_value – Value of the attribute
convert – if not None, a callable to perform the conversion of this attribute to a certain object type
attribute – name of the attribute to get
default – default value if the subelement or attribute is not found
quiet – if True, don’t raise exception from conversions, return default instead
- Returns:
value of the attribute or
None
in error cases
- boardgamegeek.utils.xml_subelement_attr_list(xml_elem, subelement, convert=None, attribute='value', default=None, quiet=False)[source]¶
Search for sub-elements and return a list of the specified attribute.
<xml_elem> <subelement value="THIS" /> <subelement value="THIS2" /> ... </xml_elem>
For the above document, [“THIS”, “THIS2”] will be returned
- Parameters:
xml_elem – search the children nodes of this element
subelement – name of the sub-element to search for
convert – if not None, a callable used to perform the conversion of this attribute to a certain object type
attribute – name of the attribute to get
default – default value to use if an attribute is missing
quiet – if True, don’t raise exceptions from conversions, instead use the default value
- Returns:
list containing the values of the attributes or
None
in error cases
- boardgamegeek.utils.xml_subelement_text(xml_elem, subelement, convert=None, default=None, quiet=False)[source]¶
Return the text of the specified subelement
For the document below:
<xml_elem> <subelement>text</subelement> </xml_elem>
"text"
will be returned- Parameters:
xml_elem – search the children nodes of this element
subelement – name of the subelement whose text will be retrieved
convert – if not None, a callable used to perform the conversion of the text to a certain object type
default – default value if subelement is not found
quiet – if True, don’t raise exceptions from conversions, instead use the default value
- Returns:
The text associated with the sub-element or
None
in case of error