Úloha Last.fm

Last.fm je internetová služba, která poskytuje informace o aktuálně poslouchané hudbě, kapelách a koncertech. Pomocí programu Audioscrobbler si v ní registrovaný uživatel generuje statistiky svých poslechů, ke kterým může kromě webového rozhraní přistupovat i přes rozhraní aplikační (API).

Existují dvě verze tohoto API: novější verze 2.0 a původní verze 1.0. Novější verze však požaduje registraci a má složitější rozhraní, proto raději zaměříme na starší. Toto API funguje tak, že po odeslání HTTP požadavku na určitou webovou adresu vrátí XML soubor obsahující požadované informace.

Vaším úkolem bude napsat funkci artist :: String -> Method -> Int -> IO (), která bude vypisovat na standardní výstup informace o kapelách poskytované API Audioscrobbleru. [20 bodů]

První parametr této funkce představuje název kapely, o které chceme něco vědět, druhý určuje, co za informace o kapele chceme vědět, a třetí limituje počet vypsaných položek. Datová struktura Method je vlastně jen obyčejný výčet, jenž je definován takto:

data Method = Similar | Fans | TopTracks | TopAlbums | TopTags

Tyto jednotlivé možnosti ve vztahu ke kapele znamenají: podobné kapely, největší fanoušci, nejpopulárnější písničky, nejpopulárnější alba, nejpopulárnější štítky. Výběr metody ovlivňuje URL, ze kterého se data budou získávat.

Poznámky

Příklady

V komentářích je uvedeno URL, ze kterého se data stahují.

-- http://ws.audioscrobbler.com/1.0/artist/In%20Flames/similar.xml
> artist "In Flames" Similar 5
Soilwork (100%)
Dark Tranquillity (93%)
Children of Bodom (68%)
Sonic Syndicate (60%)
Arch Enemy (59%)
-- http://ws.audioscrobbler.com/1.0/artist/In%20Flames/fans.xml
> artist "In Flames" Fans 3
Chenquie
Noitarovio
FarinDoc
-- http://ws.audioscrobbler.com/1.0/artist/In%20Flames/toptracks.xml
> artist "In Flames" TopTracks 4
Take This Life (50220 plays)
Come Clarity (49691 plays)
Only for the Weak (33293 plays)
Cloud Connected (32665 plays)
-- http://ws.audioscrobbler.com/1.0/artist/In%20Flames/topalbums.xml
> artist "In Flames" TopAlbums 3
Come Clarity
Reroute to Remain
Soundtrack to Your Escape
-- http://ws.audioscrobbler.com/1.0/artist/In%20Flames/toptags.xml
> artist "In Flames" TopTags 6
melodic death metal (100)
metal (36)
death metal (31)
swedish (17)
swedish metal (13)
heavy metal (5)
-- http://ws.audioscrobbler.com/1.0/artist/In%20Fires/toptags.xml
> artist "In Fires" TopTags 3
No artist exists with this name: 'In Fires'

Vypracování úlohy

Řešení úlohy uložte do souboru lastfm.hs a nahrajte do páté odevzdávárny. Nejzazší termín pro vypracování je 8. 5. 2011, 23:59, později již není možné soubor s řešením odevzdat pomocí IS.

← IB016