Browse Source

add search option for playlist

mahi97 8 years ago
parent
commit
b808555678
1 changed files with 29 additions and 6 deletions
  1. 29 6
      plugins/osx/osx.plugin.zsh

+ 29 - 6
plugins/osx/osx.plugin.zsh

@@ -350,6 +350,29 @@ function spotify() {
           }
           }
 
 
           case $2 in
           case $2 in
+            "list"  )
+              _args=${array[*]:2:$len};
+              Q=$_args;
+
+              cecho "Searching playlists for: $Q";
+
+              results=$( \
+                curl -s -G $SPOTIFY_SEARCH_API --data-urlencode "q=$Q" -d "type=playlist&limit=10&offset=0" -H "Accept: application/json" \
+                | grep -E -o "spotify:user:[a-zA-Z0-9_]+:playlist:[a-zA-Z0-9]+" -m 10 \
+                )
+
+              count=$( \
+                echo "$results" | grep -c "spotify:user" \
+                )
+
+              if [ "$count" -gt 0 ]; then
+                random=$(( RANDOM % count));
+
+                SPOTIFY_PLAY_URI=$( \
+                  echo "$results" | awk -v random="$random" '/spotify:user:[a-zA-Z0-9]+:playlist:[a-zA-Z0-9]+/{i++}i==random{print; exit}' \
+                  )
+              fi;;
+
             "album" | "artist" | "track"    )
             "album" | "artist" | "track"    )
               _args=${array[*]:2:$len};
               _args=${array[*]:2:$len};
               searchAndPlay "$2" "$_args";;
               searchAndPlay "$2" "$_args";;
@@ -367,12 +390,12 @@ function spotify() {
           else
           else
             cecho "No results when searching for $Q";
             cecho "No results when searching for $Q";
           fi
           fi
-      else
-        # play is the only param
-        cecho "Playing Spotify.";
-        osascript -e 'tell application "Spotify" to play';
-      fi
-      break ;;
+        else
+          # play is the only param
+          cecho "Playing Spotify.";
+          osascript -e 'tell application "Spotify" to play';
+        fi
+        break ;;
 
 
       "pause"    )
       "pause"    )
         state=$(osascript -e 'tell application "Spotify" to player state as string');
         state=$(osascript -e 'tell application "Spotify" to player state as string');