def run(self): embed_style = None if self.arguments: embed_style = self.arguments else: q = dedent("""\ PREFIX dc:<http://purl.org/dc/elements/1.1/> PREFIX aa:<http://activearchives.org/terms/> PREFIX http:<http://www.w3.org/Protocols/rfc2616/> PREFIX media:<http://search.yahoo.com/mrss/> SELECT ?ctype ?format ?audiocodec ?videocodec WHERE {{ OPTIONAL {{ <%(URL)s> http:content_type ?ctype . }} OPTIONAL {{ <%(URL)s> dc:format ?format . }} OPTIONAL {{ <%(URL)s> media:audio_codec ?audiocodec . }} OPTIONAL {{ <%(URL)s> media:video_codec ?videocodec . }} }}""".strip() % {'URL': self.stdin['original_url']}) b = {} for row in rdfutils.query(q, RDF_MODEL): for name in row: b[name] = rdfutils.rdfnode(row.get(name)) break # TODO: move to templates if b.get('ctype') in ("image/jpeg", "image/png", "image/gif"): embed_style = "img" elif b.get('ctype') in ("video/ogg", "video/webm") or (b.get('videocodec') in ("theora", "vp8")): embed_style = "html5video" elif b.get('ctype') in ("audio/ogg", ) or (b.get('audiocodec') == "vorbis" and (not b.get('videocodec'))): embed_style = "html5audio" elif b.get('ctype') in ("text/html", ): embed_style = "iframe" elif b.get('ctype') in ("application/rss+xml", "text/xml", "application/atom+xml"): embed_style = "feed" else: embed_style = None # TODO: move to templates if embed_style == "img": self.stdout['output'] = '<img src="%s" />' % self.stdin['original_url'] elif embed_style == "html5video": #self.stdout['output'] = '<video class="player" controls src="%s" />' % self.stdin['local_url'] # Temporarily fixes the local serveur serving ogg with the wronf mimetype self.stdout['output'] = '<video class="player" controls src="%s" />' % self.stdin['original_url'] elif embed_style == "html5audio": #self.stdout['output'] = '<audio class="player" controls src="%s" />' % self.stdin['local_url'] # Temporarily fixes the local serveur serving ogg with the wronf mimetype self.stdout['output'] = '<audio class="player" controls src="%s" />' % self.stdin['original_url'] elif embed_style == "iframe": self.stdout['output'] = '<iframe src="%s"></iframe>' % self.stdin['local_url'] elif embed_style == "feed": feed = feedparser.parse(self.stdin['local_url']) self.stdout['output'] = u'' for entry in feed['entries'][:4]: self.stdout['output'] += u'<div>' self.stdout['output'] += u'<h3><a href="%s">%s</a></h3>' % (entry.link, entry.title) self.stdout['output'] += u'<div>' self.stdout['output'] += entry.summary self.stdout['output'] += u'</div>' self.stdout['output'] += u'</div>' else: self.stdout['output'] = "<p>Unable to detect embed type</p>"
def rdfnode (node): return rdfutils.rdfnode(node)