8000 feat: add create scene index · video-db/videodb-python@854055e · GitHub
[go: up one dir, main page]

Skip to content

Commit 854055e

Browse files
committed
feat: add create scene index
1 parent 0dc7212 commit 854055e

File tree

4 files changed

+49
-3
lines changed

4 files changed

+49
-3
lines changed

videodb/_constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class ApiPath:
5858
usage = "usage"
5959
invoices = "invoices"
6060
scenes = "scenes"
61+
scene = "scene"
6162

6263

6364
class Status:

videodb/image.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,14 @@ def __repr__(self) -> str:
5454
f"frame_time={self.frame_time}, "
5555
f"description={self.description})"
5656
)
57+
58+
def to_json(self):
59+
return {
60+
"id": self.id,
61+
"video_id": self.video_id,
62+
"scene_id": self.scene_id,
63+
"url": self.url,
64+
"frame_no": self.frame_no,
65+
"frame_time": self.frame_time,
66+
"description": self.description,
67+
}

videodb/scene.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,13 @@ def __repr__(self) -> str:
3131
class Scene:
3232
def __init__(
3333
self,
34-
_connection,
3534
id: str,
3635
video_id: str,
3736
start: float,
3837
end: float,
3938
frames: List[Frame],
4039
description: str,
4140
):
42-
self._connection = _connection
4341
self.id = id
4442
self.video_id = video_id
4543
self.start = start
@@ -58,6 +56,16 @@ def __repr__(self) -> str:
5856
f"description={self.description})"
5957
)
6058

59+
def to_json(self):
60+
return {
61+
"id": self.id,
62+
"video_id": self.video_id,
63+
"start": self.start,
64+
"end": self.end,
65+
"frames": [frame.to_json() for frame in self.frames],
66+
"description": self.description,
67+
}
68+
6169

6270
class SceneCollection:
6371
def __init__(

videodb/video.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ def _format_scene_collection(self, collection_data: dict) -> SceneCollection:
204204
)
205205
frames.append(frame)
206206
scene = Scene(
207-
self._connection,
208207
scene.get("scene_id"),
209208
self.id,
210209
scene.get("start"),
@@ -268,6 +267,33 @@ def delete_scene_collection(self, collection_id: str) -> None:
268267
path=f"{ApiPath.video}/{self.id}/{ApiPath.scenes}/{collection_id}"
269268
)
270269

270+
def create_scene_index(
271+
self, scenes: List[Scene], callback_url: str = None
272+
) -> List[Scene]:
273+
scenes_data = self._connection.post(
274+
path=f"{ApiPath.video}/{self.id}/{ApiPath.index}/{ApiPath.scene}",
275+
data={
276+
"scenes": [scene.to_json() for scene in scenes],
277+
"callback_url": callback_url,
278+
},
279+
)
280+
return [
281+
Scene(
282+
scene.get("scene_id"),
283+
self.id,
284+
scene.get("start"),
285+
scene.get("end"),
286+
[],
287+
scene.get("description"),
288+
)
289+
for scene in scenes_data.get("scene_index_records", [])
290+
]
291+
292+
def delete_scene_index(self) -> None:
293+
self._connection.delete(
294+
path=f"{ApiPath.video}/{self.id}/{ApiPath.index}/{ApiPath.scene}"
295+
)
296+
271297
def delete_scene_index(self) -> None:
272298
self._connection.post(
273299
path=f"{ApiPath.video}/{self.id}/{ApiPath.index}/{ApiPath.delete}",

0 commit comments

Comments
 (0)
0