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

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

15 veshchej deshevle 1 000 rublej, kotorye navernyaka prigodyatsya

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

Надо брать: колонка для компьютера с RGB-подсветкой за полцены

Надо брать: колонка для компьютера с RGB-подсветкой за полцены

Отличный подарок кому угодно — «Яндекс Станция Лайт 2» с Алисой за 5 000 рублей

Отличный подарок кому угодно — «Яндекс Станция Лайт 2» с Алисой за 5 000 рублей

Надо брать: зимние ботинки от Golden Camel с рейтингом 5 звёзд и скидкой 59%

Надо брать: зимние ботинки от Golden Camel с рейтингом 5 звёзд и скидкой 59%

Забираем новинку OPPO Reno 15 со скидкой 55% на AliExpress

Забираем новинку OPPO Reno 15 со скидкой 55% на AliExpress

10 сладких подарков с быстрой доставкой

10 сладких подарков с быстрой доставкой

Надо брать: робот-пылесос от Tuvio с функцией влажной уборки дешевле 6 000 рублей

Надо брать: робот-пылесос от Tuvio с функцией влажной уборки дешевле 6 000 рублей

15 подарков с быстрой доставкой, которые можно купить в последний момент

15 подарков с быстрой доставкой, которые можно купить в последний момент

Это интересно
Мой особенный друг: как взять из приюта питомца с особыми потребностями и не пожалеть

Мой особенный друг: как взять из приюта питомца с особыми потребностями и не пожалеть

Как меняется «Битрикс24»: девять комментариев из интернета, которые давно не актуальны

Как меняется «Битрикс24»: девять комментариев из интернета, которые давно не актуальны

Реклама
Платежи с кешбэком и без комиссий. Как приложение Газпромбанка облегчит вам&nbsp;жизнь

Платежи с кешбэком и без комиссий. Как приложение Газпромбанка облегчит вам жизнь

Приоритетная задача! Чек-лист отдыха на праздниках

Приоритетная задача! Чек-лист отдыха на праздниках

Комментарии
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
Круууто! :) Спасибо, Сергей. Поделюсь ссылкой у себя в твиторе.
Что вы могли пропустить
Надо брать: колонка для компьютера с RGB-подсветкой за полцены
Надо брать: колонка для компьютера с RGB-подсветкой за полцены
0
Вчера
Покупки
Устройства
Мессен­джер для звонков imo: что это за приложение и как им пользоваться
Мессен­джер для звонков imo: что это за приложение и как им пользоваться
0
Вчера
Ликбез
Технологии
Что делать, если ваш сайт упал: пошаговая инструкция для предпринимателей от Т2
Что делать, если ваш сайт упал: пошаговая инструкция для предпринимателей от Т2
Вчера
Технологии
Технологии
Надо брать: робот-пылесос от Tuvio с функцией влажной уборки дешевле 6 000 рублей
Надо брать: робот-пылесос от Tuvio с функцией влажной уборки дешевле 6 000 рублей
0
23 декабря
Покупки
Устройства
WhatsApp отреагировал на ограничение работы в России
WhatsApp отреагировал на ограничение работы в России
0
23 декабря
Новости
Технологии
ChatGPT запустил персональные итоги года со статистикой сообщений и картинкой на основе ваших тем
ChatGPT запустил персональные итоги года со статистикой сообщений и картинкой на основе ваших тем
0
23 декабря
Веб-сервисы
Новости
Samsung готовит Wide Fold с экраном 4:3, который станет конкурентом складного iPhone
Samsung готовит Wide Fold с экраном 4:3, который станет конкурентом складного iPhone
0
23 декабря
Новости
Устройства
14 классных электронных книг — от премиальных до бюджетных моделей
14 классных электронных книг — от премиальных до бюджетных моделей
0
23 декабря
Ликбез
Устройства
Телевизор с диагональю 43 дюйма и Google TV от Tuvio отдают со скидкой 50%
Телевизор с диагональю 43 дюйма и Google TV от Tuvio отдают со скидкой 50%
0
22 декабря
Покупки
Устройства
«Яндекс» представил обновлённый «Телемост» со звонками любым контактам на смартфоне
«Яндекс» представил обновлённый «Телемост» со звонками любым контактам на смартфоне
0
22 декабря
Новости
Технологии
Как включить двухфакторную аутентификацию в Telegram — и зачем это делать
Как включить двухфакторную аутентификацию в Telegram — и зачем это делать
0
22 декабря
Ликбез
Технологии
Флагман Xiaomi 17 Ultra, смарт-часы Watch 5 и наушники Buds 6 получили рендеры и дату выхода
Флагман Xiaomi 17 Ultra, смарт-часы Watch 5 и наушники Buds 6 получили рендеры и дату выхода
0
22 декабря
Новости
Устройства
В ChatGPT появились рождественские видеооткрытки, которые создаются на основе переписки
В ChatGPT появились рождественские видеооткрытки, которые создаются на основе переписки
0
22 декабря
Веб-сервисы
Новости
Как выбрать беговую дорожку для дома, чтобы быть активным и кайфовать
Как выбрать беговую дорожку для дома, чтобы быть активным и кайфовать
0
21 декабря
Ликбез
Устройства
Qwen выпустила модель для редактирования фото через слои — более тонко и точечно
Qwen выпустила модель для редактирования фото через слои — более тонко и точечно
0
20 декабря
Новости
Технологии

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

