Skip to content

Screenshots provider

Screenshots - Get screenshot info

pythonxbox.api.provider.screenshots.ScreenshotsProvider(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

SCREENSHOTS_METADATA_URL = 'https://screenshotsmetadata.xboxlive.com' class-attribute instance-attribute

HEADERS_SCREENSHOTS_METADATA = {'x-xbl-contract-version': '5'} class-attribute instance-attribute

get_recent_community_screenshots_by_title_id(title_id, **kwargs) async

Get recent community screenshots by Title Id

Parameters:

Name Type Description Default
title_id str

Title Id to get screenshots for

required

Returns:

Type Description
ScreenshotResponse

class:ScreenshotResponse: Screenshot Response

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

    Args:
        title_id: Title Id to get screenshots for

    Returns:
        :class:`ScreenshotResponse`: Screenshot Response
    """
    url = self.SCREENSHOTS_METADATA_URL + f"/public/titles/{title_id}/screenshots"
    params = {"qualifier": "created"}
    resp = await self.client.session.get(
        url, params=params, headers=self.HEADERS_SCREENSHOTS_METADATA, **kwargs
    )
    resp.raise_for_status()
    return ScreenshotResponse.model_validate_json(resp.text)

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

Get own recent screenshots, 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
ScreenshotResponse

class:ScreenshotResponse: Screenshot Response

Source code in src/pythonxbox/api/provider/screenshots/__init__.py
async def get_recent_own_screenshots(
    self,
    title_id: str | None = None,
    skip_items: int = 0,
    max_items: int = 25,
    **kwargs,
) -> ScreenshotResponse:
    """
    Get own recent screenshots, 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:`ScreenshotResponse`: Screenshot Response
    """
    url = self.SCREENSHOTS_METADATA_URL + "/users/me"
    if title_id:
        url += f"/titles/{title_id}"
    url += "/screenshots"

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

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

Get recent screenshots 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
ScreenshotResponse

class:ScreenshotResponse: Screenshot Response

Source code in src/pythonxbox/api/provider/screenshots/__init__.py
async def get_recent_screenshots_by_xuid(
    self,
    xuid: str,
    title_id: str | None = None,
    skip_items: int = 0,
    max_items: int = 25,
    **kwargs,
) -> ScreenshotResponse:
    """
    Get recent screenshots 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:`ScreenshotResponse`: Screenshot Response
    """
    url = self.SCREENSHOTS_METADATA_URL + f"/users/xuid({xuid})"
    if title_id:
        url += f"/titles/{title_id}"
    url += "/screenshots"

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

get_saved_community_screenshots_by_title_id(title_id, **kwargs) async

Get saved community screenshots by Title Id

Parameters:

Name Type Description Default
title_id str

Title Id to get screenshots for

required

Returns:

Type Description
ScreenshotResponse

class:ScreenshotResponse: Screenshot Response

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

    Args:
        title_id: Title Id to get screenshots for

    Returns:
        :class:`ScreenshotResponse`: Screenshot Response
    """
    url = f"{self.SCREENSHOTS_METADATA_URL}/public/titles/{title_id}/screenshots/saved"
    params = {"qualifier": "created"}
    resp = await self.client.session.get(
        url, params=params, headers=self.HEADERS_SCREENSHOTS_METADATA, **kwargs
    )
    resp.raise_for_status()
    return ScreenshotResponse.model_validate_json(resp.text)

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

Get own saved screenshots, 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
ScreenshotResponse

class:ScreenshotResponse: Screenshot Response

Source code in src/pythonxbox/api/provider/screenshots/__init__.py
async def get_saved_own_screenshots(
    self,
    title_id: str | None = None,
    skip_items: int = 0,
    max_items: int = 25,
    **kwargs,
) -> ScreenshotResponse:
    """
    Get own saved screenshots, 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:`ScreenshotResponse`: Screenshot Response
    """
    url = self.SCREENSHOTS_METADATA_URL + "/users/me"
    if title_id:
        url += f"/titles/{title_id}"
    url += "/screenshots/saved"

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

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

Get saved screenshots 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
ScreenshotResponse

class:ScreenshotResponse: Screenshot Response

Source code in src/pythonxbox/api/provider/screenshots/__init__.py
async def get_saved_screenshots_by_xuid(
    self,
    xuid: str,
    title_id: str | None = None,
    skip_items: int = 0,
    max_items: int = 25,
    **kwargs,
) -> ScreenshotResponse:
    """
    Get saved screenshots 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:`ScreenshotResponse`: Screenshot Response
    """
    url = self.SCREENSHOTS_METADATA_URL + f"/users/xuid({xuid})"
    if title_id:
        url += f"/titles/{title_id}"
    url += "/screenshots/saved"

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