Spaces:
Runtime error
Runtime error
Merge branch alt into mime-type-handler-registry
Browse files
src/ctp_slack_bot/models/webvtt.py
CHANGED
@@ -69,3 +69,21 @@ class WebVTTContent(Content):
|
|
69 |
|
70 |
def get_metadata(self: Self) -> Mapping[str, Any]:
|
71 |
return MappingProxyType(self.metadata)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
def get_metadata(self: Self) -> Mapping[str, Any]:
|
71 |
return MappingProxyType(self.metadata)
|
72 |
+
|
73 |
+
@classmethod
|
74 |
+
def __get_start_time(cls, web_vtt: WebVTT) -> Optional[datetime]:
|
75 |
+
try:
|
76 |
+
return next(datetime.fromisoformat(result[0])
|
77 |
+
for result
|
78 |
+
in map(ISO_DATE_TIME_PATTERN.findall, web_vtt.header_comments)
|
79 |
+
if result)
|
80 |
+
except (StopIteration, ValueError):
|
81 |
+
return None
|
82 |
+
|
83 |
+
@classmethod
|
84 |
+
def from_bytes(cls, id: str, metadata: Mapping[str, Any], buffer: bytes) -> Self:
|
85 |
+
web_vtt = WebVTT.from_buffer(BytesIO(buffer))
|
86 |
+
frames = tuple(WebVTTFrame.from_webvtt_caption(caption, index)
|
87 |
+
for index, caption
|
88 |
+
in enumerate(web_vtt.captions, 1))
|
89 |
+
return WebVTTContent(id=id, metadata=MappingProxyType(metadata), start_time=cls.__get_start_time(web_vtt), frames=frames)
|