Лайфхакер
Лайфхакер
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Сколько дней до лета
Новости
Здоровье
Спорт и фитнес
Покупки
Технологии
Отношения
Кино
Реклама
МакрадарТехнологии
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

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

3D-принтер Bambu Lab А1 Min

Надо брать: 3D-принтер Bambu Lab А1 Mini со скидкой 48%

«Дни выгоды» на AliExpress: экономим до 86% на важных покупках

«Дни выгоды» на AliExpress: экономим до 86% на важных покупках

массивные повседневные кроссовки от Xtep

Надо брать: массивные кроссовки от Xtep со скидкой 53%

10 товаров с маркетплейсов, на которые стоит обратить внимание на этой неделе

10 товаров с маркетплейсов, на которые стоит обратить внимание на этой неделе

Смартфон realme 16

Со скидкой 54% отдают новинку realme 16 на AliExpress

Nahodki AliExpress: samye interesnye i poleznye tovary nedeli

Находки AliExpress: самые интересные и полезные товары недели

Надо брать: автомобильный пылесос Baseus A5 со скидкой 38%

Надо брать: автомобильный пылесос Baseus A5 со скидкой 38%

15 мужских вещей от Maden — надёжной марки из Китая

15 мужских вещей от Maden — надёжной марки из Китая

Это интересно
«Семальтара»: как работает семаглутид в таблетках и для чего его назначают

«Семальтара»: как работает семаглутид в таблетках и для чего его назначают

Лайфхакер и TRENDY BOX выпустили унисекс-бьюти-бокс — смотрите, что внутри

Лайфхакер и TRENDY BOX выпустили унисекс-бьюти-бокс — смотрите, что внутри

Как найти квартиру мечты на Яндекс Недвижимости: 3 совета для общения с ИИ-помощником

Как найти квартиру мечты на Яндекс Недвижимости: 3 совета для общения с ИИ-помощником

Не только бюджет: 3 вопроса, которые стоит задать себе при выборе квартиры для жизни с партнёром

Не только бюджет: 3 вопроса, которые стоит задать себе при выборе квартиры для жизни с партнёром

Комментарии
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
Круууто! :) Спасибо, Сергей. Поделюсь ссылкой у себя в твиторе.
Что вы могли пропустить
Что такое чат-бот Claude, как им пользоваться и почему он так популярен
Что такое чат-бот Claude, как им пользоваться и почему он так популярен
0
16:00
Ликбез
Технологии
Apple готовит премиальные умные очки в 4 стилях и с овальными камерами
Apple готовит премиальные умные очки в 4 стилях и с овальными камерами
0
Вчера
Новости
Технологии
Конкурент iPhone Ultra: раскладушку Huawei Pura X Max показали на видео
Конкурент iPhone Ultra: раскладушку Huawei Pura X Max показали на видео
0
Вчера
Новости
Устройства
6 лучших бесплатных видеоредакторов для iPhone в 2026 году
6 лучших бесплатных видеоредакторов для iPhone в 2026 году
0
Вчера
iOS
iOS
Мессенджер XChat от Илона Маска появился в App Store — со сквозным шифрованием и поддержкой Grok
Мессенджер XChat от Илона Маска появился в App Store — со сквозным шифрованием и поддержкой Grok
0
Вчера
iOS
Новости
Что лучше — DisplayPort или HDMI
Что лучше — DisplayPort или HDMI
0
12 апреля
Технологии
Технологии
Новые китайские Ultra‑смартфоны могут не выйти на рынок
Новые китайские Ultra‑смартфоны могут не выйти на рынок
0
11 апреля
Новости
Устройства
Зачем я купил Sony PSP в 2026 году — и почему советую эту легенду всем
Зачем я купил Sony PSP в 2026 году — и почему советую эту легенду всем
0
11 апреля
Технологии
Технологии
Apple выпустит сразу три смартфона в начале 2027 года
Apple выпустит сразу три смартфона в начале 2027 года
0
10 апреля
Новости
Устройства
Звони коту: как из-за блокировок люди начали общаться через автокормушки, пылесосы, таблицы и заметки
Звони коту: как из-за блокировок люди начали общаться через автокормушки, пылесосы, таблицы и заметки
0
10 апреля
Технологии
Технологии
Названы 10 самых продаваемых смартфонов в мире — в топ ворвалась модель Xiaomi
Названы 10 самых продаваемых смартфонов в мире — в топ ворвалась модель Xiaomi
0
9 апреля
Новости
Устройства
Dyson выпустила карманную версию своих культовых вентиляторов Air Multiplier
Dyson выпустила карманную версию своих культовых вентиляторов Air Multiplier
0
9 апреля
Новости
Устройства
Обзор Honor 600 Lite — сбалансированного смартфона с отличным дисплеем и крутой автономностью
Обзор Honor 600 Lite — сбалансированного смартфона с отличным дисплеем и крутой автономностью
0
9 апреля
Устройства
Устройства
В Škoda создали велосипедный звонок, который слышно даже в наушниках с шумодавом
В Škoda создали велосипедный звонок, который слышно даже в наушниках с шумодавом
0
8 апреля
Новости
Устройства
Как зарегистрировать американский Apple ID бесплатно и без карты в 2026 году
Как зарегистрировать американский Apple ID бесплатно и без карты в 2026 году
0
8 апреля
iOS
Ликбез

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

Аватар автора комментария
Дмитрий Баранкин7 минут назад

0 / 0

Я одинок мне так хочется секса но не могу никак найти себе женщину даже для редкий встреч из за того что я инвалид по слуху Подскажите что мне делать? Помогите
Стоит ли тратить деньги на секс-куклу
Аватар автора комментария
Сенди18 минут назад

0 / 0

Спасибо за совет. Этот цветок меня выручает при простудах ))
Как размножить алоэ в домашних условиях
Аватар автора комментария
Сенди19 минут назад

0 / 0

Интересно успешным ли окажется приложение🤔
Мессенджер XChat от Илона Маска появился в App Store — со сквозным шифрованием и поддержкой Grok
Аватар автора комментария
Сенди21 минуту назад

0 / 0

Мне дает разгрузку поездка по магазинам после работы, ну совместный просмотр фильмов с семьей. А когда потеплеет, будут совместные прогулки))
6 способов не сойти с ума на работе, если до отпуска ещё далеко
Лайфхакер и TRENDY BOX выпустили унисекс-бьюти-бокс — смотрите, что внутри

Лайфхакер и TRENDY BOX выпустили унисекс-бьюти-бокс — смотрите, что внутри

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