RDIO API wrapper in Haskell

View the Project on GitHub egonSchiele/rdioh



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

To complete authentication, he / she will have to open the url, hit 'Allow', and paste the given PIN back into your application.

Longer Example

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.