from .utils import XMLNamespace
+VIDEO_PROVIDERS = {
+ 'youtube': {
+ 'url': 'https://www.youtube.com/watch?v=%s',
+ 'embed': '//www.youtube.com/embed/%s?controls=2&rel=0&showinfo=0&theme=light',
+ },
+ 'vimeo': {
+ 'url': 'https://vimeo.com/%s',
+ 'embed': '//player.vimeo.com/video/%s',
+ },
+}
+
+
class UnicodeException(Exception):
def __str__(self):
""" Dirty workaround for Python Unicode handling problems. """
from urllib2 import urlopen
from lxml import etree
-from librarian import OPFNS, NCXNS, XHTMLNS, DCNS, BuildError
+from librarian import OPFNS, NCXNS, XHTMLNS, DCNS, BuildError, VIDEO_PROVIDERS
from librarian import core
from librarian.formats import Format
from librarian.formats.cover.evens import EvensCover
class DivVideoR(Silent):
def render(self, element, ctx):
- src = 'https://www.youtube.com/watch?v=%s' % element.attrib.get('videoid', '')
+ src = VIDEO_PROVIDERS[element.attrib.get('provider')]['url'] % element.attrib.get('videoid', '')
return super(DivVideoR, self).render(element, Context(ctx, src=src))
def container(self, ctx):
from librarian.output import OutputFile
from librarian.renderers import Register, TreeRenderer
from librarian.utils import Context, get_resource
-from librarian import core
+from librarian import core, VIDEO_PROVIDERS
class HtmlFormat(Format):
class DivVideo(NaturalText):
def render(self, element, ctx):
output = super(DivVideo, self).render(element, ctx)
+ provider = element.attrib.get('provider', '')
video_id = element.attrib.get('videoid', '')
attribs = {
'width': '854',
'height': '480',
- 'src': '//www.youtube.com/embed/%s?controls=2&rel=0&showinfo=0&theme=light' % video_id,
+ 'src': VIDEO_PROVIDERS[provider]['embed'] % video_id,
'frameborder': '0',
'allowfullscreen': '',
}
from urllib import urlretrieve
from StringIO import StringIO
from Texml.processor import process
-from librarian import DCNS, XMLNamespace, BuildError
+from librarian import DCNS, XMLNamespace, BuildError, VIDEO_PROVIDERS
from librarian.formats import Format
from librarian.output import OutputFile
from librarian.renderers import Register, TreeRenderer
class VideoRenderer(CmdRenderer):
def render(self, element, ctx):
root = super(VideoRenderer, self).render(element, ctx)
- url = 'https://www.youtube.com/watch?v=%s' % element.attrib.get('videoid')
+ url = VIDEO_PROVIDERS[element.attrib.get('provider')]['url'] % element.attrib.get('videoid', '')
link = texml_cmd('href', url, url)
root[0][0].text = None
root[0][0].append(link)