Files
TalkEdit/test_api.py
2026-04-09 01:36:28 -06:00

130 lines
4.1 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Test script for the TalkEdit API.
This script tests the new Tauri commands that expose all backend functions.
"""
import json
import sys
import os
from pathlib import Path
# Add backend to path for direct testing
sys.path.insert(0, str(Path(__file__).parent / "backend"))
def test_video_info():
"""Test get_video_info function"""
from services.video_editor import get_video_info
# Use a test video file if available
test_video = "/path/to/test/video.mp4" # Replace with actual test file
if os.path.exists(test_video):
try:
info = get_video_info(test_video)
print("✓ Video info test passed")
print(f" Duration: {info['duration']}")
print(f" Resolution: {info['width']}x{info['height']}")
return True
except Exception as e:
print(f"✗ Video info test failed: {e}")
return False
else:
print("⚠ Video info test skipped (no test file)")
return True
def test_caption_generation():
"""Test caption generation functions"""
from services.caption_generator import generate_srt, generate_vtt
# Sample word data
words = [
{"word": "Hello", "start": 0.0, "end": 0.5, "confidence": 0.9},
{"word": "world", "start": 0.5, "end": 1.0, "confidence": 0.95},
{"word": "this", "start": 1.0, "end": 1.3, "confidence": 0.8},
{"word": "is", "start": 1.3, "end": 1.5, "confidence": 0.9},
{"word": "a", "start": 1.5, "end": 1.6, "confidence": 0.85},
{"word": "test", "start": 1.6, "end": 2.0, "confidence": 0.95},
]
try:
srt_content = generate_srt(words)
vtt_content = generate_vtt(words)
if "Hello world" in srt_content and "WEBVTT" in vtt_content:
print("✓ Caption generation test passed")
return True
else:
print("✗ Caption generation test failed: unexpected content")
return False
except Exception as e:
print(f"✗ Caption generation test failed: {e}")
return False
def test_ai_provider():
"""Test AI provider functions"""
from services.ai_provider import AIProvider
try:
# Test listing Ollama models (may fail if Ollama not running)
models = AIProvider.list_ollama_models()
print(f"✓ AI provider test passed (found {len(models)} models)")
return True
except Exception as e:
print(f"⚠ AI provider test skipped: {e}")
return True
def test_deepfilter_status():
"""Test DeepFilterNet availability check"""
from services.audio_cleaner import is_deepfilter_available
try:
available = is_deepfilter_available()
print(f"✓ DeepFilter status test passed (available: {available})")
return True
except Exception as e:
print(f"✗ DeepFilter status test failed: {e}")
return False
def main():
print("Testing TalkEdit API functions...")
print("=" * 50)
tests = [
("Video Info", test_video_info),
("Caption Generation", test_caption_generation),
("AI Provider", test_ai_provider),
("DeepFilter Status", test_deepfilter_status),
]
passed = 0
total = len(tests)
for name, test_func in tests:
print(f"\nTesting {name}:")
if test_func():
passed += 1
print("\n" + "=" * 50)
print(f"Results: {passed}/{total} tests passed")
if passed == total:
print("🎉 All tests passed! The API is ready for AI testing.")
else:
print("⚠️ Some tests failed. Check the output above.")
print("\nAvailable Tauri Commands:")
commands = [
"transcribe_audio",
"export_stream_copy", "export_reencode", "export_reencode_with_subs", "get_video_info",
"clean_audio", "is_deepfilter_available",
"diarize_and_label",
"ai_complete", "list_ollama_models",
"generate_srt", "generate_vtt", "generate_ass", "save_captions",
"is_background_removal_available", "remove_background_on_export",
]
for cmd in commands:
print(f" - {cmd}")
if __name__ == "__main__":
main()