Search Chains
Note
This is a made up term, I just picked it because I wrote the search functions so they can be chained in a pretty way.
Info
Result := Spotify.Search.For(TYPES).By(KEYWORD [, CRITERIA])
is the basic structure of these searches, and the chained search functions like above return a Spotify.Search.SearchResult
object.
The .For()
function takes a list of types to return, stores them in an object, sets the key By
on the object to Spotify.Search._By
, and returns the object
This allows for us to chain .For().By()
in a nice way, which is also why I call this a chain.
It also reminds me of jQuery's return this
thing, which I like much more than I like jQuery.
.By()
takes a plain query as text for the first parameter, and optional pairs of query criteria keys/values as the second.
Examples
This example will search for the track Homebound
by DROELOE
and play the first found track result
Result := Spotify.Search.For("tracks").By("Homebound", {"artist": "DROELOE"})
Result.Tracks[1].Play()
The criteria {"artist": "DROELOE"}
limits the search to where
Artist.Name ~= "DROELOE"
, and "Homebound"
limits the search to results Anything.Name ~= "Homebound"
An important thing to remember is that you will only get results of the types you specify, so if you don't get any search results for some query, make sure you are searching for the right types
Another example:
Result := Spotify.Search.For("tracks", "albums", "playlists").By("Gamer")
MsgBox, % Result.Tracks[1].Name "`n" Result.Albums[1].Name "`n" Result.Playlists[1].Name
To pass a limit/offset for the search, pass it as a standard criteria, like:
Result := Spotify.Search.For("tracks", "albums", "playlists").By("Gamer", {"limit": 10, "offset": 5})
To include a NOT in your search, pass it like
Result := Spotify.Search.For("tracks", "albums", "playlists").By("Gamer", {"artist": " NOT Whoever"})