MCPcopy Create free account
hub / github.com/TheSmallHanCat/flow2api / upsample_image

Method upsample_image

src/services/flow_client.py:1744–1838  ·  view source on GitHub ↗

放大图片到 2K/4K Args: at: Access Token project_id: 项目ID media_id: 图片的 mediaId (从 batchGenerateImages 返回的 media[0]["name"]) target_resolution: UPSAMPLE_IMAGE_RESOLUTION_2K 或 UPSAMPLE_IMAGE_RESOLUTION_4K user_paygate_tier: 用户等级 (如 PAYGAT

(
        self,
        at: str,
        project_id: str,
        media_id: str,
        target_resolution: str = "UPSAMPLE_IMAGE_RESOLUTION_4K",
        user_paygate_tier: str = "PAYGATE_TIER_NOT_PAID",
        session_id: Optional[str] = None,
        token_id: Optional[int] = None
    )

Source from the content-addressed store, hash-verified

1742 raise last_error
1743
1744 async def upsample_image(
1745 self,
1746 at: str,
1747 project_id: str,
1748 media_id: str,
1749 target_resolution: str = "UPSAMPLE_IMAGE_RESOLUTION_4K",
1750 user_paygate_tier: str = "PAYGATE_TIER_NOT_PAID",
1751 session_id: Optional[str] = None,
1752 token_id: Optional[int] = None
1753 ) -> str:
1754 """放大图片到 2K/4K
1755
1756 Args:
1757 at: Access Token
1758 project_id: 项目ID
1759 media_id: 图片的 mediaId (从 batchGenerateImages 返回的 media[0]["name"])
1760 target_resolution: UPSAMPLE_IMAGE_RESOLUTION_2K 或 UPSAMPLE_IMAGE_RESOLUTION_4K
1761 user_paygate_tier: 用户等级 (如 PAYGATE_TIER_NOT_PAID / PAYGATE_TIER_ONE)
1762 session_id: 可选,复用图片生成请求的 sessionId
1763
1764 Returns:
1765 base64 编码的图片数据
1766 """
1767 url = f"{self.api_base_url}/flow/upsampleImage"
1768
1769 # 403/reCAPTCHA/500 重试逻辑 - 使用配置的最大重试次数
1770 max_retries = config.flow_max_retries
1771 last_error = None
1772
1773 for retry_attempt in range(max_retries):
1774 # 获取 reCAPTCHA token - 使用 IMAGE_GENERATION action
1775 recaptcha_token, browser_id = await self._get_recaptcha_token(
1776 project_id,
1777 action="IMAGE_GENERATION",
1778 token_id=token_id
1779 )
1780 if not recaptcha_token:
1781 last_error = Exception("Failed to obtain reCAPTCHA token")
1782 should_retry = await self._handle_missing_recaptcha_token(
1783 retry_attempt=retry_attempt,
1784 max_retries=max_retries,
1785 browser_id=browser_id,
1786 project_id=project_id,
1787 log_prefix="[IMAGE UPSAMPLE] 放大",
1788 )
1789 if should_retry:
1790 continue
1791 raise last_error
1792 upsample_session_id = session_id or self._generate_session_id()
1793
1794 json_data = {
1795 "mediaId": media_id,
1796 "targetResolution": target_resolution,
1797 "clientContext": {
1798 "recaptchaContext": {
1799 "token": recaptcha_token,
1800 "applicationType": "RECAPTCHA_APPLICATION_TYPE_WEB"
1801 },

Callers 1

Tested by

no test coverage detected