iTunes has a tendency to retain entries in the library to nonexistent files. Here is a little script to tell you which entries in your library are orphans (similar to the duplicate script I posted earlier, but a bit simpler, and on one line because that is how I did it). It optionally deletes them.
perl -MMac::Glue -le '$d = 0; $i = new Mac::Glue "iTunes"; for $t ($i->obj(tracks => library_playlist => 1)->get) { if ($t->prop("location")->get eq "msng") { print join " - ", map { $t->prop($_)->get } qw(name artist album); $t->delete if $d }}'
OK, here it is more readable:
use Mac::Glue;
$d = 0;
$i = new Mac::Glue "iTunes";
for $t ($i->obj(tracks => library_playlist => 1)->get) {
if ($t->prop("location")->get eq "msng") { # 'missing value'
print join " - ", map { $t->prop($_)->get } qw(name artist album);
$t->delete if $d
}
}
It found three tracks off Primus' Sailing the Seas of Cheese album were disappeared. The files are not there. I have no idea why.
Now Playing: Tommy The Cat - Primus (Sailing The Seas Of Cheese)
sweet (Score:1)
Re:sweet (Score:1)
[mogu:~] rex% perl -MMac::Glue -le '$d = 0; $i = new Mac::Glue "iTunes"; for $t ($i->obj(tracks => library_playlist => 1)->get) { if ($t->prop("location")->get eq "msng") { print join " - ", map { $t->prop($_)->get } qw(name artist album); $t->delete if $d }}'
No application glue for 'iTunes' found in '/Library/Perl/Mac/Glue/glues' at -e line 1
[mogu:~] rex%
Re:sweet (Score:2)
You may need to use sudo, or otherwise run as root, as the glue is by default saved into your perl's sitelib path.
That will create the necessary glue for whatever app you wish to script with Mac::Glue. Use gluedoc iTunes to read the documentation for that created glue file.
Also, <ECODE> tags are the way to do code on use.perl.org (and many other Slash sites, like Slashdot).
* The docs are s
Re:sweet (Score:1)