#! /usr/bin/perl my $lastFMUsername = "relevante"; my $domain = "jamesnsears.com"; my $outputFile = "/home/jnsears/jamesnsears.com/lastFM/last.txt"; ### # # mylast.pl, version 1.0 by James N. Sears # http://jamesnsears.com/ # based upon # last.pl, version 1.1 by Adriaan Tijsseling # documented on http://blog.kung-foo.tv/archives/001220.php # ### use XML::Simple; use LWP::UserAgent; use strict; use utf8; my $get_url = "http://ws.audioscrobbler.com/1.0/user/$lastFMUsername/topartists.xml"; my $ua = LWP::UserAgent->new; $ua->agent ('$domain - recent last.fm script'); $ua->timeout(120); my $req = HTTP::Request->new (GET => $get_url); my $res = $ua->request ($req); $res->is_success or die; my $str = $res->content; if ( !$str || $str !~ /<\/artist>/ ) { exit; } open( FILE, ">$outputFile" ); my $parsed_data = XMLin($str, forcearray => 1); my $artists = $parsed_data->{'artist'}; my $minCount = 1000000000; my $maxCount = 0; foreach my $item (@{$artists}) { if($minCount > 0+ ($item->{playcount}->[0])) { $minCount = 0+($item->{playcount}->[0]); } if($maxCount < 0+($item->{playcount}->[0])) { $maxCount = 0+($item->{playcount}->[0]); } } #print("\n\n max = $maxCount -- min = $minCount\n\n"); my $maxFont = 12; my $minFont = 6; if($maxCount == $minCount) { $maxCount = $maxCount + 1; } my $b = ($maxFont - $minFont) / ($maxCount - $minCount); foreach my $item (@{$artists}) { my $playcount = 0 + $item->{playcount}->[0]; my $fontSize = int($b * $playcount + $minFont - ($minCount * $b)); my $name = $item->{'name'}->[0]; $name =~ s/j.*rk/jörk/; my $url = $item->{'url'}->[0]; print FILE "$name "; } close FILE;