Applescript - Как выполнить итерации по дорожкам

Я - новичок в applescript. Я пытался узнать об этом из различных источников, таких как сайт Doug, macscripter и этот форум

Только для изучения целей, я пытался распечатать на экране все имена дорожек с помощью этого кода:

tell application "iTunes"
    set myTracks to (tracks of library playlist 1)
    repeat with aTrack in myTracks
        get name of aTrack
    end repeat
end tell

Но это только печатает одно имя дорожки, вероятно, последнее...

Так, как лучший способ состоит в том, чтобы выполнить итерации по списку?

TIA,

Bob

5
задан Bob Rivers 2 May 2010 в 22:45
поделиться

2 ответа

Ваш код в порядке; Причина, по которой кажется, что ничего не происходит, заключается в том, что все, что делает get ... , - это ищет значение и возвращает его. Однако вы ничего не делаете с возвращенным значением, поэтому оно игнорируется, и только последняя итерация цикла что-либо возвращает. Вам нужно сделать что-нибудь (что угодно) внутри цикла, которое будет видно внешнему миру: назначить переменной, отобразить диалог, что угодно.

Если вы хотите собрать список названий предметов, вы можете сделать следующее:

tell application "iTunes"
  set trackNames to {}
  repeat with aTrack in tracks of library playlist 1
    set trackNames to trackNames & name of aTrack
  end repeat
end tell

Однако вы можете это сделать. Одной из мощных функций AppleScript является то, что так же, как вы можете получить имя трека, вы можете получить имя каждого трека в списке и перебирать его:

tell application "iTunes"
  set trackNames to {}
  repeat with aName in name of tracks of library playlist 1
    set trackNames to trackNames & aName
  end repeat
end tell

Но на этом этапе вам даже не нужен цикл , и вы можете использовать гораздо более простой вариант

tell application "iTunes" to name of tracks of library playlist 1

. И в качестве бонуса он будет намного быстрее: в моем быстром тесте три версии заняли 16,189 секунды, 32,656 секунды и 0,296 секунды соответственно.

13
ответ дан 18 December 2019 в 09:48
поделиться

Думаю, ваш ответ верен. Я считаю, что результат в столбце редактора сценария Apple печатает только последний результат вашего сценария. Если вы посмотрите «Событие» и ответите на него, вы увидите, что ответы правильно возвращаются вашим сценарием.

Я попробовал себя, используя этот скрипт:

tell application "iTunes"
set myTracks to (tracks of library playlist 1)

repeat with i from 1 to number of items in myTracks
    get name of item i of myTracks
end repeat

Я вижу, что в ответах:

  • получить имя файла с идентификатором дорожки 4050 из библиотечного плейлиста с идентификатором 3379 идентификатора источника 41

     -> "Le deserteur" 
     
  • получить имя файла с идентификатором 4051 дорожки с идентификатором 3379 плейлиста библиотеки с идентификатором источника 41

     -> "Le lyon est mort ce soir" 
     

ТАКЖЕ, просто чтобы убедиться, что это работает, вы можете попробовать следующее:

 tell application "iTunes"
    set myTracks to (tracks of library playlist 1)

    repeat with i from 1 to number of items in myTracks
        display dialog name of item i of myTracks as string
    end repeat

end tell

Итак, это работает, вам нужно только сделать то, что вы хотите сделать, прежде чем конец вашего цикла.

Также я бы порекомендовал официальную документацию Apple: Руководство по языку AppleScript. Бесплатно и очень полно для начала.

Надеюсь, это поможет!

4
ответ дан 18 December 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: