import asyncio import logging from typing import cast from campaigns.connectors.facebook.models import Page from campaigns.utils.image import get_image_content logger = logging.getLogger(__name__) async def get_page_picture_content(page: Page) -> bytes | None: try: return await get_image_content(page.picture.data.url) except Exception as e: logger.error( "Could not get image data from page.", extra={"page_id": page.id}, exc_info=e, ) return None async def get_page_picture_content_in_bulk( pages: list[Page], ) -> dict[str, bytes | None]: pictures = cast( list[bytes | None], await asyncio.gather(*(get_page_picture_content(page) for page in pages)), ) return {page.id: pictures[index] for index, page in enumerate(pages)}