#!/usr/bin/env python3 """ DittoTalkingHead API テストスクリプト 簡単なAPIテストを実行します """ import logging import sys from test_api_client import TalkingHeadAPIClient # ロギング設定 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) def test_basic_functionality(): """基本機能のテスト""" logging.info("=== 基本機能テスト開始 ===") # クライアント初期化 client = TalkingHeadAPIClient() # サンプルファイルを使用 audio_path = "example/audio.wav" image_path = "example/image.png" try: # 動画生成 logging.info(f"接続開始: O-ken5481/talkingAvater_bgk") logging.info(f"ファイルアップロード: {audio_path}, {image_path}") logging.info("処理開始...") result = client.generate_video(audio_path, image_path) video_path, status = result if video_path: logging.info("動画生成完了") # タイムスタンプ付きで保存 if isinstance(video_path, dict) and 'video' in video_path: saved_path = client.save_with_timestamp(video_path['video']) if saved_path: logging.info(f"保存完了: {saved_path}") print(f"\n✅ テスト成功!") print(f"ステータス: {status}") print(f"保存先: {saved_path}") return True print(f"\n❌ テスト失敗") print(f"ステータス: {status}") return False except Exception as e: logging.error(f"エラー発生: {e}") return False def test_error_handling(): """エラーハンドリングのテスト""" logging.info("\n=== エラーハンドリングテスト開始 ===") client = TalkingHeadAPIClient() # 存在しないファイルでテスト result = client.generate_video("nonexistent.wav", "nonexistent.png") video_path, status = result if video_path is None and "見つかりません" in status: logging.info("✅ ファイル不在エラーを正しく検出") return True else: logging.error("❌ エラーハンドリングが正しく動作していません") return False def main(): """メイン関数""" print("DittoTalkingHead API テスト") print("=" * 50) # 基本機能テスト basic_test_passed = test_basic_functionality() # エラーハンドリングテスト error_test_passed = test_error_handling() # 結果サマリー print("\n" + "=" * 50) print("テスト結果:") print(f"- 基本機能テスト: {'✅ 成功' if basic_test_passed else '❌ 失敗'}") print(f"- エラーハンドリングテスト: {'✅ 成功' if error_test_passed else '❌ 失敗'}") # 終了コード if basic_test_passed and error_test_passed: print("\n全てのテストが成功しました! 🎉") sys.exit(0) else: print("\n一部のテストが失敗しました。") sys.exit(1) if __name__ == "__main__": main()