studio / publisher /platforms /shorts.py
Ava2lon's picture
Upload 170 files
345855e verified
Raw
History Blame Contribute Delete
937 Bytes
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",
}