8000 feat: return Scene object · video-db/videodb-python@ed56178 · GitHub
[go: up one dir, main page]

Skip to content

Commit ed56178

Browse files
committed
feat: return Scene object
1 parent b1110e9 commit ed56178

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

videodb/scene.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ def __init__(
1313
end: float,
1414
description: str,
1515
id: str = None,
16+
index_id: str = None,
1617
frames: List[Frame] = [],
1718
):
1819
self.id = id
1920
self.video_id = video_id
2021
self.start = start
2122
self.end = end
2223
self.frames: List[Frame] = frames
24+
self.index_id = index_id
2325
self.description = description
2426

2527
def __repr__(self) -> str:
@@ -30,6 +32,7 @@ def __repr__(self) -> str:
3032
f"start={self.start}, "
3133
f"end={self.end}, "
3234
f"frames={self.frames}, "
35+
f"index_id={self.index_id}, "
3336
f"description={self.description})"
3437
)
3538

videodb/video.py

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ def _format_scene_collection(self, scene_collection_data: dict) -> SceneCollecti
194194
description=scene.get("description"),
195195
id=scene.get("scene_id"),
196196
frames=frames,
197+
index_id=scene.get("index_id"),
197198
)
198199
scenes.append(scene)
199200

@@ -221,6 +222,8 @@ def extract_scenes(
221222
"callback_url": callback_url,
222223
},
223224
)
225+
if not scenes_data:
226+
return None
224227
return self._format_scene_collection(scenes_data.get("scene_collection"))
225228

226229
def get_scene_collection(self, collection_id: str):
@@ -248,7 +251,7 @@ def index_scenes(
248251
scenes: List[Scene] = [],
249252
force: bool = False,
250253
callback_url: str = None,
251-
) -> List[Scene]:
254+
) -> List[Scene] or None:
252255
scenes_data = self._connection.post(
253256
path=f"{ApiPath.video}/{self.id}/{ApiPath.index}/{ApiPath.scene}",
254257
data={
@@ -260,7 +263,18 @@ def index_scenes(
260263
"callback_url": callback_url,
261264
},
262265
)
263-
return scenes_data.get("scene_index_records", [])
266+
if not scenes_data:
267+
return None
268+
return [
269+
Scene(
270+
video_id=self.id,
271+
start=scene.get("start"),
272+
end=scene.get("end"),
273+
index_id=scene.get("scene_index_id"),
274+
description=scene.get("description"),
275+
)
276+
for scene in scenes_data.get("scene_index_records", [])
277+
]
264278

265279
def get_scene_indexes(self) -> List:
266280
index_data = self._connection.get(
@@ -269,11 +283,23 @@ def get_scene_indexes(self) -> List:
269283

270284
return index_data.get("scene_indexes", [])
271285

272-
def get_scene_index(self, scene_index_id: str) -> Scene:
286+
def get_scene_index(self, scene_index_id: str) -> List[Scene] or None:
273287
index_data = self._connection.get(
274288
path=f"{ApiPath.video}/{self.id}/{ApiPath.index}/{ApiPath.scene}/{scene_index_id}"
275289
)
276-
return index_data.get("scene_index_records", [])
290+
index_records = index_data.get("scene_index_records", [])
291+
if not index_records:
292+
return None
293+
return [
294+
Scene(
295+
video_id=self.id,
296+
start=scene.get("start"),
297+
end=scene.get("end"),
298+
index_id=scene.get("scene_index_id"),
299+
description=scene.get("description"),
300+
)
301+
for scene in index_records
302+
]
277303

278304
def delete_scene_index(self, scene_index_id: str) -> None:
279305
self._connection.delete(

0 commit comments

Comments
 (0)
0