AppleScript do wyszukiwania plików według dokładnej nazwy zgodnej ze zmienną Automator

4

Mam przepływ pracy, który pobiera nazwę ścieżki pojedynczej ścieżki w moim odtwarzaczu mp3 i zapisuje ją w zmiennej. Następnie używam tego w akcji Spotlight, aby znaleźć tę ścieżkę w mojej bibliotece iTunes, ale akcja Spotlight daje wiele wyników, gdy chcę tylko, aby dokładna ścieżka nie zawierała wszystkich ścieżek zawierających tę nazwę.

Potrzebuję jakiegoś sposobu lub skryptu, aby zastąpić tę akcję. Wszystkie wyszukiwania dają komendy Terminal, których nie rozumiem lub jak używać z Automatorem.

enter image description here

Oto skrypty jabłkowe, które znalazłem, które działają, ale są naprawdę bardzo powolne, na plażę trafiają w Findera na każdej pętli. Czy istnieje sposób na przyspieszenie tego, moja biblioteka ma ponad 10 000 utworów? dzięki https://www.dropbox.com/s/o14eb19b2459vdo/by%20default%202018-07-19%20at%20Th Thursday%2C%2019%20Jul%20%2017.55.18.PNG?dl=0

user2033505
źródło
1
Prześlij swój przepływ pracy Automatora lub zamieść linki do jego zrzutów ekranu. Musimy zobaczyć, co robisz.
CJK
Wyglądasz na starszego system Mac. Czy twoja wersja Automator mieć iTunes działania, szczególnie zwane Znajdź iTunes Tracks ?
CJK
Cześć przepraszam za późną odpowiedź, tak używam Snow leoparda, ale mam też El Capitana, że ​​akcja iTunes nie używa również zmiennych. Podany przykład nie jest najgorszy, czasami dla danego utworu otrzymam od 6 do 10 wyników, gdy dokładna nazwa utworu powinna dać tylko 1 wynik. Po prostu próbuję utworzyć listę odtwarzania ze wszystkich utworów na moim mp3 odtwarzacz, który w tej chwili jest 218 i wszystkie te utwory znajdują się w mojej bibliotece. Muszę znaleźć tylko ten utwór, którego szukam.
user2033505

Odpowiedzi:

1

Nie mam Pantera śnieżna , więc jestem ograniczony w tym, co mogę przetestować jako opłacalne dla twojego systemu. Dlatego należy pamiętać, że następujące rozwiązanie zostało opracowane i przetestowane przy użyciu:

Informacja o systemie: Wersja AppleScript : „2.7”, wersja systemu : „10.13.5”

Powiedziawszy to, widzę teraz powód, dla którego to nie powinno działać kapitan . To moc pracować nad Pantera śnieżna , ale jestem mniej pewny.

Moim proponowanym rozwiązaniem jest zastąpienie twojego Spotlight Automator akcja za pomocą Run AppleScript akcja:

Automator Workflow

Kod zawarty w Run AppleScript następująco:

    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

Spowoduje to zwrócenie utworów za pomocą dokładny nazwa pliku dostarczona przez trackName zmienna w przepływie pracy. Dlatego ustawiłem trackName w moim teście testowym do "Everywhere I Go" (tj. bez poprzedzającego "04" ), wyszukiwanie zwróciłoby pusty wynik.

Pamiętaj również, że możesz mieć kilka utworów, które mają identyczne nazwy plików z różnych folderów / albumów. Jeśli istnieją dwa pliki w różnych folderach, oba są wywoływane "01 Song.mp3", oba pliki zostaną zwrócone podczas wyszukiwania.

CJK
źródło