Merge pull request 'Add support for embedded players' (#64) from BordedDev/snek:feat/support-player into main
Reviewed-on: #64 Reviewed-by: retoor <retoor@noreply@molodetz.nl>
This commit is contained in:
commit
30e8c17000
@ -402,17 +402,17 @@ def embed_url(text):
|
||||
)
|
||||
|
||||
page_image = (
|
||||
get_element_options(head_info, None, "image", "image", "image")
|
||||
or get_element_options(
|
||||
head_info, None, "image:url", "image:url", "image:url"
|
||||
)
|
||||
or get_element_options(
|
||||
get_element_options(
|
||||
head_info,
|
||||
None,
|
||||
"image:secure_url",
|
||||
"image:secure_url",
|
||||
"image:secure_url",
|
||||
)
|
||||
or get_element_options(
|
||||
head_info, None, "image:url", "image:url", "image:url"
|
||||
)
|
||||
or get_element_options(head_info, None, "image", "image", "image")
|
||||
)
|
||||
page_image_height = get_element_options(
|
||||
head_info, None, "image:height", "image:height", "image:height"
|
||||
@ -425,17 +425,17 @@ def embed_url(text):
|
||||
)
|
||||
|
||||
page_video = (
|
||||
get_element_options(head_info, None, "video", "video", "video")
|
||||
or get_element_options(
|
||||
head_info, None, "video:url", "video:url", "video:url"
|
||||
)
|
||||
or get_element_options(
|
||||
get_element_options(
|
||||
head_info,
|
||||
None,
|
||||
"video:secure_url",
|
||||
"video:secure_url",
|
||||
"video:secure_url",
|
||||
)
|
||||
or get_element_options(
|
||||
head_info, None, "video:url", "video:url", "video:url"
|
||||
)
|
||||
or get_element_options(head_info, None, "video", "video", "video")
|
||||
)
|
||||
page_video_height = get_element_options(
|
||||
head_info, None, "video:height", "video:height", "video:height"
|
||||
@ -443,21 +443,28 @@ def embed_url(text):
|
||||
page_video_width = get_element_options(
|
||||
head_info, None, "video:width", "video:width", "video:width"
|
||||
)
|
||||
page_video_type = get_element_options(
|
||||
head_info, None, "video:type", "video:type", "video:type"
|
||||
)
|
||||
|
||||
page_audio = (
|
||||
get_element_options(head_info, None, "audio", "audio", "audio")
|
||||
or get_element_options(
|
||||
head_info, None, "audio:url", "audio:url", "audio:url"
|
||||
)
|
||||
or get_element_options(
|
||||
get_element_options(
|
||||
head_info,
|
||||
None,
|
||||
"audio:secure_url",
|
||||
"audio:secure_url",
|
||||
"audio:secure_url",
|
||||
)
|
||||
or get_element_options(
|
||||
head_info, None, "audio:url", "audio:url", "audio:url"
|
||||
)
|
||||
or get_element_options(head_info, None, "audio", "audio", "audio")
|
||||
)
|
||||
|
||||
page_player = get_element_options(head_info, twitter="player")
|
||||
page_player_width = get_element_options(head_info, twitter="player:width")
|
||||
page_player_height = get_element_options(head_info, twitter="player:height")
|
||||
|
||||
(get_element_options(head_info, twitter="card") or "summary_large_image")
|
||||
|
||||
attachment_base = BeautifulSoup(str(element), "html.parser")
|
||||
@ -470,7 +477,32 @@ def embed_url(text):
|
||||
|
||||
render_element = attachment
|
||||
|
||||
if page_image:
|
||||
if page_player:
|
||||
style = {
|
||||
"width": page_player_width + "px" if page_player_width else None,
|
||||
"height": f"{(page_player_height or '400')}px",
|
||||
}
|
||||
|
||||
style_string = "; ".join(
|
||||
f"{key}: {value}" for key, value in style.items() if value
|
||||
)
|
||||
player_template = f'<iframe src="{page_player}" style="{style_string}" title="{page_name}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>'
|
||||
render_element.append(BeautifulSoup(player_template, "html.parser"))
|
||||
elif page_video:
|
||||
style = {
|
||||
"width": page_video_width + "px" if page_video_width else None,
|
||||
"height": f"{(page_video_height or '400')}px",
|
||||
}
|
||||
|
||||
style_string = "; ".join(
|
||||
f"{key}: {value}" for key, value in style.items() if value
|
||||
)
|
||||
if not page_video_type or page_video_type.startswith("video/"):
|
||||
video_template = f'<video style="{style_string}" controls><source src="{page_video}" type="{page_video_type}">Your browser does not support the video tag.</video>'
|
||||
else:
|
||||
video_template = f'<iframe style="{style_string}" src="{page_video}" title="{page_name}" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>'
|
||||
render_element.append(BeautifulSoup(video_template, "html.parser"))
|
||||
elif page_image:
|
||||
style = {
|
||||
"width": page_image_width + "px" if page_image_width else None,
|
||||
"height": page_image_height + "px" if page_image_height else None,
|
||||
@ -483,18 +515,6 @@ def embed_url(text):
|
||||
image_template = f'<span><img src="{page_image}" alt="{page_image_alt or page_name}" title="{page_name}" width="1" height="1" style="{style_string}" /></span>'
|
||||
render_element.append(BeautifulSoup(image_template, "html.parser"))
|
||||
|
||||
if page_video:
|
||||
style = {
|
||||
"width": page_video_width + "px" if page_video_width else None,
|
||||
"height": page_video_height + "px" if page_video_height else None,
|
||||
}
|
||||
|
||||
style_string = "; ".join(
|
||||
f"{key}: {value}" for key, value in style.items() if value
|
||||
)
|
||||
video_template = f'<video controls style="{style_string}"><source src="{page_video}">Your browser does not support the video tag.</video>'
|
||||
render_element.append(BeautifulSoup(video_template, "html.parser"))
|
||||
|
||||
if page_audio:
|
||||
audio_template = f'<audio controls><source src="{page_audio}">Your browser does not support the audio tag.</audio>'
|
||||
render_element.append(BeautifulSoup(audio_template, "html.parser"))
|
||||
@ -608,4 +628,3 @@ class PythonExtension(Extension):
|
||||
return "".join(to_write)
|
||||
|
||||
return str(fn(caller()))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user