FujiwaraChoki/MoneyPrinterV2 · error · PostBridgeClientError

Media file does not exist: {file_path}

Error message

Media file does not exist: {file_path}

What it means

Raised by PostBridgeClient.upload_media when the local media file path does not exist before attempting the upload handshake. The client fails fast rather than sending a bogus request to the API.

Source

Thrown at src/classes/PostBridge.py:99

            accounts.extend(page_accounts)

            meta = response_json.get("meta", {})
            url = meta.get("next") if isinstance(meta, dict) else None

        return accounts

    def upload_media(self, file_path: str) -> str:
        """
        Upload a local media file to Post Bridge and return its media ID.

        Args:
            file_path (str): Absolute path to a local media file.

        Returns:
            media_id (str): Uploaded media ID.
        """
        if not os.path.exists(file_path):
            raise PostBridgeClientError(f"Media file does not exist: {file_path}")

        file_name = os.path.basename(file_path)
        mime_type = self._guess_mime_type(file_path)
        file_size = os.path.getsize(file_path)

        upload_response = self._request_json(
            "POST",
            f"{self.API_BASE}/media/create-upload-url",
            json={
                "name": file_name,
                "mime_type": mime_type,
                "size_bytes": file_size,
            },
        )

        media_id = upload_response.get("media_id")
        upload_url = upload_response.get("upload_url")

View on GitHub (pinned to 5192af8eca)

Solutions

  1. Check the render/download step actually produced the file before crossposting
  2. Use absolute, resolved paths (Path(...).resolve()) when passing file_path
  3. If the file was deleted, regenerate it or fix the stale path in config

Example fix

// before
client.upload_media("output/short.mp4")

// after
from pathlib import Path
p = Path("output/short.mp4").resolve()
if not p.is_file():
    raise FileNotFoundError(f"Render output missing: {p}")
client.upload_media(str(p))
Defensive patterns

Strategy: validation

Validate before calling

from pathlib import Path
p = Path(file_path).expanduser().resolve()
if not p.is_file():
    raise FileNotFoundError(f"Media file missing before upload: {p}")
client.upload_media(str(p))

Type guard

from pathlib import Path

def is_uploadable_media_file(p: str) -> bool:
    try:
        return Path(p).is_file() and Path(p).stat().st_size > 0
    except OSError:
        return False

Try / catch

try:
    client.upload_media(file_path)
except PostBridgeClientError as exc:
    if "Media file does not exist" in str(exc):
        regenerate_media_and_retry(file_path)
    else:
        raise

Prevention

When it happens

Trigger: Calling maybe_crosspost_youtube_short with a video path that was moved/deleted after generation, a relative path resolved from a different cwd, or a typo in the configured output path.

Common situations: Temp files cleaned up between generation and crosspost, paths from config.json pointing at another machine's layout, or the render step failing silently so the file was never produced.

Related errors


AI-assisted analysis of FujiwaraChoki/MoneyPrinterV2@5192af8eca (2026-08-28). Data as JSON: /api/errors/235e06c1fc703322. Report an issue: GitHub.