• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

iTunes leidet unter Amnesie

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Ja bitte - würde mich freuen - da brauche ich dann nicht per Hand suchen ;)
Okay... Wie gesagt: Wird im Terminal bedient. Ich gehe davon aus, daß Du die grundlegenden Prinzipien beherrscht. Ansonsten: Nachfragen.

Du mußt einmalig noch Perl passend vorbereiten:
Code:
sudo /System/Library/Perl/Extras/bin/gluemac /Applications/iTunes.app/
Password:
What is the glue name? [iTunes]:
Created and installed App glue for iTunes.app, vX.X (iTunes)
Bei "Password:" Dein Passwort eingeben, bei "What is the glue name? [iTunes]:" einfach Return drücken.

Das war's! Ab nun kann man Mac::Glue in Perl nutzen um iTunes zu steuern.

Dieses Script gibst Du nun in einem Texteditor ein und speicherst es.
Code:
#!/usr/bin/perl

use strict;
use warnings;
use File::Find;

use Mac::Glue ':glue';

my $itunes    = new Mac::Glue 'iTunes';
my $tracks    = $itunes->obj(file_tracks => library_playlist => 1);
my $locations = $tracks->prop('location');

my %tracks;
my $library=0;
foreach my $location ($locations->get) {
   my($basepath, $artist, $album, $title)= ($location=~ m#(.*)/([^/]+)/([^/]+)/([^/]+)$#);
   ++$tracks{$basepath}->{$artist}->{$album}->{$title};
   ++$library;
}
print STDERR $library," files in library\n";


my $disk=0;
find( sub {
   return if /^\./ or -d $_;
   my($basepath, $artist, $album, $title)= ($File::Find::name=~ m#(.*)/([^/]+)/([^/]+)/([^/]+)$#);
   --$tracks{$basepath}->{$artist}->{$album}->{$title};
   ++$disk
},    keys %tracks);
print STDERR $disk," files on disk\n";

my (
   %count,
   %diffs,
);
foreach my $basepath (keys %tracks) {
   my $bp= $tracks{$basepath};
   foreach my $artist (keys %$bp) {
      my $ar= $bp->{$artist};
      foreach my $album (keys %$ar) {
         my $al= $ar->{$album};
         foreach my $tr (sort keys %$al) {
            my $state= $al->{$tr};
            next if $state == 0;
            if ( $state == -1 ) {
               my $lc= lc "$basepath/$artist/$album/$tr";
               --$count{ $lc };
               $diffs{ $lc }= "$basepath/$artist/$album/$tr";
            }
            elsif ( $state == 1 ) {
               my $lc= lc "$basepath/$artist/$album/$tr";
               ++$count{ $lc };
               $diffs{ $lc } ||= "$basepath/$artist/$album/$tr";
            }
            else {
               print $al->{$tr},": $basepath/$artist/$album/$tr\n";
            }
         }
      }
   }
}

my %states= (
   -1 => 'Files with no library entry',
    0 => 'Different upper/lower case',
    1 => 'Missing files',
);

while (my($state, $text)= each %states) {
   $text.="\n";
   foreach my $lc (sort keys %diffs) {
      if ( $count{ $lc } == $state ) {
         print $text, $diffs{ $lc },"\n";
         $text= '';
      }
   }
}

Anschließend machst Du es ausführbar. Ich gehe mal davon aus, daß Du es im Homedirectory als iTunesAnalyze gespeichert hast:
Code:
cd
chmod +x iTunesAnalyze

Um es zu starten und das Ergebnis nach diffs.txt zu bekomme und auch gleichzeitig im Terminal zu sehen, gibst Du ein:
Code:
cd
./iTunesAnalyze | tee diffs.txt
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
[...] naja - vieleicht verursacht das auch bei dir, space, die größendifferenzen.
Danke für die interessante Info!
Nur trifft das in meinem Fall nicht zu...

Es sind auch keine doppelten oder in iTunes nicht richtig gelöschte Files vorhanden...

Ich probiere mal die von Skeeve vorgeschlagene Vorgehensweise aus...

Gruss
 
Zuletzt bearbeitet:

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
Edit:
Hat wunderbar geklappt...
Ich hör mal so langsam auf, dir ständig zu danken Skeeve! :-D
Klasse!

So...
Jetzt muss ich mir noch Gedanken machen, wie es zu dieser Differenz gekommen ist:
Auf die schnelle sehe ich ein paar Titel, die ich mal in iTunes umbenannt habe... desweiteren scheint mir ein Zusammenhang mit den von mir geschilderten Problemen bei den Updates zu bestehen...
Falls mir Erklärungen einfallen, melde ich mich wieder

Gruss


Edit:
Also einen Großteil habe ich wohl doch selbst verbockt, scheint mir...
Nur bei einer Handvoll Titel ist es mir noch unklar, was da passiert ist, doch ich befürchte, dass es auch dafür eine Erklärung gibt
 
Zuletzt bearbeitet: