File size: 2,021 Bytes
29fd274
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from app.models import BallEvent, Wicket
from app.services.cricket import ReplayData


def _events() -> list[BallEvent]:
    tokens = "0 4 1 0 wd 2 1 1 1 0 6 0 2 0 1 W 4 1 0 2 0 4 nb 6 1 1 1 4 0 0 1 W 4 4 6 1 0 2 0 1 0 0 1 W 4 0 2 6 W 1 1 0 1 2 1 0 0 0 wd 0 W 1 1 4 0 1 6 1 0".split()
    batters = ["Rohan Kapoor", "Sameer Iyer", "Liam Carter", "Jordan Reyes", "Kabir Shah"]
    bowlers = ["Arjun Mehta", "Daniel Okafor", "Hassan Rahim", "Lewis Porter", "Sanjay Nair"]
    events: list[BallEvent] = []
    legal_by_over = 0
    for index, token in enumerate(tokens):
        over = legal_by_over // 6
        ball = legal_by_over % 6 + 1
        is_legal = token not in {"wd", "nb"}
        runs_bat = int(token) if token.isdigit() else 0
        extras = 1 if token in {"wd", "nb"} else 0
        wicket = Wicket(batter=batters[min(over + ball // 4, len(batters) - 1)], kind="bowled") if token == "W" else None
        events.append(BallEvent(
            index=index + 1, over=over, ball_in_over=ball, over_label=f"{over}.{ball}",
            bowler=bowlers[over % len(bowlers)], striker=batters[(index // 3) % len(batters)],
            non_striker=batters[((index // 3) + 1) % len(batters)], runs_off_bat=runs_bat,
            extras=extras, total_runs=runs_bat + extras, is_legal=is_legal,
            outcome="wicket" if wicket else ("wide" if token == "wd" else ("no_ball" if token == "nb" else ("four" if runs_bat == 4 else ("six" if runs_bat == 6 else ("run" if runs_bat else "dot"))))),
            wicket=wicket, commentary=f"{token} in over {over}.{ball}",
        ))
        if is_legal:
            legal_by_over += 1
    return events


def demo_matches() -> list[ReplayData]:
    return [ReplayData(
        match_id="demo-t20-northern-coastal", batting_team="Coastal Kings",
        bowling_team="Northern Strikers", target=183, deliveries=_events(),
        batting_order=["Rohan Kapoor", "Sameer Iyer", "Liam Carter", "Jordan Reyes", "Kabir Shah"],
        result="Historical replay complete",
    )]