Skip to content

Gameclips provider

Gameclips - Get gameclip info

pythonxbox.api.provider.gameclips.GameclipProvider(client)

Bases: BaseProvider

Source code in src/pythonxbox/api/provider/baseprovider.py
def __init__(self, client: "XboxLiveClient") -> None:
    """
    Initialize an the BaseProvider

    Args:
        client (:class:`XboxLiveClient`): Instance of XboxLiveClient
    """
    self.client = client

GAMECLIPS_METADATA_URL = 'https://gameclipsmetadata.xboxlive.com' class-attribute instance-attribute

HEADERS_GAMECLIPS_METADATA = {'x-xbl-contract-version': '1'} class-attribute instance-attribute

get_recent_community_clips_by_title_id(title_id, **kwargs) async

Get recent community clips by Title Id

Parameters:

Name Type Description Default
title_id str

Title Id to get clips for

required

Returns:

Type Description
GameclipsResponse

class:GameclipsResponse: Game clip Response

Source code in src/pythonxbox/api/provider/gameclips/__init__.py
async def get_recent_community_clips_by_title_id(
    self, title_id: str, **kwargs
) -> GameclipsResponse:
    """
    Get recent community clips by Title Id

    Args:
        title_id: Title Id to get clips for

    Returns:
        :class:`GameclipsResponse`: Game clip Response
    """
    url = self.GAMECLIPS_METADATA_URL + f"/public/titles/{title_id}/clips"
    params = {"qualifier": "created"}
    resp = await self.client.session.get(
        url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
    )
    resp.raise_for_status()
    return GameclipsResponse.model_validate_json(resp.text)

get_recent_own_clips(title_id=None, skip_items=0, max_items=25, **kwargs) async

Get own recent clips, optionally filter for title Id

Parameters:

Name Type Description Default
title_id str | None

Title ID to filter

None
skip_items int

Item count to skip

0
max_items int

Maximum item count to load

25

Returns:

Type Description
GameclipsResponse

class:GameclipsResponse: Game clip Response

Source code in src/pythonxbox/api/provider/gameclips/__init__.py
async def get_recent_own_clips(
    self,
    title_id: str | None = None,
    skip_items: int = 0,
    max_items: int = 25,
    **kwargs,
) -> GameclipsResponse:
    """
    Get own recent clips, optionally filter for title Id

    Args:
        title_id: Title ID to filter
        skip_items: Item count to skip
        max_items: Maximum item count to load

    Returns:
        :class:`GameclipsResponse`: Game clip Response
    """
    url = self.GAMECLIPS_METADATA_URL + "/users/me"
    if title_id:
        url += f"/titles/{title_id}"
    url += "/clips"

    params = {"skipItems": skip_items, "maxItems": max_items}
    resp = await self.client.session.get(
        url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
    )
    resp.raise_for_status()
    return GameclipsResponse.model_validate_json(resp.text)

get_recent_clips_by_xuid(xuid, title_id=None, skip_items=0, max_items=25, **kwargs) async

Get clips by XUID, optionally filter for title Id

Parameters:

Name Type Description Default
xuid str

XUID of user to get clips from

required
title_id str | None

Optional title id filter

None
skip_items int

Item count to skip

0
max_items int

Maximum item count to load

25

Returns:

Type Description
GameclipsResponse

class:GameclipsResponse: Game clip Response

Source code in src/pythonxbox/api/provider/gameclips/__init__.py
async def get_recent_clips_by_xuid(
    self,
    xuid: str,
    title_id: str | None = None,
    skip_items: int = 0,
    max_items: int = 25,
    **kwargs,
) -> GameclipsResponse:
    """
    Get clips by XUID, optionally filter for title Id

    Args:
        xuid: XUID of user to get clips from
        title_id: Optional title id filter
        skip_items: Item count to skip
        max_items: Maximum item count to load

    Returns:
        :class:`GameclipsResponse`: Game clip Response
    """
    url = self.GAMECLIPS_METADATA_URL + f"/users/xuid({xuid})"
    if title_id:
        url += f"/titles/{title_id}"
    url += "/clips"

    params = {"skipItems": skip_items, "maxItems": max_items}
    resp = await self.client.session.get(
        url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
    )
    resp.raise_for_status()
    return GameclipsResponse.model_validate_json(resp.text)

