Предварительный просмотр песен в Spotify с Applescript - NeedleDrop от Doug
Мы все знаем скрипты Дуга для iTunes. Однако с ростом потоковой музыки я больше не использую iTunes, а скорее Spotify.
Я пытался адаптировать скрипт NeedleDrop для предварительного просмотра песен. Скрипт позволяет установить
a - запуск с заданного времени, например, начало воспроизведения песен через 30 секунд; b - воспроизведение этой песни в течение определенного времени, например, 10 секунд.
Проблема заключается в том, что сценарий запускает первую песню в заданное время и воспроизводит ее в течение заданного времени, но затем следующие песни воспроизводятся в течение заданного времени, но начинаются с начала вместо заданного значения во времени.
Сценарий находится под лицензией GNU Дуга, и лицензия включена. Я публикую сценарий и экспортированное приложение из него. Если у кого есть идея?!
ССЫЛКА: Скачать
Вот сценарий, представленный в файле загрузки:
-- handler to get a number from user
to get_a_number(pmpt, addenda, defnum)
set rez to (display dialog addenda & pmpt default answer defnum buttons {"Cancel ", "OK"} default button 2 with title "Needle Drop")
if button returned of rez starts with "cancel" then tell me to quit
set myNumber to text returned of rez
try
if myNumber is "" then get_a_number(pmpt, "Enter only numbers..." & return & return, defnum)
return (myNumber as integer)
on error -- m number n
get_a_number(pmpt, "Enter only numbers..." & return & return, defnum)
end try
end get_a_number
global start_time -- seconds into each track to begin playing
global needle_drop_interval -- seconds to play each track
on run
-- get number of seconds between songs
set needle_drop_interval to my get_a_number("Play each track for how many seconds?", "", "10")
-- get seconds into each track to play
set start_time to my get_a_number("How many seconds into each track to start playing?", "", "10")
-- play first song in the playlist
tell application "Spotify"
activate
set player position to start_time
play
delay needle_drop_interval
end tell
end run
on idle
tell application "Spotify"
if player state is not playing then tell me to quit
pause
next track
set player position to start_time
play
end tell
return needle_drop_interval
end idle
on quit
try
tell application "Spotify" to stop
end try
continue quit
error number -128
end quit
2 ответа
Удивительно!
Тем не менее, после некоторых песен ошибка все еще случалась иногда, которая, кажется, полностью исправлена добавлением задержки до установленной позиции игрока.
Это может звучать противоречиво, но лучше для меня.
Спасибо!
on idle
tell application "Spotify"
if player state is not playing then tell me to quit
next track
pause
delay 1
set player position to start_time
play
end tell
return needle_drop_interval
end idle
Предоставленный скрипт отлично работает для автономных плейлистов, но не для потоковых. Spotify, вероятно, не имеет времени для буферизации дорожки или чего-то еще.
Когда я добавил задержку, чтобы дать спойтизации время для буферизации, он работал нормально. (Вы можете экспериментировать с более короткими и длинными задержками)
tell application "Spotify"
if player state is not playing then tell me to quit
next track
pause
set player position to start_time
delay 1
play
end tell
Обратите внимание на переключение строк между "следующей дорожкой" и "паузой"