Module aioimmich.search
aioimmich search api.
Classes
class ImmichSearch (api: ImmichApi)
-
Expand source code
class ImmichSearch(ImmichSubApi): """Immich search api.""" async def _async_search_assets( self, asset_type: AssetType | None = None, person_ids: list[str] | None = None, tag_ids: list[str] | None = None, page_size: int = 100, max_pages: int = 20, ) -> list[ImmichAsset]: """Search for assets. Args: asset_type (AssetType | None): filter to `AssetType` person_ids (list[str] | None): filter to list of personIds tag_ids (list[str] | None): filter to list of tagIds page_size (int): assets per page max_pages (int): maximun number of pages to return Returns: a list of `ImmichAsset` """ data: dict[str, str | int | bool | list[str]] = {"size": page_size} if asset_type: data["type"] = asset_type.value if person_ids: data["personIds"] = person_ids if tag_ids: data["tagIds"] = tag_ids results: list[ImmichAsset] = [] for page in range(max_pages): result = await self.api.async_do_request( "search/metadata", data={**data, "page": page + 1}, method="POST" ) assert isinstance(result, dict) assets = result["assets"] results.extend(ImmichAsset.from_dict(asset) for asset in assets["items"]) if assets.get("nextPage") is None: break return results async def async_get_all( self, page_size: int = 100, max_pages: int = 20 ) -> list[ImmichAsset]: """Get all assets. Args: page_size (int): assets per page max_pages (int): maximun number of pages to return Returns: a list of `ImmichAsset` """ return await self._async_search_assets(page_size=page_size, max_pages=max_pages) async def async_get_all_by_tag_ids( self, tag_ids: list[str], page_size: int = 100, max_pages: int = 20 ) -> list[ImmichAsset]: """Get all assets for given tag ids. Args: tag_ids (list[str]): filter to list of tagIds page_size (int): assets per page max_pages (int): maximun number of pages to return Returns: a list of `ImmichAsset` """ return await self._async_search_assets( tag_ids=tag_ids, page_size=page_size, max_pages=max_pages ) async def async_get_all_by_person_ids( self, person_ids: list[str], page_size: int = 100, max_pages: int = 20 ) -> list[ImmichAsset]: """Get all assets for given person ids. Args: person_ids (list[str]): filter to list of tagIds page_size (int): assets per page max_pages (int): maximun number of pages to return Returns: a list of `ImmichAsset` """ return await self._async_search_assets( person_ids=person_ids, page_size=page_size, max_pages=max_pages )
Immich search api.
Immich sub api init.
Ancestors
Methods
async def async_get_all(self, page_size: int = 100, max_pages: int = 20) ‑> list[ImmichAsset]
-
Expand source code
async def async_get_all( self, page_size: int = 100, max_pages: int = 20 ) -> list[ImmichAsset]: """Get all assets. Args: page_size (int): assets per page max_pages (int): maximun number of pages to return Returns: a list of `ImmichAsset` """ return await self._async_search_assets(page_size=page_size, max_pages=max_pages)
Get all assets.
Args
page_size
:int
- assets per page
max_pages
:int
- maximun number of pages to return
Returns
a list of
ImmichAsset
async def async_get_all_by_person_ids(self, person_ids: list[str], page_size: int = 100, max_pages: int = 20) ‑> list[ImmichAsset]
-
Expand source code
async def async_get_all_by_person_ids( self, person_ids: list[str], page_size: int = 100, max_pages: int = 20 ) -> list[ImmichAsset]: """Get all assets for given person ids. Args: person_ids (list[str]): filter to list of tagIds page_size (int): assets per page max_pages (int): maximun number of pages to return Returns: a list of `ImmichAsset` """ return await self._async_search_assets( person_ids=person_ids, page_size=page_size, max_pages=max_pages )
Get all assets for given person ids.
Args
person_ids
:list[str]
- filter to list of tagIds
page_size
:int
- assets per page
max_pages
:int
- maximun number of pages to return
Returns
a list of
ImmichAsset
async def async_get_all_by_tag_ids(self, tag_ids: list[str], page_size: int = 100, max_pages: int = 20) ‑> list[ImmichAsset]
-
Expand source code
async def async_get_all_by_tag_ids( self, tag_ids: list[str], page_size: int = 100, max_pages: int = 20 ) -> list[ImmichAsset]: """Get all assets for given tag ids. Args: tag_ids (list[str]): filter to list of tagIds page_size (int): assets per page max_pages (int): maximun number of pages to return Returns: a list of `ImmichAsset` """ return await self._async_search_assets( tag_ids=tag_ids, page_size=page_size, max_pages=max_pages )
Get all assets for given tag ids.
Args
tag_ids
:list[str]
- filter to list of tagIds
page_size
:int
- assets per page
max_pages
:int
- maximun number of pages to return
Returns
a list of
ImmichAsset