get_saved_community_clips_by_title_id(title_id, **kwargs) async

Get saved community clips by Title Id

Parameters:

Name Type Description Default
title_id str

Title Id to get screenshots for

required

Returns:

Type Description
GameclipsResponse

class:GameclipsResponse: Game clip Response

Source code in src/pythonxbox/api/provider/gameclips/__init__.py
async def get_saved_community_clips_by_title_id(
    self, title_id: str, **kwargs
) -> GameclipsResponse:
    """
    Get saved community clips by Title Id

    Args:
        title_id: Title Id to get screenshots for

    Returns:
        :class:`GameclipsResponse`: Game clip Response
    """
    url = self.GAMECLIPS_METADATA_URL + f"/public/titles/{title_id}/clips/saved"
    params = {"qualifier": "created"}
    resp = await self.client.session.get(
        url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
    )
    resp.raise_for_status()
    return GameclipsResponse.model_validate_json(resp.text)

get_saved_own_clips(title_id=None, skip_items=0, max_items=25, **kwargs) async

Get own saved clips, optionally filter for title Id an

Parameters:

Name Type Description Default
title_id str | None

Optional Title ID to filter

None
skip_items int

Item count to skip

0
max_items int

Maximum item count to load

25

Returns:

Type Description
GameclipsResponse

class:GameclipsResponse: Game clip Response

Source code in src/pythonxbox/api/provider/gameclips/__init__.py
async def get_saved_own_clips(
    self,
    title_id: str | None = None,
    skip_items: int = 0,
    max_items: int = 25,
    **kwargs,
) -> GameclipsResponse:
    """
    Get own saved clips, optionally filter for title Id an

    Args:
        title_id: Optional Title ID to filter
        skip_items: Item count to skip
        max_items: Maximum item count to load

    Returns:
        :class:`GameclipsResponse`: Game clip Response
    """
    url = self.GAMECLIPS_METADATA_URL + "/users/me"
    if title_id:
        url += f"/titles/{title_id}"
    url += "/clips/saved"

    params = {"skipItems": skip_items, "maxItems": max_items}
    resp = await self.client.session.get(
        url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
    )
    resp.raise_for_status()
    return GameclipsResponse.model_validate_json(resp.text)

get_saved_clips_by_xuid(xuid, title_id=None, skip_items=0, max_items=25, **kwargs) async

Get saved clips by XUID, optionally filter for title Id

Parameters:

Name Type Description Default
xuid str

XUID of user to get screenshots from

required
title_id str | None

Optional title id filter

None
skip_items int

Item count to skip

0
max_items int

Maximum item count to load

25

Returns:

Type Description
GameclipsResponse

class:GameclipsResponse: Game clip Response

Source code in src/pythonxbox/api/provider/gameclips/__init__.py
async def get_saved_clips_by_xuid(
    self,
    xuid: str,
    title_id: str | None = None,
    skip_items: int = 0,
    max_items: int = 25,
    **kwargs,
) -> GameclipsResponse:
    """
    Get saved clips by XUID, optionally filter for title Id

    Args:
        xuid: XUID of user to get screenshots from
        title_id: Optional title id filter
        skip_items: Item count to skip
        max_items: Maximum item count to load

    Returns:
        :class:`GameclipsResponse`: Game clip Response
    """
    url = self.GAMECLIPS_METADATA_URL + f"/users/xuid({xuid})"
    if title_id:
        url += f"/titles/{title_id}"
    url += "/clips/saved"

    params = {"skipItems": skip_items, "maxItems": max_items}
    resp = await self.client.session.get(
        url, params=params, headers=self.HEADERS_GAMECLIPS_METADATA, **kwargs
    )
    resp.raise_for_status()
    return GameclipsResponse.model_validate_json(resp.text)