Лайфхакер
Лайфхакер
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Выгодные покупки
Новости
Здоровье
Спорт и фитнес
Покупки
Технологии
Отношения
Кино
Реклама
МакрадарТехнологии
3 февраля 2014

Automator: Извлечение иконки программы из App Store

Фото автора Alexander Zhurovich
Alexander Zhurovich

Automator: Извлечение иконки программы из App Store

Вместо искусственных примеров использования средств автоматизации на Маке, вот вам реальная программная служба, которой пользуются некоторые авторы «МакРадара», в частности, при подготовке картинок для обзоров приложений. Благодаря этой службе загрузка иконки любого приложения, доступного в App Store или Mac App Store, становится удобной и быстрой.

Для примера возьмем iOS-программу «Купи батон». Что раньше редакторы делали вручную… Сначала в браузере открывалась страница программы в App Store, и из адреса этой страницы копировался 9‑циферный идентификатор (у каждой программы он свой), который затем подставлялся в адрес http://itunes.apple.com/lookup?id=. Например, если адрес страницы «Купи батон» в App Store — https://itunes.apple.com/ru/app/id725418306 (код программы выделен жирным), то редактор посредством «копи-паста» загружает в окно браузера страницу http://itunes.apple.com/lookup?id=725418306.

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

Даже если сохранить весь этот порядок действий — зачем его выполнять вручную, если можно автоматизировать? Призовем на помощь Automator!

Сначала составим алгоритм

Изложенная выше последовательность действий очень простая, но к «ехать» хочется еще добавить немного «шашечек»: исключительно для пользовательского удобства дополним нашу последовательность еще парой шагов:

  1. Из адреса загруженной страницы App Store извлекаем и запоминаем идентификатор программы.
  2. Запускаем в браузере серверный сценарий itunes.apple.com/lookup, передаем ему код программы из шага 1, и запоминаем полученный поток текстовых данных.
  3. В полученном на шаге 2 потоке данных по ключу trackName ищем название программы и запоминаем его.
  4. В полученном на шаге 2 потоке данных по ключу artworkUrl512 ищем адрес иконки и запоминаем его.
  5. Берем адрес иконки, полученный на шаге 4, и по нему загружаем картинку на рабочий стол.
  6. Загруженный файл-картинку переименовываем по названию программы, полученному на шаге 3.
  7. …
  8. PROFIT.

Теперь строим службу

Приступим к сборке нашего алгоритма в «Автоматоре». Создайте новый процесс типа Служба, и в заголовке области создания программы выберите: в первом выпадающем списке значение <нет входных данных>, а во втором списке выберите программу Safari (увы, другие браузеры Automator поддерживает постольку-поскольку).

Пойдем четко по нашему алгоритму.

Шаг 1. Берем идентификатор программы и формируем адрес обращения к сценарию lookup

Из раздела Интернет в боковой области библиотеки «Автоматора» перетащите в основную область окна программы действие Получить текущую страницу из Safari. Настраивать это действие никак не нужно. Результат этого действия: веб-адрес текущей страницы в «Сафари» (предполагаем, что это страница App Store), который будет передан следующему действию.

Из раздела Утилиты добавьте действие Запустить shell-скрипт, обязательно выбрав в выпадающем списке Передать ввод: пункт как аргументы. Поскольку сценарий я составил на языке «Питон», в выпадающем списке Shell выбрал пункт /usr/bin/python. Этот простой код принимает от первого действия веб-адрес, из которого, с помощью механизма регулярных выражений (поиск фрагмента строки по заданному шаблону), извлекает фрагмент, состоящий исключительно из девяти цифр. Результат этого действия: девятизначный идентификатор приложения, который будет передан следующему действию.

Шаг 2. Получаем от сервера Apple данные о программе

Из раздела Интернет добавьте действие Получить текст из веб-страницы, выбрав в выпадающем списке Получить пункт Простой текст. Результат этого действия: текст, который сгенерирует сервер Apple и в котором мы будем искать имя программы и путь к иконке.

Полученный текст нам еще понадобится, и чтобы повторно не обращаться к серверу Apple, этот текст можно сохранить в переменную. Для этого из раздела Утилиты добавьте действие Установить значение переменной. В выпадающем списке Переменная выберите пункт Новая переменная — в появившемся синем окошке введите имя переменной lookup и нажмите кнопку Готово. Результат этого действия: полученный от предыдущего действия текст будет сохраняться в переменной lookup.

Разумеется, названия переменных вы можете задавать по собственному усмотрению — допускаются даже русские имена. Нужно только следить за тем, чтобы эти переменные правильно располагались в алгоритме службы.

