Module aioimmich.albums

aioimmich albums api.

Sub-modules

aioimmich.albums.models

aioimmich albums models.

Classes

class ImmichAlbums (api: ImmichApi)
Expand source code
class ImmichAlbums(ImmichSubApi):
    """Immich albums api."""

    async def async_get_all_albums(self) -> list[ImmichAlbum]:
        """Get all albums.

        Returns:
            list of all albums as `list[ImmichAlbum]`
        """
        if self.api.version.major < 3:
            result = await self.api.async_do_request("albums", {"shared": "false"})
            assert isinstance(result, list)
            result_shared = await self.api.async_do_request(
                "albums", {"shared": "true"}
            )
            assert isinstance(result_shared, list)
            return [ImmichAlbum.from_dict(album) for album in result + result_shared]

        result = await self.api.async_do_request("albums")
        assert isinstance(result, list)
        return [ImmichAlbum.from_dict(album) for album in result]

    async def async_get_album_info(self, album_id: str) -> ImmichAlbum:
        """Get album information.

        Args:
            album_id (str): id of the album to be fetched

        Returns:
            album as `ImmichAlbum`
        """
        result = await self.api.async_do_request(f"albums/{album_id}")
        assert isinstance(result, dict)
        return ImmichAlbum.from_dict(result)

    async def async_filter_albums_by_name(self, name: str) -> list[ImmichAlbum]:
        """Filter albums by name.

        Args:
            name (str): Album name to filter by (case-insensitive)

        Returns:
            a list of `ImmichAlbum`
        """
        return [
            album
            for album in await self.async_get_all_albums()
            if name.lower() in album.album_name.lower()
        ]

    async def async_add_assets_to_album(
        self, album_id: str, asset_ids: list[str]
    ) -> list[ImmichAddAssetsToAlbumResponse]:
        """Add given assets to the given album.

        Args:
            album_id (str): id of the album to add the assets
            asset_ids (list): list of asset ids to add to the album

        Returns:
            result of adding as list of `ImmichAddAssetsToAlbumResponse`
        """
        result = await self.api.async_do_request(
            f"albums/{album_id}/assets", data={"ids": asset_ids}, method="PUT"
        )
        assert isinstance(result, list)
        return [ImmichAddAssetsToAlbumResponse.from_dict(item) for item in result]

Immich albums api.

Immich sub api init.

Ancestors

Methods

async def async_add_assets_to_album(self, album_id: str, asset_ids: list[str]) ‑> list[ImmichAddAssetsToAlbumResponse]
Expand source code
async def async_add_assets_to_album(
    self, album_id: str, asset_ids: list[str]
) -> list[ImmichAddAssetsToAlbumResponse]:
    """Add given assets to the given album.

    Args:
        album_id (str): id of the album to add the assets
        asset_ids (list): list of asset ids to add to the album

    Returns:
        result of adding as list of `ImmichAddAssetsToAlbumResponse`
    """
    result = await self.api.async_do_request(
        f"albums/{album_id}/assets", data={"ids": asset_ids}, method="PUT"
    )
    assert isinstance(result, list)
    return [ImmichAddAssetsToAlbumResponse.from_dict(item) for item in result]

Add given assets to the given album.

Args
-----=
album_id : str
id of the album to add the assets
asset_ids : list
list of asset ids to add to the album

Returns -----= result of adding as list of ImmichAddAssetsToAlbumResponse

async def async_filter_albums_by_name(self, name: str) ‑> list[ImmichAlbum]
Expand source code
async def async_filter_albums_by_name(self, name: str) -> list[ImmichAlbum]:
    """Filter albums by name.

    Args:
        name (str): Album name to filter by (case-insensitive)

    Returns:
        a list of `ImmichAlbum`
    """
    return [
        album
        for album in await self.async_get_all_albums()
        if name.lower() in album.album_name.lower()
    ]

Filter albums by name.

Args
-----=
name : str
Album name to filter by (case-insensitive)

Returns -----= a list of ImmichAlbum

async def async_get_album_info(self, album_id: str) ‑> ImmichAlbum
Expand source code
async def async_get_album_info(self, album_id: str) -> ImmichAlbum:
    """Get album information.

    Args:
        album_id (str): id of the album to be fetched

    Returns:
        album as `ImmichAlbum`
    """
    result = await self.api.async_do_request(f"albums/{album_id}")
    assert isinstance(result, dict)
    return ImmichAlbum.from_dict(result)

Get album information.

Args
-----=
album_id : str
id of the album to be fetched

Returns -----= album as ImmichAlbum

async def async_get_all_albums(self) ‑> list[ImmichAlbum]
Expand source code
async def async_get_all_albums(self) -> list[ImmichAlbum]:
    """Get all albums.

    Returns:
        list of all albums as `list[ImmichAlbum]`
    """
    if self.api.version.major < 3:
        result = await self.api.async_do_request("albums", {"shared": "false"})
        assert isinstance(result, list)
        result_shared = await self.api.async_do_request(
            "albums", {"shared": "true"}
        )
        assert isinstance(result_shared, list)
        return [ImmichAlbum.from_dict(album) for album in result + result_shared]

    result = await self.api.async_do_request("albums")
    assert isinstance(result, list)
    return [ImmichAlbum.from_dict(album) for album in result]

Get all albums.

Returns -----= list of all albums as list[ImmichAlbum]