[Mac OS X] Автоматизируем загрузку клипов YouTube

Не так давно я описывал способ загрузки клипов с YouTube при помощи окна Активности в Safari. Давайте попробуем автоматизировать этот процесс при помощи AppleScript. В этом случае нам будет достаточно открыть в Safari страницу, содержащую видео и запустить скрипт, который откроет окно Активности, найдет в нем ссылку на файл videoplayback и скопирует ее в окно со списком загрузок, в результате чего файл будет скачан.

pic_0

Есть один нюанс: необходимо, чтобы кнопка списка загрузок была доступна на панели инструментов Safari, для чего достаточно, чтобы этот список не был пустым:

pic_1

Если при запуске скрипта, кнопка списка загрузок не будет доступна (т.е. этот список будет пуст), скрипт предложит выход из ситуации:

pic_2

Еще один нюанс. Скрипт ищет ссылку на файл по имени videoplayback, т.е. работать он будет только для YouTube. Для других подобных сервисов нужно выяснить имя файла и внести изменение во вторую строчку скрипта.

Итак, приступим

Запустите приложение Редактор AppleScript (ПрограммыУтилиты). Затем, в открывшееся окно скопируйте этот текст:

try
set _videoName to "videoplayback"
set _downloadButtonAvailable to true
tell application "Safari" to activate
-- delay 0.5
tell application "Safari" to set _windowName to name of current tab of window 1
tell application "System Events"
tell process "Safari"
try
set _downloadButton to item 1 of (every button whose description = "Загрузки") of tool bar 1 of window _windowName
on error a number b
set _downloadButtonAvailable to false
end try
tell menu item "Активность" of menu "Окно" of menu bar item "Окно" of menu bar 1 to click
try
window "Активность"
on error a number b
tell menu item "Активность" of menu "Окно" of menu bar item "Окно" of menu bar 1 to click
end try
-- delay 0.5
tell outline 1 of scroll area 1 of window "Активность"
set _count to count of rows
try
repeat with i from 1 to _count
tell group 1 of row i
try
try
set _triangleValue to value of UI element 1
if _triangleValue = 1 then
tell UI element 1 to click
-- delay 0.2
end if
tell text field 1 to set _value to value
if _value = _windowName then exit repeat
end try
value of text field 1
on error a number b
exit repeat
end try
end tell
end repeat
end try
set _count to count of rows
repeat with n from 1 to _count
try
tell group 1 of row n
tell text field 1 to set _value to value
if _value = _windowName then
set _row to n
set _triangleValue to value of UI element 1
if _triangleValue = 0 then tell UI element 1 to click
exit repeat
end if
end tell
end try
end repeat
set _count to count of rows
repeat with x from _row to _count
try
tell row x
tell text field 1 to set _value to value
if _value contains _videoName then
set _url to value of text field 1
if _downloadButtonAvailable = false then select
exit repeat
end if
end tell
end try
end repeat
end tell
try
_url
on error a number b
error "Ссылка на '" & _videoName & "' не найдена."
end try
if _downloadButtonAvailable = true then tell menu item "Активность" of menu "Окно" of menu bar item "Окно" of menu bar 1 to click
end tell
end tell
if _downloadButtonAvailable = false then
tell application "Safari"
activate
display dialog "Кнопка 'Показать загрузки' не активна.\n
Найдите в открывшемся окне 'Активность' выделенную строку со ссылкой. Удерживая клавишу Alt, сделайте двойной клик по этой строке для загрузки '" & _videoName & "'." with title "Загрузчик YouTube-видео для Safari"
end tell
else
set the clipboard to _url
-- delay 0.5
tell application "System Events"
tell process "Safari"
try
pop over 1 of _downloadButton
on error a number b
click _downloadButton
end try
set focused of list 1 of scroll area 1 of pop over 1 of _downloadButton to true
end tell
-- delay 0.5
keystroke "v" using command down
end tell
end if
on error a number b
if a does not contain "Пользователь удален." then tell application "Safari" to display dialog a with title "Загрузчик YouTube-видео для Safari"
end try

Нажмите кнопку Компилировать в панели инструментов. Затем нажмите комбинацию клавиш Cmd+S и в диалоге сохранения выберите папку Программы, введите название, например, GetVideo, выберите формат файла – Программа, затем нажмите кнопку Сохранить. Т.е. все действия аналогичны тем, что описаны и показаны на картинках в этой статье.

Для удобства вытащите из папки Программы вашу новую утилиту в Dock.

P.S.

Этот скрипт был найден на одном из англоязычных форумов и адаптирован мной для русской локализации. 🙂

Удачи!