from googleapiclient.discovery import build from googleapiclient.http import MediaFileUpload from .base import validate_payload from .auth import get_token async def publish_shorts(payload: dict): payload = validate_payload(payload) youtube = build( "youtube", "v3", developerKey=get_token("YOUTUBE_API_KEY"), ) request = youtube.videos().insert( part="snippet,status", body={ "snippet": { "title": payload["caption"][:90], "description": payload["caption"], "tags": payload["hashtags"], "categoryId": "22", }, "status": {"privacyStatus": "public"}, }, media_body=MediaFileUpload(payload["video_path"]), ) response = request.execute() return { "platform": "shorts", "video_id": response["id"], "status": "published", }