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

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

Эта куртка от российского производителя — самое то для нашей зимы

Эта куртка от российского производителя — самое то для нашей зимы

Машинка для удаления катышков

Спасаем вещи машинкой для удаления катышков с восторженными отзывами

Nahodki AliExpress: samye interesnye i poleznye tovary nedeli

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

10 инструментов, которые значительно подешевели на AliExpress в январе

10 инструментов, которые значительно подешевели на AliExpress в январе

11 уютных платьев для суровой зимы

11 уютных платьев для суровой зимы

15 товаров дешевле 1 000 рублей, которые нравятся покупателям на AliExpress

15 товаров дешевле 1 000 рублей, которые нравятся покупателям на AliExpress

Самый популярный мультитул на AliExpress отдают со скидкой 50%

Самый популярный мультитул на AliExpress отдают со скидкой 50%

Недорогой трёхканальный видеорегистратор стал ещё дешевле на AliExpress

Недорогой трёхканальный видеорегистратор с AliExpress стал ещё дешевле

Это интересно
Что такое «Редуксин Форте» и как он работает

Что такое «Редуксин Форте» и как он работает

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
Круууто! :) Спасибо, Сергей. Поделюсь ссылкой у себя в твиторе.
Что вы могли пропустить
Вместо Chrome: 6 браузеров с ИИ, которые перестраивают работу в Сети
Вместо Chrome: 6 браузеров с ИИ, которые перестраивают работу в Сети
0
Вчера
Технологии
Технологии
Создатель криптовалюты Ethereum Виталик Бутерин назвал приложения, которыми заменил сервисы Google
Создатель криптовалюты Ethereum Виталик Бутерин назвал приложения, которыми заменил сервисы Google
0
Вчера
Новости
Технологии
Как отправить исчезающее фото, видео или сообщение в Telegram
Как отправить исчезающее фото, видео или сообщение в Telegram
0
25 января
Ликбез
Технологии
Журналистка The Guardian отказалась от смартфона на месяц и поделилась своим опытом
Журналистка The Guardian отказалась от смартфона на месяц и поделилась своим опытом
0
24 января
Новости
Технологии
В популярных играх и приложениях на Android нашли ИИ-вирус для скрытых кликов по рекламе
В популярных играх и приложениях на Android нашли ИИ-вирус для скрытых кликов по рекламе
0
24 января
Android
Новости
Microsoft призвала пользователей удалить январское обновление Windows 11
Microsoft призвала пользователей удалить январское обновление Windows 11
0
24 января
Windows
Новости
Blip: как мгновенно обмениваться файлами между любыми устройствами
Blip: как мгновенно обмениваться файлами между любыми устройствами
0
24 января
Технологии
Технологии
Какие беспроводные наушники выбрать, чтобы не пожалеть о покупке
Какие беспроводные наушники выбрать, чтобы не пожалеть о покупке
0
23 января
Как выбрать
Ликбез
Xiaomi выпустила «двухэтажный» аэрогриль на 12 литров с режимом сушки
Xiaomi выпустила «двухэтажный» аэрогриль на 12 литров с режимом сушки
0
23 января
Новости
Устройства
ИИ-генератор раскрасок и улучшенный Markdown: в «Блокноте» и Paint на Windows 11 появились новые функции
ИИ-генератор раскрасок и улучшенный Markdown: в «Блокноте» и Paint на Windows 11 появились новые функции
0
23 января
Windows
Новости
В «Google Фото» появился ИИ-генератор мемов с самим собой
В «Google Фото» появился ИИ-генератор мемов с самим собой
0
23 января
Новости
Технологии
Инсайдер показал макет складного iPhone с причудливыми пропорциями
Инсайдер показал макет складного iPhone с причудливыми пропорциями
0
22 января
Новости
Устройства
Обзор планшета HUAWEI MatePad 11,5 S PaperMatte Edition 2026 — апгрейда удачной модели 2024-го
Обзор планшета HUAWEI MatePad 11,5 S PaperMatte Edition 2026 — апгрейда удачной модели 2024-го
0
22 января
Устройства
Устройства
Представлен NexPhone — смартфон с Android, Windows и Linux, который может заменить ноутбук
Представлен NexPhone — смартфон с Android, Windows и Linux, который может заменить ноутбук
0
22 января
Новости
Устройства
В Китае испытали «инопланетный» дирижабль, который превращает воздух в электричество
В Китае испытали «инопланетный» дирижабль, который превращает воздух в электричество
0
21 января
Новости
Технологии

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

Аватар автора комментария
Елена Грицун7 минут назад

0 / 0

А я в детстве смотрела. И уже тогда не поняла, почему такая тяжелая история в мультике. Хотя после "Короля Льва" и поединка Муфасы со Шрамом...
Почему «Принца Египта» интересно смотреть до сих пор
Аватар автора комментария
Лиза Кабанова11 минут назад

0 / 0

Там гораздо хуже повествование. Рекомендую снизить ожидая
Почему «Принца Египта» интересно смотреть до сих пор
Аватар автора комментария
Елена Грицун11 минут назад

0 / 0

Говорит, что в 40 лет тяжелее дается беременность. Зато муж рад, что будет еще одна дочь ))
Правда ли, что диабет молодеет? Разбираемся с эндокринологом
Аватар автора комментария
Елена Грицун17 минут назад

0 / 0

Это заблуждение, к сожалению, что раньше всё было такое здоровое и люди более крепкие. И пища натуральная. И в целом: раньше - это когда конкретно? Пища сейчас максимально безопасная: добавки с индексом E, которых все боятся как огня, проверены-перепроверены и не дают размножаться вредной флоре в еде, да и в косметике. Овощи и фрукты доступны круглый год. Тут есть возражение, мол, а помидоры зимой пластиковые. Да, не особо вкусные - но это цена за селекцию без применения ГМО: помидоры плотные, лежат долго, но, увы, потеряли аромат и сладость. Зато не портятся. Но если помидор в принципе созрел, все нужные витамины и минеральные вещества там есть - потому что помидор их делает не для нас, а для себя. Диарея стала не таким популярным недомоганием. В моем "раньше" (30-35 лет назад) понос был рядовым явлением: то творог у бабули на рынке "наисвежайший" купишь - и сидишь потом в сортире три дня; то огурцы деревенские что-то с собой принесли. А уж "грибочки косервированные, дед сам собирал" уносили жизни только так...
10 стыдных вопросов про завтрак: отвечает гастроэнтеролог Александр Приказчиков
Добро пожаловать в научную фантастику! Как технологии меняют современные компании и жизнь их клиентов

Добро пожаловать в научную фантастику! Как технологии меняют современные компании и жизнь их клиентов

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