Dart program pro export všech last.fm scrobblů na daném profilu



Jsem si naprogramoval malý Dart web, ve kterém je pouze 1 dart soubor(tedy nejmenší z nejmenších), který mi pomocí last.fm API získá všechny přehrané písně z mé knihovny pomocí této metody Last.fm API: http://www.last.fm/api/show/library.getTracks . A naučil jsem se spoustu nových věcí v Dartu. Původně jsem to chtěl napsat v PHP, ale tam byl zásadní problém – chybějící třída HttpRequest. Jistě, je několik takových tříd v ext. balíčcích, ale ty se mi do VS nepodařilo importovat a to jsem se je pokoušel i zkompilovat pro Windows, když jejich Windows verze nebyla k dispozici.

Ještě že jsem se zase nepokoušel nainstalovat Linux :/. Teď už to konečně funguje bezchybně. Tento program jsem si napsal, protože na mail s exportem od last.fm čekám už 5. den a do 7 dní by mi jej měli poslat, ale už ani nevěřím. Navíc ten cizí python skript byl chybový a pomalý, protože nepracoval s API ale parsoval webové stránky. Takže to je další plus mého programu – když last.fm přemístí/změní/přejmenuje některé html prvky, tak cizí program přestane fungovat.

Šance že se změní API je podle mě menší než že se změní visual stránky. Program stahuje data v XML a generuje taky XML, což je taky výhoda, protože ten python skript generoval obyčejný textový soubor. Jak vidíte v obrázcích, na webu jsem měl nascrobblováno 72806 písní ale program jich nastahoval “jen” 72756. Pokud máte v knihovně nějakého interpreta/název/album/atd. které obsahuje znaky jako < , > a další XML, tak programu se to nepodaří vyparsovat a celý chunk zahodí.

Chunk je seznam songů z last.fm library o dané velikosti, kterou si určíte vy. Minimální velikost je logicky asi 1, maximální pak cca 1000. To nejsou mé limity, stávalo se mi že při velikosti chunku nad 1000 program havaroval s Http Errorem 500 – Internal Server Error. Vrátím se zpět – je lepší chunky volit nižší(20-50) – program se bude vykonávat déle, i podstatně déle, ale zase pokud narazí na chybu v XML, zahodí menší část songů. Dart skript uveřejním, jen co ho uživatelsky přiblížím. Zatím nikde nic nezadávám do formulářů, protože všechno mám v kódu. Ještě nevím zda případní zájemci si budou muset zadávat i svůj API Key a Secret, nebo zda to nějak zahashuji do svého programu.

Program pracuje takto: 1)Last.fm se vás zeptá zda důvěřujete aplikaci a po potvrzení se vám stránka sekne na last.fm. To je standardní chování. FF se vás zeptá co chcete provést s tím že stránka nereaguje, ale můžete zaškrtnout “toto již více nezobrazovat” a kliknout na počkat. V Chrome a Opeře žádné okno o unrespobility skriptu nevyskakuje. V IE skript nefunguje vůbec, asi strategie googlu “implementujte dart VM do IE jinak weby zkompilované z dartu v IE fungovat nebudou”.

2)Spusťte si developer console, ve chromu se spouští třeba ctrl+shift+i. Budete mít informace o tom u jakého chunku program je a o chybách.

3)Program vypíše všechny vaše scrobbly, seřazené podle počtu přehrání sestupně v XML do okna webového prohlížeče, kde vyberete vše(ctrl+a) a vložíte kam chcete.  

A nyní jdu nukeovat celou mou hudební knihovnu a začnu pěkně od znovu, bez Gigiho ;). Webová aplikace je na www.sunamo.cz a zdrojové kódy si pak můžete přečíst na github.com .

Leave a Reply

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