This package is a near-complete implementation of Rdio's API in Haskell.
cabal install rdioh
First you need a key and a secret. You can get both here.
Then usage is simple:
main = do
result <- runRdio key secret $ getTopChartAlbums
case result of
Left err -> putStrLn err
Right albums -> mapM_ (putStrLn . albumName) albums
Everything runs in the Rdio
Monad, which is just the ReaderT
monad.
runRdio
is for methods that don't require user authentication. Use runRdioWithAuth
for methods that require user authentication, like createPlaylist
. If you use runRdioWithAuth
, your user will see a message like so:
open https://www.rdio.com/oauth/authorize?oauth_token=asdaslkjfsd
oauth_verifier:
To complete authentication, he / she will have to open the url, hit 'Allow', and paste the given PIN back into your application.
List all albums for Radiohead:
import Rdioh
import Rdioh.Models
import Control.Monad.IO.Class
main = do
runRdio key secret $ do
res1 <- search "Radiohead" "Artist" :: Rdio (Either String [Artist])
case res1 of
Left err -> liftIO $ putStrLn err
Right (radiohead:_) -> do
res2 <- getAlbumsForArtist (artistKey radiohead)
case res2 of
Left err -> liftIO $ putStrLn err
Right albums -> liftIO $ mapM_ (putStrLn . albumName) albums
See spec/Main.hs
for an example on each method.