93 lines
3.0 KiB
Python
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())
|