Applescript: поиск дорожки в списке воспроизведения по пути к файловой системе - PullRequest
0 голосов
/ 13 декабря 2011

Невозможно выбрать дорожку из списка воспроизведения на основе пути к ее файловой системе (местоположение).Увидеть ниже.

Я ставлю стрелки перед результатом каждой команды.

В первой строке я успешно нахожу первую дорожку из списка воспроизведения "Testing" с жанром "R & B".

Почему не работает четвертая строка?Похоже, что я делаю то же самое, что и в строке 1, только поиск по расположению файловой системы, а не по жанру.

Есть ли другой способ сделать это?

tell application "iTunes"....
  set t to first track of playlist "Testing" whose genre is "R&B"
   --> file track id 18476 of user playlist id 18414 of source id 72 of application "iTunes"

  set l to location of track 1 of playlist "Testing"
   --> alias "Lion:Users:cworth:Desktop:a.mp3"

  set f to POSIX file "/Users/cworth/Desktop/a.mp3" as alias
   --> alias "Lion:Users:cworth:Desktop:a.mp3"

  set tt to first track of playlist "Testing" whose location is f
   --> error "iTunes got an error: A descriptor type mismatch occurred." number -10001 to item
...end tell

1 Ответ

1 голос
/ 28 декабря 2011

Изучил в Applescript и заставил его работать с явным циклом над треками: (см. Ниже)

Возможное объяснение того, почему не работает приведенный выше пример, заключается в том, что «первый трек плейлиста»Тестирование «чье местоположение ...» возвращает список спецификаторов объекта (например, местоположение первой дорожки списка воспроизведения «Тестирование» и т. Д.) Вместо списка фактических местоположений - т.е. отсутствует команда «get», которая возвращаетфактические местоположения, которые вы видите внутри цикла повторения ниже.Это могло бы объяснить несоответствие типа дескриптора, может быть?У меня нет опыта или мотивации в Applescript, чтобы идти дальше, теперь, когда у меня это работает, но я рад, что это так!

tell application "iTunes"
set f to POSIX file "/Users/cworth/Music/04 It's A Man's, Man's, Man's World.mp3"
set a to f as alias
set z to missing value
repeat with tr in tracks of playlist "Testing"
    set ll to get location of tr
    if ll is a then set z to ll
end repeat
end tell
log z
...