Шаг 3. Ищем название программы

Предыдущее действие передает полученный ранее текстовый массив в исходном состоянии, поэтому мы сразу можем «прицепить» следующее действие — Запустить shell-скрипт из раздела Утилиты. Параметры этого действия такие же, как у аналогичного действия, второго сверху: /usr/bin/python в первом выпадающем списке и как аргументы — во втором. Сценарий в этом действии тоже использует механизм регулярных выражений, причем дважды: сначала находится ключ и значение (“trackName”:“Buy Me a Pie! — Grocery Shopping List”), а затем из полученной строки обрезаются все лишние символы, чтобы осталось только название программы. Результат этого действия: получается полное название программы, в данном примере это Buy Me a Pie! — Grocery Shopping List — оно и передается следующему действию.

Сейчас название программы нам не будет нужно — оно понадобится потом. Поэтому его нужно сохранить в новую переменную. Из раздела Утилиты добавьте действие Установить значение переменной и повторите те же манипуляции, что и с предыдущим аналогичным действием — только в этот раз создайте переменную с именем appName. Результат этого действия: до конца выполнения всего алгоритма в переменной appName будет храниться название программы, полученное в предыдущем действии.

Шаг 4. Ищем веб-адрес иконки

«Автоматор» так устроен, что результат работы предудыщего действия передается следующему. Но нам сейчас нужно не название программы, а исходная текстовая информация о ней, где мы будем искать адрес иконки. Поэтому из раздела Утилиты добавьте действие Получить значение переменной — сразу щелкните правой кнопкой мыши на заголовке этого действия и в появившемся меню выберите команду Игнорировать ввод. Теперь действие, с которым вы сейчас работаете, никогда не будет учитывать результат работы предыдущего действия, чтобы там ни происходило. В выпадающем списке Переменная выберите пункт lookup. Результат этого действия: следующему действию будет передано значение переменной lookup, в котором ранее мы сохранили текстовую информацию о программе.

Из раздела Утилиты добавьте действие Запустить shell-скрипт с такими же параметрами, что и одноименные действия на второй и пятой позициях в нашем алгоритме. Сценарий в этом действии аналогичен тому коду, который в пятом «скриптовом» действии искал название программы: находится пара ключа и значения (“artworkUrl512”:“http://a1013.phobos.apple.com/us/↵ r30/Purple6/v4/c7/9d/77/c79d778f–89a1-a925-b424–0e43819dfbba/mzl.xsxlaekt.png”), из которого убираются все кавычки, двоеточия и название ключа. Результат этого действия: получаем веб-адрес иконки, который передается следующему действию.

Шаг 5. Загружаем иконки на рабочий стол

Из раздела Интернет добавьте действие Загрузить URL, и в выпадающем списке Где укажите папку рабочего стола. Результат этого действия: по полученному от предыдущего действия адресу на рабочий стол будет загружен файл иконки.

Шаг 6. Задаем загруженному файлу имя программы

Посмотрите еще раз на веб-адрес иконки, указанный двумя абзацами выше: файл будет загружен с именем mzl.xsxlaekt.png. Конечно, можно оставить и так, но чтобы было красивее, это имя можно заменить на название программы, которое мы уже нашли и сохранили в переменную appName.

Из раздела Файлы и папки добавьте действие Переименовать объекты Finder и настройте его таким образом. В основном выпадающем списке выберите Имя единичного объекта, а выпадающем списке Имя выберите пункт Только основное имя. Теперь текстовое поле до — перетащите в него переменную appName, которая доступна в общем списке переменных в нижней части окна «Автоматора». Результат этого действия: загруженный ранее файл будет переименован с сохранением расширения. В нашем примере получится готовая картинка в виде файла Buy Me a Pie! — Grocery Shopping List.png.

Шаг 7. Еще кое-что…

Чтобы все было совсем красиво, можно добавить всплывающее уведомление — эта возможность появилась в «Автоматоре» с выходом OS X 10.9. Из раздела Утилиты добавьте действие Показать уведомление. В первый заголовок введите название почти готовой службы — Загрузить иконку приложения, а в поле Сообщение введите короткий текст типа: «Иконка загружена на ваш рабочий стол».

Шаг 8. PROFIT

Все, наша служба готова к труду и обороне. Сохраните ее под именем Загрузить иконку приложения и сразу переходите к Safari. Открыв в нем какую-нибудь страницу из App Store или Mac App Store, найдите в меню Safari > Службы новый пункт Загрузить иконку приложения — и, щелкнув на нем, запустите только что сохраненную службу. Через секунду-две, в зависимости от мощности вашего Мака, вы увидите уведомление — и иконку на рабочем столе, которую можно запросто использовать в дальнейшей работе.

«Да это сложно для меня!»

На самом деле в описанном выше процессе ничего сложного. Я сам не программист (хотя основы программирования после института еще помню), но достаточно было потратить часа три на неспешные поиски решения отдельных промежуточных задач (например, я не знал синтаксис регулярных выражений в «Питоне» — пришлось изрядно погуглить) — и дело в шляпе. Мне приятно, что хотя бы несколько человек в нашей команде находят такой способ получения иконок приложений более удобным.

Для удобства вы можете скачать уже готовую службу по кнопке, расположенной ниже. Открыв workflow-объект в «Автоматоре» можно внимательно изучить содержимое и настройки каждого действия, чтобы все изложенное было понятнее.

Скачать службу (ZIP-архив, 413 КБ)

Если кто-то из вас знает, как оптимизировать приведенный выше алгоритм, или может подсказать способ попроще — прошу в комментарии. :)

