I concur with rapsodie and mj-barton.
morph: Oh, wow, thanks. I started learning this stuff like some week ago, so that's really flattering.
Here's v2:
//// Three star song or 3 star song?
$puts(ratingwords,0)
$if(%_trackinfo_nowplaying%,20bcffNow playing,
ffffffSelected track) 9a9a9amode.$char(10)$char(10)
$if(%_trackinfo_notrack%,
9a9a9aNo track$if(%_trackinfo_nowplaying%, playing).
9a9a9aStatistics unavailable.,
$if($and(%_trackinfo_nowplaying%,$not(%_isplaying%)),
9a9a9aPlayback stopped. ,
$if($or(%artist%,%title%,%album%),
[»$replace(%title%,'(',c2b1a3'(',')',')','[',c2b1a3'[',']',']')«]
[ 9a9a9aby »%artist%«]
$if(%tracknumber%,9a9a9a',' 9a9a9atrack 9a9a9a#
$if($strcmp($left(%tracknumber%,1),0),$right(%tracknumber%,1), %tracknumber%))
[ 9a9a9afrom 9a9a9athe 9a9a9aalbum »
$replace(%album%,'(',c2b1a3'(',')',')','[',c2b1a3'[',']',']')«]
[ 9a9a9areleased 9a9a9ain %date%]
[9a9a9a, 9a9a9aoriginally
' '9a9a9areleased 9a9a9ain %origyear%]9a9a9a.,
Does not contain artist/album info.))
$if($and(%_trackinfo_nowplaying%,$not(%_isplaying%)),,$char(10)$char(10)
//// If rating exists, print it
$if(%rating%,$puts(rword,$select(%rating%,One,Two,Three,Four,Five))
069bff$if($strchr($get(ratingwords),1),$get(rword),%rating%) star song. ,
9a9a9aYou haven''t rated this song yet. $char(10)$char(10))
//// If playcount exists, print in appropriate form
$puts(countstring,$if(%play_counter%,Played
' '$if($strcmp(%play_counter%,1),$puts(p1,1)once,
$if($strcmp(%play_counter%,2),twice,%play_counter% times))9a9a9a,
$if($not(%play_date%),$if(%rating%,$char(10)$char(10))666666Never played))
$if($or(%play_counter%,$not(%play_date%)),$if($get(p1),',', since added.)))
$if($and(%play_counter%,$get(p1)),$char(10)$char(10))$get(countstring)
//// Play date needs to be in DDMMYY format
$if(%play_date%,
$if($get(p1), 9a9a9aon,$char(10)$char(10)9a9a9aLast played)
//// Make day 01 -> 1
$puts(pday,$left(%play_date%,2))
$if($strcmp($left($get(pday),1),0),$puts(pday,$right($get(pday),1)))
//// Make 12th, 23rd, 74th, 1st, 42nd etc
$if($or($strcmp($get(pday),11),$strcmp($get(pday),12),$strcmp($get(pday),13)),$puts(xx,th),
$if($strcmp($right($get(pday),1),1),$puts(xx,st),
$if($strcmp($right($get(pday),1),2),$puts(xx,nd),
$if($strcmp($right($get(pday),1),3),$puts(xx,rd),
$puts(xx,th)))))
//// Name the months
$puts(pmonth,$select($substr(%play_date%,3,4),
January,February,March,April,May,June,July,
August,September,October,November,December))
//// Fix year to tell millennium as well
$puts(pyear,$right(%play_date%,2))
$puts(pyear,$if($greater($get(pyear),80),19,20)$get(pyear))
$puts(ptime,$left(%play_time%,2):$substr(%play_time%,3,4))
//// Print date
' '$get(pmonth) $get(pday)$get(xx) $get(pyear)
$if(%play_time%, 9a9a9aat $get(ptime))9a9a9a.)))
//// Playing a song? then print audioscrobbler status
$if(%_isplaying%,$char(10)$char(10)$if(%_ispaused%,Paused,Playing). $ifgreater(
$muldiv(%_time_elapsed_seconds%,100,%_time_total_seconds%),50,
c2b1a3Audioscrobblered.,9a9a9aNon-audioscrobblered.))
Edit: morph: I also replaced the "since Dec 2004" (that's when I filled up my music library for the first time ) with "since added", and removed it for "once" playcounts so that it could go on the same line as the playdate. I can't remember now but I think I did something else as well. :>
Edit #2: Oh yeah, full name months too, and I think I shortened the code on some spots. Well, as for the rating field you've already mentioned, I also added "You haven't rated this song yet" but maybe you saw that.
Edit #3: I've made updates to the code during the day, so you should copy it again in a few minutes after I've fixed a bug caused by this forum (it won't print out spaces in the beginning or end of a line)... Edit #4: There, all done.