Merge pull request 'Add support for embedded players' (#64) from BordedDev/snek:feat/support-player into main
Reviewed-on: retoor/snek#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 = ( |             page_image = ( | ||||||
|                 get_element_options(head_info, None, "image", "image", "image") |                 get_element_options( | ||||||
|                 or get_element_options( |  | ||||||
|                     head_info, None, "image:url", "image:url", "image:url" |  | ||||||
|                 ) |  | ||||||
|                 or get_element_options( |  | ||||||
|                     head_info, |                     head_info, | ||||||
|                     None, |                     None, | ||||||
|                     "image:secure_url", |                     "image:secure_url", | ||||||
|                     "image:secure_url", |                     "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( |             page_image_height = get_element_options( | ||||||
|                 head_info, None, "image:height", "image:height", "image:height" |                 head_info, None, "image:height", "image:height", "image:height" | ||||||
| @ -425,17 +425,17 @@ def embed_url(text): | |||||||
|             ) |             ) | ||||||
| 
 | 
 | ||||||
|             page_video = ( |             page_video = ( | ||||||
|                 get_element_options(head_info, None, "video", "video", "video") |                 get_element_options( | ||||||
|                 or get_element_options( |  | ||||||
|                     head_info, None, "video:url", "video:url", "video:url" |  | ||||||
|                 ) |  | ||||||
|                 or get_element_options( |  | ||||||
|                     head_info, |                     head_info, | ||||||
|                     None, |                     None, | ||||||
|                     "video:secure_url", |                     "video:secure_url", | ||||||
|                     "video:secure_url", |                     "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( |             page_video_height = get_element_options( | ||||||
|                 head_info, None, "video:height", "video:height", "video:height" |                 head_info, None, "video:height", "video:height", "video:height" | ||||||
| @ -443,21 +443,28 @@ def embed_url(text): | |||||||
|             page_video_width = get_element_options( |             page_video_width = get_element_options( | ||||||
|                 head_info, None, "video:width", "video:width", "video:width" |                 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 = ( |             page_audio = ( | ||||||
|                 get_element_options(head_info, None, "audio", "audio", "audio") |                 get_element_options( | ||||||
|                 or get_element_options( |  | ||||||
|                     head_info, None, "audio:url", "audio:url", "audio:url" |  | ||||||
|                 ) |  | ||||||
|                 or get_element_options( |  | ||||||
|                     head_info, |                     head_info, | ||||||
|                     None, |                     None, | ||||||
|                     "audio:secure_url", |                     "audio:secure_url", | ||||||
|                     "audio:secure_url", |                     "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") |             (get_element_options(head_info, twitter="card") or "summary_large_image") | ||||||
| 
 | 
 | ||||||
|             attachment_base = BeautifulSoup(str(element), "html.parser") |             attachment_base = BeautifulSoup(str(element), "html.parser") | ||||||
| @ -470,7 +477,32 @@ def embed_url(text): | |||||||
| 
 | 
 | ||||||
|             render_element = attachment |             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 = { |                 style = { | ||||||
|                     "width": page_image_width + "px" if page_image_width else None, |                     "width": page_image_width + "px" if page_image_width else None, | ||||||
|                     "height": page_image_height + "px" if page_image_height 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>' |                 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")) |                 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: |             if page_audio: | ||||||
|                 audio_template = f'<audio controls><source src="{page_audio}">Your browser does not support the audio tag.</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")) |                 render_element.append(BeautifulSoup(audio_template, "html.parser")) | ||||||
| @ -608,4 +628,3 @@ class PythonExtension(Extension): | |||||||
|             return "".join(to_write) |             return "".join(to_write) | ||||||
| 
 | 
 | ||||||
|         return str(fn(caller())) |         return str(fn(caller())) | ||||||
| 
 |  | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user