← Все статьи

StarPlayrX возвращается: нативное приложение для строки меню Mac, каналы Xtra и версия 1.1.1

Сегодня Agent! превратил старый код в нативное SwiftUI-приложение для строки меню Mac, довёл до конца реверс-инжиниринг музыкальных каналов Xtra, которые я так и не добавил, и выпустил подписанную и нотаризованную версию 1.1.1 меньше чем за полдня.

Приложение StarPlayrX в строке меню играет Don't Stop Believin' группы Journey на канале Classic Rewind Top 100, канал 1034, над списком каналов с поиском, где видно, что играет на каждом канале.
StarPlayrX для Mac 1.1.1 играет канал Xtra прямо из строки меню.

Скачать: StarPlayrX для Mac 1.1.1 (подписано и нотаризовано, Apple silicon и Intel, macOS 13 Ventura или новее). Сайт — starplayrx.com, исходники — на GitHub.

Сегодня я попросил Agent! сделать версию для строки меню Mac, и через 2 минуты у него была рабочая версия.

Две минуты, но с форой

Справедливости ради, Agent! начинал не с нуля. Он переиспользовал мою библиотеку, которая общается с SiriusXM напрямую, — StarPlayrRadioKit, Swift-пакет со слоем API и маленьким локальным HLS-сервером для стриминга. Судя по всему, она до сих пор работает.

Так что задача была в новом приложении вокруг старого движка: SwiftUI-приложение для строки меню без иконки в Dock, со списком каналов, информацией о том, что сейчас играет, и паролем в Связке ключей macOS. Первый коммит StarPlayrXMac появился сегодня в 12:45.

100 каналов Xtra, которые я так и не доделал

Каналы Xtra — это дополнительные музыкальные каналы SiriusXM, те, у которых номера от 1000 и выше. Я начинал их реверс-инжиниринг, но так и не собрался добавить их в приложение. Agent! увидел, что я начал, и закончил за ещё несколько минут.

Каналы Xtra ведут себя не так, как обычные, поэтому основная часть итераций пришлась именно на них. Каналы, которые не играли, не показывали, что будет дальше. Обложка альбома сначала мелькала предыдущим альбомом, а потом уже новым. При переключении играла заново выбранная песня, а не та, что была в списке. Каждый такой случай был короткой контрольной точкой: я описывал, что вижу, Agent! исправлял, я пробовал снова.

30 минут UI-тестирования

Потом я примерно 30 минут кликал по приложению и разбирал исправления, в основном внутри его собственных API: полоса прокрутки стояла слишком близко к содержимому, прокрутка дёргалась, пока список не стал загружаться лениво, а каналы Xtra должны были находиться по поиску «xtra» или «music».

Список каналов StarPlayrX в строке меню.
Поиск по каналам, исполнителям и песням. Каждый канал показывает, что на нём играет.

Дольше всего я просто слушал музыку и работал над новым сайтом.

Что нового в 1.1.1

  • Живёт в строке меню (📻), без иконки в Dock
  • Поиск по каналам, исполнителям и песням
  • Показывает, что играет на текущем канале и на каждом канале в списке
  • Каналы Xtra (1000 и выше), находятся по поиску «xtra» или «music»; при переключении играет песня, показанная в списке
  • 1.1.1 исправляет возврат на канал Xtra, так что и в этом случае играет песня, показанная в списке
  • Воспроизведение и пауза с медиаклавиш клавиатуры и из Пункта управления
  • Сетки каналов для США и Канады
  • Сделано с расчётом на VoiceOver
  • Универсальная сборка, подписанная Developer ID и нотаризованная Apple

По-прежнему нужна активная подписка SiriusXM.

Меньше чем за полдня

От первого коммита в 12:45 до коммита 1.1.1 в 15:41 git log охватывает чуть меньше трёх часов. Добавьте релиз, нотаризацию и новый сайт — и всё равно вышло меньше полудня, чтобы принести на Mac нативную версию для Mac. Без Catalyst, с новой функцией и с релизом.

Хотелось бы, чтобы это заметил какой-нибудь основатель, но, думаю, все на планете, кто умеет собрать агента, сейчас делают то же самое. И всё же мне кажется, что мой инструмент очень зрелый, а его CLI-версии догонят.

Единственное, что он не станет реверс-инжинирить

Забавно: теперь я могу реверс-инжинирить почти что угодно, но он не выдаст текст песни «Baby» Джастина Бибера даже в ситуации жизни и смерти. Придётся настроиться на канал и послушать самим.