AppleScript zum Suchen von Dateien nach exakter Namensübereinstimmung aus einer Automator-Variablen

Ich habe einen Workflow, der den Titelnamen eines einzelnen Titels in meinem MP3-Player abruft und in einer Variablen speichert. Ich verwende dies dann in der Spotlight-Aktion, um diesen Titel in meiner iTunes-Mediathek zu finden, aber die Spotlight-Aktion liefert mehrere Ergebnisse, wenn ich nur den genauen Titel haben möchte, nicht alle Titel, die den Namen enthalten.

Ich brauche einen Weg oder ein Skript, um diese Aktion zu ersetzen. Alle Suchen geben Terminal-Befehle aus, die ich nicht verstehe oder die ich nicht mit Automator verwenden kann.

Geben Sie hier die Bildbeschreibung ein

Hier ist ein Applescript, das ich gefunden habe, das funktioniert, aber wirklich sehr langsam ist, es bringt den Finder bei jeder Schleife zum Strandball. Gibt es eine Möglichkeit, dies zu beschleunigen, meine Bibliothek hat über 10.000 Titel? danke https://www.dropbox.com/s/o14eb19b2459vdo/by%20default%202018-07-19%20at%20Thursday%2C%2019%20Jul%20%2017.55.18.PNG?dl=0

Bitte laden Sie Ihren Automator-Workflow hoch oder posten Sie Links zu Screenshots davon. Wir müssen sehen, was Sie tun.
Sie sehen aus, als würden Sie ein älteres Mac-System verwenden. Verfügt Ihre Version von Automator über iTunes- Aktionen, insbesondere eine namens „Find iTunes Tracks“ ?
Hallo, entschuldigen Sie die späte Antwort, ja, ich verwende Snow Leopard, aber ich habe auch El Capitan, diese iTunes-Aktion verwendet auch keine Variablen. Das angegebene Beispiel ist nicht das schlechteste, manchmal erhalte ich für einen bestimmten Titel 6 bis 10 Ergebnisse, wenn der genaue Name des Titels nur 1 Ergebnis liefern sollte. Ich versuche einfach, eine Wiedergabeliste aus allen Titeln auf meinem mp3 zu erstellen Player, der im Moment 218 ist, und all diese Tracks sind in meiner Bibliothek. Ich muss nur die Spur finden, die ich suche.

Antworten (1)

Ich habe kein Snow Leopard , daher kann ich nur eingeschränkt testen, ob es für Ihr System geeignet ist. Bitte beachten Sie daher, dass die folgende Lösung entwickelt und getestet wurde:

Systeminfo: AppleScript-Version : „2.7“, Systemversion : „10.13.5“

Nachdem dies gesagt wurde, sehe ich jetzt Grund, dass dies bei El Capitan nicht funktionieren sollte . Es könnte auf Snow Leopard funktionieren , aber ich bin mir weniger sicher.

Meine vorgeschlagene Lösung besteht darin, Ihre Automator- Aktion durch eine Aktion zu ersetzen :Spotlight Run AppleScript

Automator-Workflow

Der darin enthaltene Code Run AppleScriptlautet wie folgt:

    use framework "Foundation"
    
    property ca : a reference to current application
    
    
    on run {input, parameters}
        set MusicFolder to "/Volumes/Media/Music/iTunes/iTunes Music/Music/"
        
        set FileManager to ca's NSFileManager's defaultManager()
        set MusicFiles to (FileManager's subpathsAtPath:MusicFolder)'s ¬
            pathsMatchingExtensions:{"mp3", "m4a"}
        set [filename] to input
        set format to "SELF endswith " & ("/" & filename & ".mp3")'s quoted form & ¬
            " OR SELF endswith " & ("/" & filename & ".m4a")'s quoted form
        set filter to ca's NSPredicate's predicateWithFormat:format
        
        set matches to {}
        
        repeat with match in (MusicFiles's filteredArrayUsingPredicate:filter) #'
            set end of matches to POSIX file (MusicFolder & match as text) as alias
        end repeat
        
        return matches
    end run

Dadurch werden Tracks mit dem genauen Dateinamen zurückgegeben, der von der trackNameVariablen im Workflow bereitgestellt wird. Hätte ich also trackNamein meinem Testlauf auf "Everywhere I Go"(dh ohne das vorangestellte "04") gesetzt, hätte die Suche ein leeres Ergebnis zurückgegeben.

Denken Sie auch daran, dass Sie möglicherweise einige Titel mit identischen Dateinamen aus verschiedenen Ordnern/Alben haben. Wenn es zwei Dateien in verschiedenen Ordnern gibt, die beide den Namen haben "01 Song.mp3", werden beide Dateien bei der Suche zurückgegeben.