Added initial support for html <video> elements, including for their poster tag.

Signed-off-by: Bert Livens <bert@bertlivens.be>
This commit is contained in:
Bert Livens 2023-12-19 21:59:49 +01:00 committed by Ploum
parent 1ed8ba749e
commit 426161e35d
2 changed files with 47 additions and 0 deletions

View File

@ -4,6 +4,7 @@
## 2.2 - Unpublished
- netcache : solve an infinite gemini loop with code 6X (see also bug #31)
- ansicat: added support for <video> HTML-element
## 2.1 - December 15th 2023
- freshly updated gemtext/rss links are highlighted ("new_link" theme option)

View File

@ -1196,6 +1196,52 @@ class HtmlRenderer(AbstractRenderer):
r.add_text(text + link_id)
r.close_theme("image_link")
r.newline()
elif element.name == "video":
poster = element.get("poster")
src = element.get("src")
for child in element.children:
if not src:
if child.name == "source":
src = child.get("src")
text = ""
if poster:
ansi_img = render_image(poster,width=width,mode=mode)
alt = element.get("alt")
if alt:
alt = sanitize_string(alt)
text += "[VIDEO] %s"%alt
else:
text += "[VIDEO]"
if poster:
if not mode in self.images:
self.images[mode] = []
poster_url,d = looks_like_base64(poster,self.url)
if poster_url:
vid_url,d2 = looks_like_base64(src,self.url)
self.images[mode].append(poster_url)
r.add_block(ansi_img)
r.open_theme("image_link")
r.center_line()
if vid_url and src:
links.append(vid_url+" "+text)
link_id = " [%s]"%(len(links)+startlinks)
r.add_text(text + link_id)
else:
r.add_text(text)
r.close_theme("image_link")
r.newline()
elif src:
vid_url,d = looks_like_base64(src,self.url)
links.append(vid_url+" "+text)
link_id = " [%s]"%(len(links)+startlinks)
r.open_theme("image_link")
r.center_line()
r.add_text(text + link_id)
r.close_theme("image_link")
r.newline()
elif element.name == "br":
r.newline()
elif element.name not in ["script","style","template"] and type(element) != Comment: