o2o-castad-backend/poc/instagram/main.py

93 lines
3.0 KiB
Python

"""
Instagram Graph API POC - 비디오 업로드 테스트
실행 방법:
python -m poc.instagram.main
"""
import asyncio
import logging
import sys
from poc.instagram.client import InstagramClient
from poc.instagram.exceptions import InstagramAPIError
# 로깅 설정
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s - %(message)s",
handlers=[logging.StreamHandler(sys.stdout)],
)
logger = logging.getLogger(__name__)
# 설정
ACCESS_TOKEN = "IGAAde0ToiLW1BZAFpTaTBVNEJGMksyV25XY01SMzNHU29RRFJmc25hcXJReUtpbVJvTVNaS2ZAESE92NFlNTS1qazNOLVlSRlJuYTZAoTWFtS2tkSGJYblBPZAVdfZAWNfOGkyY0o2TDBSekdIaUd6WjNaUHZAXb1R0M05YdjRTcTNyNAZDZD"
VIDEO_URL = "https://f002.backblazeb2.com/file/creatomate-c8xg3hsxdu/9b1a680b-3481-4b22-94d4-a5cfd3e19f95.mp4"
VIDEO_CAPTION = "Test video from Instagram POC #test"
async def main():
"""비디오 업로드 POC 실행"""
print("\n" + "=" * 60)
print("Instagram Graph API - 비디오 업로드 POC")
print("=" * 60)
async with InstagramClient(access_token=ACCESS_TOKEN) as client:
# Step 1: 접속 테스트
print("\n[Step 1] 접속 테스트")
print("-" * 40)
try:
account_id = await client.get_account_id()
print("[성공] 접속 확인 완료")
print(f" Account ID: {account_id}")
except InstagramAPIError as e:
print(f"[실패] 접속 실패: {e}")
return
# Step 2: 비디오 업로드
print("\n[Step 2] 비디오 업로드")
print("-" * 40)
print(f" 비디오 URL: {VIDEO_URL}")
print(f" 캡션: {VIDEO_CAPTION}")
print("\n업로드 중... (비디오 처리에 시간이 걸릴 수 있습니다)")
try:
media = await client.publish_video(
video_url=VIDEO_URL,
caption=VIDEO_CAPTION,
share_to_feed=True,
)
print("\n[성공] 비디오 업로드 완료!")
print(f" 미디어 ID: {media.id}")
print(f" 링크: {media.permalink}")
except InstagramAPIError as e:
print(f"\n[실패] 업로드 실패: {e}")
return
# Step 3: 업로드 확인
print("\n[Step 3] 업로드 확인")
print("-" * 40)
try:
verified_media = await client.get_media(media.id)
print("[성공] 업로드 확인 완료!")
print(f" 미디어 ID: {verified_media.id}")
print(f" 타입: {verified_media.media_type}")
print(f" URL: {verified_media.media_url}")
print(f" 퍼머링크: {verified_media.permalink}")
print(f" 게시일: {verified_media.timestamp}")
if verified_media.caption:
print(f" 캡션: {verified_media.caption}")
except InstagramAPIError as e:
print(f"[실패] 확인 실패: {e}")
return
print("\n" + "=" * 60)
print("모든 단계 완료!")
print("=" * 60)
if __name__ == "__main__":
asyncio.run(main())