File size: 1,670 Bytes
eda316b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from humeo_core.primitives.select_clips import select_clips_heuristic
from humeo_core.schemas import TranscriptWord


def _words(start: float, end: float, n: int) -> list[TranscriptWord]:
    step = (end - start) / max(1, n)
    return [
        TranscriptWord(word=f"w{i}", start_time=start + i * step, end_time=start + (i + 1) * step)
        for i in range(n)
    ]


def test_no_transcript_returns_single_clip():
    plan = select_clips_heuristic("/tmp/x.mp4", [], duration_sec=600.0)
    assert len(plan.clips) == 1


def test_prefers_dense_windows():
    # dense between 30-90, sparse elsewhere
    dense = _words(30.0, 90.0, 240)  # 4 words/sec
    sparse_before = _words(0.0, 30.0, 6)
    sparse_after = _words(90.0, 600.0, 30)
    words = sparse_before + dense + sparse_after
    plan = select_clips_heuristic(
        "/tmp/x.mp4", words, duration_sec=600.0, target_count=1, min_sec=30, max_sec=60
    )
    assert len(plan.clips) == 1
    c = plan.clips[0]
    assert 30 <= c.start_time_sec <= 90
    assert c.end_time_sec <= 120


def test_no_overlap_when_multiple_picked():
    dense_a = _words(30.0, 90.0, 240)
    dense_b = _words(200.0, 260.0, 240)
    words = dense_a + dense_b
    plan = select_clips_heuristic(
        "/tmp/x.mp4",
        words,
        duration_sec=400.0,
        target_count=3,
        min_sec=30,
        max_sec=60,
    )
    # Should pick both dense regions without overlap.
    assert len(plan.clips) >= 2
    starts_ends = sorted((c.start_time_sec, c.end_time_sec) for c in plan.clips)
    for (s1, e1), (s2, e2) in zip(starts_ends, starts_ends[1:]):
        assert e1 <= s2