Аватар автора комментария
Evgeny Ivakhnenko4 минуты назад

0 / 0

Ликбез вам, привязка номеров к паспортам была всегда, при заключении договора на услуги связи при получении sim карты
WhatsApp отреагировал на ограничение работы в России
Аватар автора комментария
Рафаэль Галиев33 минуты назад

0 / 0

В японском GooglePlay он есть, но написано, что не доступен в регионе, нельзя скачать.
WhatsApp отреагировал на ограничение работы в России
Аватар автора комментария
Jaguar 3915 часов назад

0 / 0

Конечно есть! Я к примеру уже давно не ношу пуховики. В 90-х было модно и стильно ходить в пуховиках и спустя 30 лет опять эти пуховики 😱😂 Мода ходит по кругу. А я к примеру предпочитаю куртки с мехом волка, дублёнки, шубы из меха волка. Когда не очень холодно, то можно в куртке, когда похолоднее, то в дублёнке, а когда холодно на улице, то в шубе. Очень тепло и теплее, чем в пуховике. А эти в основном однотонные пуховики уже порядком надоели. Смотришь на людей, а они в большинстве в пуховиках 😱. Как-будто купить больше нечего. Выбор огромен!!!
В этой куртке от O'HARA можно спокойно гулять в мороз и ветер
Аватар автора комментария
Jaguar 3915 часов назад

0 / 0

На Авито полно всякой техники, можно выбрать на разный кошелёк. Но просто сделать немного громче, чем было, ну такое себе удовольствие 😆 Многие люди по ходу действительно перестали ценить качество звучания!!! Неважно что, но, чтобы звучало, а как, уже неважно. Сюда относятся и колонки с Алисой с моно звучанием, даже порой за 30К+, всякие кастрированные саундбары и кто-то их покупает, думая, что это круто, стильно, в тренде. Но по факту производители техники задали тренд продавать современную акустику меньших размеров, но за бОльшие деньги, вот и продают, а люди, которые следуют заданным трендам, эту акустику и покупают. Неужели качество звучания сейчас стало неважно? Удивляюсь я на таких....
Надо брать: колонка для компьютера с RGB-подсветкой за полцены
Новый «Буратино» выходит в прокат 1 января: сказка для всей семьи с посылом на все времена

Новый «Буратино» выходит в прокат 1 января: семейная сказка с посылом на все времена

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