File size: 11,980 Bytes
837f06d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
"""
Video Frame Simulator β€” Generates 30 diverse simulated drone surveillance frames.

Each frame represents a single snapshot from a drone camera, described as text.
Covers day/night scenarios, vehicles, people, suspicious/normal activity, and edge cases.
"""


def get_simulated_frames() -> list[dict]:
    """
    Returns 30 diverse simulated video frames covering a full 24-hour patrol cycle.

    Each frame is a dict with:
        - frame_id (int): Sequential frame identifier
        - time (str): Timestamp in HH:MM format
        - location (str): Where the drone is patrolling
        - description (str): Rich text description of what the camera sees

    Returns:
        List of 30 frame dictionaries
    """
    frames = [
        # === EARLY MORNING (06:00 - 08:00) β€” Shift start, employee arrivals ===
        {
            "frame_id": 1,
            "time": "06:00",
            "location": "Main Gate",
            "description": "Security guard opening the main gate. No vehicles or pedestrians in view. Morning light, clear visibility. Gate barrier is being raised."
        },
        {
            "frame_id": 2,
            "time": "06:15",
            "location": "Main Gate",
            "description": "White Toyota Camry approaching the main gate from the east road. Single occupant visible β€” appears to be an employee with a badge. Vehicle slowing down for entry."
        },
        {
            "frame_id": 3,
            "time": "06:30",
            "location": "Parking Lot A",
            "description": "White Toyota Camry parking in spot A-12. Driver exiting vehicle, wearing company uniform, walking toward Admin Building. Parking lot is mostly empty."
        },
        {
            "frame_id": 4,
            "time": "06:45",
            "location": "Perimeter Fence North",
            "description": "North perimeter fence intact. A stray cat walking along the fence line. No signs of intrusion or damage. Morning dew on the grass. Fence sensors appear normal."
        },
        {
            "frame_id": 5,
            "time": "07:00",
            "location": "Main Gate",
            "description": "Silver Honda Civic and Black BMW X5 arriving in convoy through main gate. Both vehicles have employee parking stickers visible. Normal morning traffic."
        },

        # === MID MORNING (08:00 - 11:00) β€” Business hours, deliveries ===
        {
            "frame_id": 6,
            "time": "08:30",
            "location": "Loading Dock",
            "description": "FedEx Delivery Van backing into Loading Dock Bay 2. Driver in FedEx uniform stepping out with a handheld scanner. Two warehouse workers approaching to receive packages."
        },
        {
            "frame_id": 7,
            "time": "09:00",
            "location": "Warehouse Entrance",
            "description": "Three employees in safety vests entering the warehouse through the main entrance. Forklift visible inside. Normal warehouse operations in progress."
        },
        {
            "frame_id": 8,
            "time": "09:30",
            "location": "Parking Lot B",
            "description": "Blue Ford F150 pickup truck entering Parking Lot B. No employee sticker visible. Truck has out-of-state license plates. Driver remains seated in vehicle for several minutes."
        },
        {
            "frame_id": 9,
            "time": "10:00",
            "location": "Admin Building",
            "description": "Group of 4 people in business attire entering the Admin Building front entrance. Appears to be a scheduled meeting β€” visitor badges visible on lanyards. Receptionist greeting them at the door."
        },
        {
            "frame_id": 10,
            "time": "10:30",
            "location": "Server Room Exterior",
            "description": "Maintenance technician in company coveralls using a keycard to access the Server Room exterior door. Tool bag in hand. Security badge clearly visible."
        },

        # === MIDDAY (11:00 - 14:00) β€” Lunch, routine activity ===
        {
            "frame_id": 11,
            "time": "11:30",
            "location": "Parking Lot A",
            "description": "Blue Ford F150 from Parking Lot B now seen driving slowly through Parking Lot A. Same out-of-state plates. Vehicle circling the lot without parking. Suspicious behavior β€” possible surveillance."
        },
        {
            "frame_id": 12,
            "time": "12:00",
            "location": "Admin Building",
            "description": "Multiple employees exiting Admin Building for lunch break. Approximately 8-10 people walking toward Parking Lot A. Normal midday activity."
        },
        {
            "frame_id": 13,
            "time": "12:30",
            "location": "Main Gate",
            "description": "UPS Delivery Truck entering through main gate. UPS branding clearly visible. Driver showing delivery manifest to the security guard at the checkpoint."
        },
        {
            "frame_id": 14,
            "time": "13:00",
            "location": "Loading Dock",
            "description": "UPS Delivery Truck at Loading Dock Bay 1. Three large pallets being unloaded. Warehouse supervisor checking delivery against order sheet. Normal delivery operation."
        },

        # === AFTERNOON (14:00 - 18:00) β€” Continued operations, end of business ===
        {
            "frame_id": 15,
            "time": "14:30",
            "location": "Perimeter Fence East",
            "description": "Person in dark hoodie standing near the east perimeter fence, looking through the chain-link. Not an employee β€” no badge visible. Person appears to be taking photos of the warehouse with a phone."
        },
        {
            "frame_id": 16,
            "time": "14:45",
            "location": "Perimeter Fence East",
            "description": "Same person in dark hoodie now walking along the east perimeter fence toward the south corner. Still taking photos. No vehicle visible nearby β€” person appears to have arrived on foot."
        },
        {
            "frame_id": 17,
            "time": "15:00",
            "location": "Main Gate",
            "description": "Blue Ford F150 exiting through main gate at moderate speed. Same out-of-state plates from earlier. Driver not making eye contact with security guard. Vehicle heading east."
        },
        {
            "frame_id": 18,
            "time": "16:30",
            "location": "Parking Lot A",
            "description": "Red Chevrolet Silverado parked in an unauthorized zone near the emergency exit. Engine running, no occupant visible inside. Hazard lights are on."
        },
        {
            "frame_id": 19,
            "time": "17:00",
            "location": "Main Gate",
            "description": "End of business traffic. Silver Honda Civic, Black BMW X5, and two other vehicles exiting through the main gate. Normal employee departure pattern. Security guard waving them through."
        },
        {
            "frame_id": 20,
            "time": "17:30",
            "location": "Emergency Exit Rear",
            "description": "Rear emergency exit door is ajar. No person visible. Door should be closed and locked at all times. Interior lights flickering β€” possible maintenance issue."
        },

        # === EVENING (18:00 - 22:00) β€” Reduced activity, transition to night ===
        {
            "frame_id": 21,
            "time": "18:30",
            "location": "Parking Lot A",
            "description": "Parking lot nearly empty. Only 3 vehicles remaining β€” White Toyota Camry in A-12, Red Chevrolet Silverado still in unauthorized zone (engine now off), and an unrecognized gray sedan in A-5."
        },
        {
            "frame_id": 22,
            "time": "19:00",
            "location": "Warehouse Entrance",
            "description": "Night shift security guard beginning patrol at warehouse entrance. Flashlight beam visible. Guard checking door locks and scanning badge at checkpoint. Normal shift change procedure."
        },
        {
            "frame_id": 23,
            "time": "20:00",
            "location": "Perimeter Fence South",
            "description": "Two deer near the south perimeter fence, grazing on the lawn. Motion sensors triggered but no human activity. Wildlife false alarm β€” common occurrence per historical data."
        },
        {
            "frame_id": 24,
            "time": "21:30",
            "location": "Main Gate",
            "description": "White Toyota Camry exiting main gate. Late departure β€” employee working overtime. Security guard logs the exit. Gate area well-lit, no other activity."
        },

        # === NIGHT (22:00 - 02:00) β€” High security, suspicious events ===
        {
            "frame_id": 25,
            "time": "22:15",
            "location": "Perimeter Fence North",
            "description": "Person in dark clothing crouching near the north perimeter fence. Appears to be testing the fence for weaknesses. No badge or identification visible. Night vision shows a backpack on the ground beside them."
        },
        {
            "frame_id": 26,
            "time": "22:30",
            "location": "Perimeter Fence North",
            "description": "Same person from Frame 25 now attempting to climb the north perimeter fence. Hands on the chain-link, one foot on the lower rail. Backpack slung over shoulder. Clear perimeter breach attempt."
        },
        {
            "frame_id": 27,
            "time": "23:00",
            "location": "Main Gate",
            "description": "Unidentified dark-colored SUV idling near the main gate with headlights off. Windows are tinted β€” occupants not visible. Vehicle not in the known vehicles database. License plate partially obscured by mud."
        },
        {
            "frame_id": 28,
            "time": "23:30",
            "location": "Server Room Exterior",
            "description": "Person in a ski mask approaching the Server Room exterior door. Attempting to use a device on the keycard reader. Unauthorized access attempt. No security badge visible."
        },
        {
            "frame_id": 29,
            "time": "00:15",
            "location": "Loading Dock",
            "description": "Loading dock bay 3 door partially open from inside. No scheduled deliveries at this hour. Shadow of a person visible inside the dock area. Dock lights are off β€” area should be fully illuminated per security protocol."
        },
        {
            "frame_id": 30,
            "time": "01:00",
            "location": "Parking Lot B",
            "description": "Two individuals near the gray sedan in Parking Lot B (same vehicle from earlier in A-5, now relocated). Trunk is open, items being loaded. Both wearing dark clothing with face coverings. Highly suspicious β€” potential theft in progress."
        },
    ]

    return frames


def get_frame_by_id(frame_id: int) -> dict | None:
    """Get a specific frame by its ID."""
    frames = get_simulated_frames()
    for frame in frames:
        if frame["frame_id"] == frame_id:
            return frame
    return None


def get_frames_by_time_range(start_time: str, end_time: str) -> list[dict]:
    """Get frames within a time range (HH:MM format)."""
    frames = get_simulated_frames()
    start_minutes = _time_to_minutes(start_time)
    end_minutes = _time_to_minutes(end_time)

    # Handle overnight ranges (e.g., 22:00 to 02:00)
    if end_minutes < start_minutes:
        return [f for f in frames if _time_to_minutes(f["time"]) >= start_minutes
                or _time_to_minutes(f["time"]) <= end_minutes]
    else:
        return [f for f in frames if start_minutes <= _time_to_minutes(f["time"]) <= end_minutes]


def _time_to_minutes(time_str: str) -> int:
    """Convert HH:MM to total minutes for comparison."""
    parts = time_str.split(":")
    return int(parts[0]) * 60 + int(parts[1])