#!/usr/bin/perl -w use strict; $|++; use Mac::Glue; use XML::LibXML; my $itunehandle = Mac::Glue->new("iTunes"); chdir or die $!; chdir "irate" or die $!; my $x = XML::LibXML->new or die; my $d = $x->parse_file("trackdatabase.xml") or die; for my $track ($d->findnodes(q{//Track[@rating and @file != ""]})) { my $file = $track->findvalue('@file'); next unless -s $file; my $rating = $track->findvalue('@rating'); my $irating = ($rating >= 10) ? 100 : ($rating >= 7) ? 80 : ($rating >= 5) ? 60 : ($rating >= 2) ? 40 : 0; if ($irating) { print "adding with $irating for $file\n"; my $s = $itunehandle->add($file); $s->prop("rating")->set(to => $irating); } else { print "tossing $file\n"; } ## next part is to fool it from downloading again open F, ">$file" or warn "Cannot create $file: $!"; close F; };