Поиск применения AppleScript API Spotify

На днях я работал над проектом на Python с участием Spotify, когда наткнулся на следующий сайт: https://developer.spotify.com/applescript-api/. Я пытался зайти на него, но увидел только пустую страницу. Сделав запрос GET, я получил сообщение 301 Moved Permanently, что только усилило мое любопытство. Я никогда не рассматривал возможность того, что приложения могут взаимодействовать друг с другом через AppleScript — вероятно, из-за отсутствия у меня опыта — и хотел узнать больше. После дальнейшего исследования я понял, что, отправляя запросы AppleScript, я могу запрашивать у Spotify информацию о его состоянии.

Какое-то время до этого момента я мечтал о наложении в стиле мультимедиа для Spotify на macOS, очень похожем на то, что можно получить в Windows, или, по крайней мере, об уведомлении, содержащем воспроизводимую в данный момент песню и исполнителя. Сначала я хотел создать что-то похожее на S potify-Notifications CitrusPi, но использовать Shell и AppleScript, а не всегда запускать .app в фоновом режиме. Примерно через полчаса работы над сценарием у меня появилось что-то очень близкое к первоначальной идее:

Единственная проблема с моим первоначальным кодом заключалась в том, что он по-прежнему отображал значок редактора сценариев вместо обложки альбома. Проведя небольшое исследование, я понял, что нет способа изменить значок уведомления AppleScript, потому что команда «отображать уведомление» не имеет свойства «со значком». Откровенно говоря, это был огромный облом, но мне все равно было интересно придумать какой-нибудь способ показывать текущую обложку альбома каждый раз, когда песня меняется. Как ни странно, это действительно можно сделать с помощью диалоговых окон. В AppleScript диалоги с «ОК» и «Отмена» имеют свойство, которое позволяет изменить псевдоним значка на псевдоним другого файла. Как только я узнал об этом, я сразу же принялся за работу системы диалоговых уведомлений.

Чтобы создать диалоговое окно Spotify, я сначала использовал:

id=`osascript -e «сообщить приложению «Spotify» идентификатор текущего трека в виде строки»`

чтобы получить идентификатор песни, а затем подключил его к службе oEmbed Spotify с помощью:

url="$(curl -sX GET "https://embed.spotify.com/oembed\?url\=$id" | cut -d '"' -f 24)";

где я позаботился о том, чтобы отключить индикатор выполнения завитка (-s), а затем я передал его, чтобы вырезать, чтобы получить URI обложки альбома (24-й элемент, когда в качестве разделителя используется двойная кавычка). Наконец, я мог загрузить изображение с помощью:

eval $”curl -o /tmp/icon.icns $url”;

который сохраняет каталог /tmp/. Как только все это закончится, мне нужно будет отобразить диалоговое окно, указав новый псевдоним для пути к значку.

В конечном счете, мне удалось почти создать результат, который я изначально задумал, и в процессе удалось многое узнать об AppleScript. Не буду врать, мне бы очень хотелось, чтобы Apple разрешила вам менять свои значки уведомлений из командной строки, но это не имеет большого значения. Я просто доволен тем, что у меня правильно отображается обложка альбома. Окончательный результат можно увидеть ниже вместе с исправленным кодом.