summaryrefslogtreecommitdiffstats
path: root/nikola/plugins/compile_rest/soundcloud.py
diff options
context:
space:
mode:
authorLibravatarAgustin Henze <tin@sluc.org.ar>2013-03-13 20:58:39 -0300
committerLibravatarAgustin Henze <tin@sluc.org.ar>2013-03-13 20:58:39 -0300
commit8b14a1e5b2ca574fdd4fd2377567ec98a110d4b6 (patch)
tree0895935489e4920d18824f7fb3a0d799649a27c3 /nikola/plugins/compile_rest/soundcloud.py
parent878ba1152ebc64a4a2609d23c9e400a6111db642 (diff)
Imported Upstream version 5.4.2upstream/5.4.2
Diffstat (limited to 'nikola/plugins/compile_rest/soundcloud.py')
-rw-r--r--nikola/plugins/compile_rest/soundcloud.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/nikola/plugins/compile_rest/soundcloud.py b/nikola/plugins/compile_rest/soundcloud.py
new file mode 100644
index 0000000..d47bebf
--- /dev/null
+++ b/nikola/plugins/compile_rest/soundcloud.py
@@ -0,0 +1,32 @@
+from docutils import nodes
+from docutils.parsers.rst import directives
+
+CODE = ("""<iframe width="{width}" height="{height}"
+scrolling="no" frameborder="no"
+src="https://w.soundcloud.com/player/?url=http://api.soundcloud.com/tracks/"""
+ """{sid}">
+</iframe>""")
+
+
+def soundcloud(name, args, options, content, lineno,
+ contentOffset, blockText, state, stateMachine):
+ """ Restructured text extension for inserting SoundCloud embedded music """
+ string_vars = {
+ 'sid': content[0],
+ 'width': 600,
+ 'height': 160,
+ 'extra': ''
+ }
+ extra_args = content[1:] # Because content[0] is ID
+ extra_args = [ea.strip().split("=") for ea in extra_args] # key=value
+ extra_args = [ea for ea in extra_args if len(ea) == 2] # drop bad lines
+ extra_args = dict(extra_args)
+ if 'width' in extra_args:
+ string_vars['width'] = extra_args.pop('width')
+ if 'height' in extra_args:
+ string_vars['height'] = extra_args.pop('height')
+
+ return [nodes.raw('', CODE.format(**string_vars), format='html')]
+
+soundcloud.content = True
+directives.register_directive('soundcloud', soundcloud)