forked from varia/varia.website
many many many Varia's websites, work in progress: https://many.vvvvvvaria.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
68 lines
1.7 KiB
7 years ago
|
"""
|
||
|
Youtube Tag
|
||
|
---------
|
||
|
This implements a Liquid-style youtube tag for Pelican,
|
||
|
based on the jekyll / octopress youtube tag [1]_
|
||
|
|
||
|
Syntax
|
||
|
------
|
||
|
{% youtube id [width height] %}
|
||
|
|
||
|
Example
|
||
|
-------
|
||
|
{% youtube dQw4w9WgXcQ 640 480 %}
|
||
|
|
||
|
Output
|
||
|
------
|
||
|
|
||
|
<span class="videobox">
|
||
|
<iframe
|
||
|
width="640" height="480" src="https://www.youtube.com/embed/dQw4w9WgXcQ"
|
||
|
frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen>
|
||
|
</iframe>
|
||
|
</span>
|
||
|
|
||
|
[1] https://gist.github.com/jamieowen/2063748
|
||
|
"""
|
||
|
import re
|
||
|
from .mdx_liquid_tags import LiquidTags
|
||
|
|
||
|
SYNTAX = "{% youtube id [width height] %}"
|
||
|
|
||
|
YOUTUBE = re.compile(r'([\S]+)(\s+([\d%]+)\s([\d%]+))?')
|
||
|
|
||
|
|
||
|
@LiquidTags.register('youtube')
|
||
|
def youtube(preprocessor, tag, markup):
|
||
|
width = 640
|
||
|
height = 390
|
||
|
youtube_id = None
|
||
|
|
||
|
match = YOUTUBE.search(markup)
|
||
|
if match:
|
||
|
groups = match.groups()
|
||
|
youtube_id = groups[0]
|
||
|
width = groups[2] or width
|
||
|
height = groups[3] or height
|
||
|
|
||
|
if youtube_id:
|
||
|
youtube_out = """
|
||
|
<span class="videobox">
|
||
|
<iframe width="{width}" height="{height}"
|
||
|
src='https://www.youtube.com/embed/{youtube_id}'
|
||
|
frameborder='0' webkitAllowFullScreen mozallowfullscreen
|
||
|
allowFullScreen>
|
||
|
</iframe>
|
||
|
</span>
|
||
|
""".format(width=width, height=height, youtube_id=youtube_id).strip()
|
||
|
else:
|
||
|
raise ValueError("Error processing input, "
|
||
|
"expected syntax: {0}".format(SYNTAX))
|
||
|
|
||
|
return youtube_out
|
||
|
|
||
|
|
||
|
# ---------------------------------------------------
|
||
|
# This import allows image tag to be a Pelican plugin
|
||
|
from liquid_tags import register # noqa
|