*Деятельность Meta Platforms Inc. и принадлежащих ей социальных сетей Facebook и Instagram запрещена на территории РФ.

Если нашли ошибку, выделите текст и нажмите Ctrl + Enter

Лучшие предложения

Распродажа 11.11 на AliExpress: скидки до 90% на всё, что мы любим

Распродажа 11.11 на AliExpress: скидки до 90% на всё, что мы любим

15 idej original&#039;nyh podarkov na Novyj god

15 идей оригинальных подарков на Новый год

Realme 15 Pro

11 лучших скидок на смартфоны с распродажи 11.11 на AliExpress

Настолько хорошие куртки и плащи, что про них пишут в отзывах целые&nbsp;книги

Настолько хорошие куртки и плащи, что про них пишут в отзывах целые книги

Chto podarit&#039; muzhchine na Novyj god: 120 interesnyh idej

Что подарить мужчине на Новый год: 120 интересных идей

Chto komanda Lajfhakera pokupaet na rasprodazhe 11.11

Что команда Лайфхакера покупает на распродаже 11.11

Надо брать: мини-ПК с Intel Core i7 со скидкой 61%

Надо брать: мини-ПК с Intel Core i7 со скидкой 61%

Утеплённые кроссовки от Baasploa, которые не подведут зимой

Утеплённые кроссовки от Baasploa, которые не подведут зимой

Это интересно
Как найти работу, где помогают расти и&nbsp;поддерживают на&nbsp;старте

Как найти работу, где помогают расти и поддерживают на старте

Коля идёт на смену! Как проходит первый день новичка на складе Ozon&nbsp;

Коля идёт на смену! Как проходит первый день новичка на складе Ozon 

Как покупать продукты рационально: полезная инструкция

Как покупать продукты рационально: полезная инструкция

Реклама
Нейросети меняют рынок труда. Что нужно сделать сегодня, чтобы оставаться востребованным завтра

Нейросети меняют рынок труда. Что нужно сделать сегодня, чтобы оставаться востребованным завтра

