Browse Source

Merge pull request #345 from vrih/spotify-liquid-tag

Add liquid tag for Spotify
Justin Mayer 10 years ago
parent
commit
8bf2b991ad
1 changed files with 52 additions and 0 deletions
  1. 52 0
      liquid_tags/spotify.py

+ 52 - 0
liquid_tags/spotify.py

@@ -0,0 +1,52 @@
+"""
+Spotify Tag
+---------
+This implements a Liquid-style spotify tag for Pelican,
+based on the jekyll / octopress youtube tag [1]_
+
+Syntax
+------
+{% spotify id %}
+
+Example
+-------
+{% spotify 1HNZcRFlIKwHAJD3LxvX4d %}
+
+Output
+------
+<iframe src='https://embed.spotify.com/?uri=spotify:track:1HNZcRFlIKwHAJD3LxvX4d' width='300' height='380' frameborder='0' allowtransparency='true'></iframe>
+"""
+import os
+import re
+from .mdx_liquid_tags import LiquidTags
+
+SYNTAX = "{% spotify id %}"
+
+SPOTIFY = re.compile(r'(\w+)(\s+(\d+)\s(\d+))?')
+
+@LiquidTags.register('spotify')
+def spotify(preprocessor, tag, markup):
+    spotify_id = None
+
+    match = SPOTIFY.search(markup)
+    if match:
+        groups = match.groups()
+        spotify_id = groups[0]
+
+    if spotify_id:
+        spotify_out = """
+        <iframe src='https://embed.spotify.com/?uri=spotify:track:{}'
+          width='300'
+          height='380'
+          frameborder='0'
+          allowtransparency='true'></iframe>""".format(spotify_id).strip()
+    else:
+        raise ValueError("Error processing input, "
+                         "expected syntax: {0}".format(SYNTAX))
+
+    return spotify_out
+
+
+#----------------------------------------------------------------------
+# This import allows image tag to be a Pelican plugin
+from liquid_tags import register