diff options
Diffstat (limited to 'nikola/plugins/compile_rest/soundcloud.py')
| -rw-r--r-- | nikola/plugins/compile_rest/soundcloud.py | 32 |
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) |