Комментарии
Deavy
03.02.14 21:58
Только она будет квадратная и без маски, что не совсем удобно.
Александр Журович
04.02.14 00:38
Дальше используется графический редактор. ;)
Deavy
23.03.14 15:18
Мне достаточно 175х175px, которые можно найти на странице приложения в App Store, и веб-инспектора в Chrome/Safari.
Артем Козориз
04.02.14 19:57
Не всегда! В некоторых приложениях иконки уже закругленные и даже с тенью. Ну а если нет, то это можно сделать в том же Pixelmator'е или Ps. Это намного проще чем выполнять все необходимые действия вручную :)
Александр Журович
05.02.14 02:29
Ниже подсказывают, что в пути к значку нужно заменить jpg на png — и получится уже готовая иконка в форме суперэллипса. Но, увы, форма получается с зазубренными краями. Так что графический редактор все равно понадобится.
Arthur Sitdikov
04.02.14 00:47
Вот вы усложняете простой запрос в гугл всё решает :) http://bit.ly/1elamnm
Александр Журович
04.02.14 00:52
Тоже имеющий право на жизнь способ. НО: 1) нужно открыть страницу images.google.com 2) нужно ввести поисковый запрос 3) нужно щелкнуть на нужной иконке (допустим, она в числе первых — искать не нужно) 4) перетащить иконку на рабочий стол Много ручных действий. А ведь страница App Store уже открыта — она нам все равно нужна для работы. С этой точки и начинает действовать наша служба — нужно лишь вызвать ее и подождать пару секунд, пока на рабочем столе иконка не появится сама собой. Но ваш способ все равно имеет право быть, глупо его отрицать. :)
SowenoK
04.02.14 15:12
1) Открываете страницу приложения - http://itunes.apple.com/ru/app/id725418306 2) Открываете изображение иконки в новой вкладке. Не знаю как в сафари, но в хроме правой кнопкой на иконку - просмотр кода элемента, там будет ссылка - http://a5.mzstatic.com/us/r30/Purple6/v4/c7/9d/77/c79d778f-89a1-a925-b424-0e43819dfbba/mzl.xsxlaekt.175x175-75.jpg 3) В исходной ссылке заменяем ".175x175-75.jpg" на ".png", готово!
SowenoK
04.02.14 15:19
Вроде в сафари правой кнопкой на иконку - проверить объект.
Александр Журович
05.02.14 02:28
А еще заменить 175x175 на 512x512. Но тогда будут видны зазубренные края маски. В общем, я пользовался этим способом, пока не обломался выковыривать иконки вручную.
Артем Козориз
04.02.14 19:58
Еще раз спасибо, Саша!
Sergey Pimenov
05.03.14 19:43
Александр, добрый день. Я был так впечатлён вашей статьёй, что попросил наших программистов сделать публичным нам внутренний инструмент по получению любых ресорсов из App Store и iTunes Store — иконки, обложки, скриншоты и тд. Это работает через Apple Search Api и там всегда актальные данные. Буду рад, если вам это поможет в работе. http://applifto.ru/resource
Александр Журович
05.03.14 19:46
Круууто! :) Спасибо, Сергей. Поделюсь ссылкой у себя в твиторе.
Что вы могли пропустить
Samsung Galaxy S27 Ultra может получить уникальную систему распознавания лиц
Samsung Galaxy S27 Ultra может получить уникальную систему распознавания лиц
0
14:50
Новости
Устройства
11 лучших скидок на смартфоны с распродажи 11.11 на AliExpress
11 лучших скидок на смартфоны с распродажи 11.11 на AliExpress
0
13:00
Покупки
Устройства
В WhatsApp появится «экстремальный режим аккаунта» для защиты от мошенников
В WhatsApp появится «экстремальный режим аккаунта» для защиты от мошенников
0
11:10
Новости
Технологии
Складной iPhone станет первым смартфоном с подэкранной камерой на 24 Мп
Складной iPhone станет первым смартфоном с подэкранной камерой на 24 Мп
0
Вчера
Новости
Устройства
iPhone 18 Pro может получить прозрачную заднюю крышку, как у iMac конца 1990-х
iPhone 18 Pro может получить прозрачную заднюю крышку, как у iMac конца 1990-х
0
Вчера
Новости
Устройства
12 смартфонов Xiaomi получат HyperOS 3 на базе прошлогодней Android 15 — список
12 смартфонов Xiaomi получат HyperOS 3 на базе прошлогодней Android 15 — список
0
Вчера
Новости
Устройства
Альтернатива ноутбуку и планшету: представлен карманный ПК OmniOne 5.7 с сенсорным дисплеем
Альтернатива ноутбуку и планшету: представлен карманный ПК OmniOne 5.7 с сенсорным дисплеем
0
Вчера
Новости
Устройства
Moonshot AI представила Kimi K2-Thinking — бесплатную ИИ-модель, которая превосходит GPT-5
Moonshot AI представила Kimi K2-Thinking — бесплатную ИИ-модель, которая превосходит GPT-5
0
Вчера
Новости
Технологии
Black Shark выпустила игровые полноразмерные наушники Fengming S1 — 155 часов на одной зарядке
Black Shark выпустила игровые полноразмерные наушники Fengming S1 — 155 часов на одной зарядке
0
Вчера
Новости
Устройства
ИИ не оправдал ожиданий: компании начали нанимать уволенных сотрудников обратно
ИИ не оправдал ожиданий: компании начали нанимать уволенных сотрудников обратно
0
Вчера
Новости
Технологии
Россиянам будут блокировать мобильный интернет и СМС после роуминга — временно
Россиянам будут блокировать мобильный интернет и СМС после роуминга — временно
0
Вчера
Новости
Технологии
Увлажнитель, мойка и очиститель воздуха: в чём разница и что выбрать
Увлажнитель, мойка и очиститель воздуха: в чём разница и что выбрать
0
Вчера
Как выбрать
Устройства
Объясняем за минуту: можно ли заливать воду из-под крана в увлажнитель воздуха
Объясняем за минуту: можно ли заливать воду из-под крана в увлажнитель воздуха
0
6 ноября
Ликбез
Технологии
Кнопку остановки будильника в iOS 26.1 заменили на слайдер — но её можно вернуть
Кнопку остановки будильника в iOS 26.1 заменили на слайдер — но её можно вернуть
0
6 ноября
iOS
Новости
Samsung раскрыла информацию о линейке Galaxy S26 — они станут «революцией в ИИ»
Samsung раскрыла информацию о линейке Galaxy S26 — они станут «революцией в ИИ»
0
6 ноября
Новости
Устройства

