File size: 3,282 Bytes
910f2aa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/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()