""" Video Tag --------- This implements a Liquid-style video tag for Pelican, based on the octopress video tag [1]_ Syntax ------ {% video url/to/video [width height] [url/to/poster] %} Example ------- {% video http://site.com/video.mp4 100% 480 http://site.com/poster-frame.jpg %} Output ------ [1] https://github.com/imathis/octopress/blob/master/plugins/video_tag.rb """ import os import re from .mdx_liquid_tags import LiquidTags SYNTAX = "{% video url/to/video [url/to/video] [url/to/video] [width height] [url/to/poster] %}" VIDEO = re.compile(r'(/\S+|https?:\S+)(\s+(/\S+|https?:\S+))?(\s+(/\S+|https?:\S+))?(\s+(\d+\%?)\s(\d+\%?))?(\s+(/\S+|https?:\S+))?') VID_TYPEDICT = {'.mp4':"type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'", '.ogv':"type='video/ogg; codecs=theora, vorbis'", '.webm':"type='video/webm; codecs=vp8, vorbis'"} @LiquidTags.register('video') def video(preprocessor, tag, markup): videos = [] width = None height = None poster = None match = VIDEO.search(markup) if match: groups = match.groups() videos = [g for g in groups[0:6:2] if g] width = groups[6] height = groups[7] poster = groups[9] if any(videos): video_out = """ " else: raise ValueError("Error processing input, " "expected syntax: {0}".format(SYNTAX)) return video_out #---------------------------------------------------------------------- # This import allows image tag to be a Pelican plugin from liquid_tags import register