Новые комментарии

Аватар автора комментария
Skufa21 минуту назад

0 / 0

Усваиваемость оранжевой чечевицы организмом Оранжевая чечевица усваивается лучше других бобовых (горох, фасоль, нут), но не на 100 % из-за антипитательных веществ. Варка устраняет большинство проблем. 1. Усваиваемость нутриентов - Белок: 85–92 % после варки (один из лучших растительных источников). - Углеводы: 98 % (быстро дают энергию). - Железо: 20–30 % (с витамином C — до 50 %). - Цинк: 40–50 % (фитаты снижают). - Клетчатка: не усваивается, но питает микробиом. 2. Что мешает усвоению - Фитаты — связывают минералы → замачивание + варка. - Лектины — раздражают кишечник → разрушаются при варке 10+ мин. - Олигосахариды — газы → замачивание + специи (тмин, фенхель). 3. Как повысить усвоение - Добавляйте витамин C (лимон, томаты) — железо ↑ в 3–6 раз. - Ешьте с зерновыми (рис, хлеб) — полноценный белок. - Замачивайте 6–8 ч с лимонным соком — фитаты ↓ на 50 %. - Вводите постепенно — избежите вздутия. 4. Кому может быть тяжело - СРК/метеоризм: начинать с 1–2 ст.л., замачивать. - Язва/гастрит: варить до пюре. - Подагра: не чаще 1–2 раз в неделю. - Дети до 1 года: не рекомендуется. 5. Биодоступность (100 г варёной, из 40 г сухой) - Белок: ~10 г. - Железо: 1,0–1,5 мг (с лимоном — до 2 мг). - Клетчатка: 6–7 г. - Фолаты: ~80 мкг. 6. Идеальный способ приготовления 1. Замочить 6–8 ч в тёплой воде + 1 ч.л. лимона → слить. 2. Промыть. 3. Варить 12 мин (1:2,5). 4. За 2 мин: соль + куркума + лимон. 5. Подать с рисом + овощами. → Железо ↑ в 5 раз, белок ↑ до 90 %, газы ↓ на 70 %. Вывод - Общая усваиваемость: 85–95 % после варки. - Лучшая среди бобовых. - Подходит ежедневно: 2–4 порции в неделю. Готовьте с умом — чечевица станет идеальным суперфудом.
Как варить чечевицу разных цветов
Аватар автора комментария
Skufa32 минуты назад

0 / 0

1. Замочить 6–8 ч в тёплой воде + 1 ч.л. лимонного сока → слить 2. Промыть 3. Варить 12 мин в свежей воде (1:2,5) 4. За 2 мин до конца: соль + куркума + сок лимона 5. Подать с рисом/киноа + овощами (помидоры, перец)
Как варить чечевицу разных цветов
Аватар автора комментария
Радик Карамов2 часа назад

0 / 0

что бы продать подороже
Распродажа 11.11 на AliExpress: скидки до 90% на всё, что мы любим
Аватар автора комментария
Klava Balaklava2 часа назад

0 / 0

Всем привет. Также удаляла гланды 6.11.25. Сегодня заканчивается второй день после операции(не считая сам день операции) Блин. Это ад. Обезбол можно только раз в день. Антибиотики не прописывали. Ем, только тогда, когда надо выпить таблетки. И то, таблетки дроблю в порошок. Только обезбол помогает как то жить. Я всем сочувствую, кто проходит через это. Это Нифига никак ангина
Как пережить восстановление после удаления миндалин
Как покупать продукты рационально: полезная инструкция

Как покупать продукты рационально: полезная инструкция

Реклама
Лайфхакер
Информация
О проектеРубрикиРекламаРедакцияВакансииДля начинающих авторов
Подписка
TelegramВКонтактеTwitterViberYouTubeИнициалRSS
Правила
Пользовательское соглашениеПолитика обработки персональных данныхПравила применения рекомендательных технологийПравила сообществаСогласие на обработку персональных данныхСогласие для рекламных рассылокСогласие для информационной программы
18+Копирование материалов запрещено.
Издание может получать комиссию от покупки товаров, представленных в публикациях