Helper functions#

async twitchAPI.helper.first(gen)#

Returns the first value of the given AsyncGenerator

Example:

user = await first(twitch.get_users())
Parameters:

gen (AsyncGenerator[TypeVar(T), None]) – The generator from which you want the first value

Return type:

Optional[TypeVar(T)]

async twitchAPI.helper.limit(gen, num)#

Limits the number of entries from the given AsyncGenerator to up to num.

This example will give you the currently 5 most watched streams:

async for stream in limit(twitch.get_streams(), 5):
    print(stream.title)
Parameters:
Raises:

ValueError – if num is less than 1

Return type:

AsyncGenerator[TypeVar(T), None]

twitchAPI.helper.TWITCH_API_BASE_URL: str = 'https://api.twitch.tv/helix/'#

The base url to the Twitch API endpoints

twitchAPI.helper.TWITCH_AUTH_BASE_URL: str = 'https://id.twitch.tv/oauth2/'#

The base url to the twitch authentication endpoints

twitchAPI.helper.TWITCH_PUB_SUB_URL: str = 'wss://pubsub-edge.twitch.tv'#

The url to the Twitch PubSub websocket

twitchAPI.helper.TWITCH_CHAT_URL: str = 'wss://irc-ws.chat.twitch.tv:443'#

The url to the Twitch Chat websocket

twitchAPI.helper.TWITCH_EVENT_SUB_WEBSOCKET_URL: str = 'wss://eventsub.wss.twitch.tv/ws'#

The url to the Twitch EventSub websocket

twitchAPI.helper.build_url(url, params, remove_none=False, split_lists=False, enum_value=True)#

Build a valid url string

Parameters:
  • url (str) – base URL

  • params (dict) – dictionary of URL parameter

  • remove_none (bool) – if set all params that have a None value get removed

    Default: False

  • split_lists (bool) – if set all params that are a list will be split over multiple url parameter with the same name

    Default: False

  • enum_value (bool) – if true, automatically get value string from Enum values

    Default: True

Return type:

str

Returns:

URL

twitchAPI.helper.get_uuid()#

Returns a random UUID

Return type:

UUID

twitchAPI.helper.build_scope(scopes)#

Builds a valid scope string from list

Parameters:

scopes (List[AuthScope]) – list of AuthScope

Return type:

str

Returns:

the valid auth scope string

twitchAPI.helper.fields_to_enum(data, fields, _enum, default)#

Iterates a dict or list and tries to replace every dict entry with key in fields with the correct Enum value

Parameters:
  • data (Union[dict, list]) – dict or list

  • fields (List[str]) – list of keys to be replaced

  • _enum (Type[Enum]) – Type of Enum to be replaced

  • default (Optional[Enum]) – The default value if _enum does not contain the field value

Return type:

Union[dict, list]

twitchAPI.helper.make_enum(data, _enum, default)#

Takes in a value and maps it to the given Enum. If the value is not valid it will take the default.

Parameters:
Return type:

Enum

twitchAPI.helper.enum_value_or_none(enum)#

Returns the value of the given Enum member or None

Parameters:

enum (Optional[Enum]) – the Enum member

Return type:

Union[None, str, int]

twitchAPI.helper.datetime_to_str(dt)#

ISO-8601 formats the given datetime, returns None if datetime is None

Parameters:

dt (Optional[datetime]) – the datetime to format

Return type:

Optional[str]

twitchAPI.helper.remove_none_values(d)#

Removes items where the value is None from the dict. This returns a new dict and does not manipulate the one given.

Parameters:

d (dict) – the dict from which the None values should be removed

Return type:

dict

enum twitchAPI.helper.ResultType(value)#

Bases: Enum

An enumeration.

Valid values are as follows:

RETURN_TYPE = <ResultType.RETURN_TYPE: 0>#
STATUS_CODE = <ResultType.STATUS_CODE: 1>#
TEXT = <ResultType.TEXT: 2>#
class twitchAPI.helper.RateLimitBucket#

Bases: object

Handler used for chat rate limiting

__init__(bucket_length, bucket_size, scope, logger=None)#
Parameters:
  • bucket_length (int) – time in seconds the bucket is valid for

  • bucket_size (int) – the number of entries that can be put into the bucket

  • scope (str) – the scope of this bucket (used for logging)

  • logger (Optional[Logger]) – the logger to be used. If None the default logger is used

get_delta(num)#
Return type:

Optional[float]

left()#

Returns the space left in the current bucket

Return type:

int

async put(num=1)#

Puts num usees into the current bucket and waits if rate limit is hit

Parameters:

num (int) – the number of uses put into the current bucket

twitchAPI.helper.done_task_callback(logger, task)#

helper function used as a asyncio task done callback