Dart program pro export vsech last.fm scrobblu na danem profilu



Jsem si naprogramoval maly Dart web, ve kterem je pouze 1 dart soubor(tedy nejmensi z nejmensich), ktery mi pomoci last.fm API ziska vsechny prehrane pisne z me knihovny pomoci teto metody Last.fm API: http://www.last.fm/api/show/library.getTracks . A naucil jsem se spoustu novych veci v Dartu. Puvodne jsem to chtel napsat v PHP, ale tam byl zasadni problem – chybejici trida HttpRequest. Jiste, je nekolik takovych trid v ext. baliccich, ale ty se mi do VS nepodarilo importovat a to jsem se je pokousel i zkompilovat pro Windows, kdyz jejich Windows verze nebyla k dispozici.

Jeste ze jsem se zase nepokousel naisntalovat Linux :/. Ted uz to konecne funguje bezchybne. Tento program jsem si napsal, protoze na mail s exportem od last.fm cekam uz 5. den a do 7 dni by mi jej meli poslat, ale uz ani neverim. Navic ten cizi python skript byl chybovy a pomaly, protoze nepracoval s API ale parsoval webove stranky. Takze to je dalsi plus meho programu – kdyz last.fm premisti/zmeni/prejmenuje nektere html prvky, tak cizi program prestane fungovat.

Sance ze se zmeni API je podle me mensi nez ze se zmeni visual stranky. Program stahuje data v XML a generuje taky XML, coz je taky vyhoda, protoze ten python skript generoval obycejny textovy soubor. Jak vidite v obrazcich, na webu jsem mel nascrobblovano 72806 pisni ale program jich nastahoval “jen” 72756. Pokud mate v knihovne nejakeho interpreta/nazev/album/atd. ktere obsahuje znaky jako < , > a dalsi XML, tak programu se to nepodari vyparsovat a cely chunk zahodi.

Chunk je seznam songu z last.fm library o dane velikosti, kterou si urcite vy. Minimalni velikost je logicky asi 1, maximalni pak cca 1000. To nejsou me limity, stavalo se mi ze pri velikosti chunku nad 1000 program havaroval s Http Errorem 500 – Internal Server Error. Vratim se zpet – je lepsi chunky volit nizsi(20-50) – program se bude vykonavat dele, i podstatne dele, ale zase pokud narazi na chybu v XML, zahodi mensi cast songu. Dart skript uverejnim, jen co ho uzivatelsky priblizim. Zatim nikde nic nezadavam do formularu, protoze vsechno mam v kodu. Jeste nevim zda pripadni zajemci si budou muset zadavat i svuj API Key a Secret, nebo zda to nejak zahashuji do sveho programu.

Program pracuje takto: 1)Last.fm se vas zepta zda duverujete aplikaci a po potvrzeni se vam stranka sekne na last.fm. To je standardni chovani. FF se vas zepta co chcete provest s tim ze stranka nereaguje, ale muzete zaskrtnout “toto jiz vice nezobrazovat” a kliknout na pockat. V Chrome a Opere zadne okno o unrespobility skriptu nevyskakuje. V IE skript nefunguje vubec, asi strategie googlu “implementujte dart VM do IE jinak weby zkompilovane z dartu v IE fungovat nebudou”.

2)Spustite si developer console, ve chromu se spousti treba ctrl+shift+i. Budete mit informace o tom u jakeho chunku program je a o chybach.

3)Program vypise vsechny vase scrobbly, serazene podle poctu prehrani sestupne v XML do okna weboveho prohlizece, kde vyberete vse(ctrl+a) a vlozite kam chcete.  

A nyni jdu nukeovat celou mou hudebni knihovnu a zacnu pekne od znovu, bez Gigiho ;). Webova aplikace je na www.sunamo.cz a zdrojove kody si pak muzete precist na github.com .

Leave a Reply

Your email address will not be published. Required fields are marked *