Automator: Пакетное извлечение иконок из мак-программ

Задача, которую выполняет описанный под катом процесс, весьма специфична. Вместе с тем, устройство приведенного алгоритма может быть полезным и в общеобразовательных целях.

Иконка Automator.

Как-то мне понадобилось извлечь из штатных программ Mac OS X их иконки, сохранив их в формате PNG. Я бы для этого использовал хорошо известный способ, если бы не одно но — программ было более трех десятков. Лень — двигатель прогресса, и памятуя эту умную мысль, вместо дурной механической работы, я попробовал найти решение, как бы ее автоматизировать.

Немного погуглив, набрел на алгоритм, который извлекал иконку только из одной программы. Убрав из него все лишнее и доработав, чтобы на входе принималось произвольное число приложений, у меня получилась такая служба:

Алгоритм процесса.

Как видно из скриншота, на входе служба принимает приложения, предварительно выделенные в окне «Файндера». На всякий случай из массива объектов отсеивается все, что не является программой, и запрашивается, в какую папку следует сложить готовые иконки.

Самое главное в этом алгоритме — shell-скрипт, именно он выполняет всю работу. В качестве входных аргументов он получает список путей к выделенным ранее приложениям, плюс путь к папке, куда вы решили сохранить иконки. Необходимо первое отделить от последнего: в переменную INPUTAPPS сохраняются пути к программам в виде массива строковых величин, а в переменной DESTINATION заносится путь к папке сохранения пиктограмм.

Теперь следует обработать каждый элемент массива INPUTAPPS. Первым делом определяется местоположение иконки внутри каждого приложения, для чего используется консольная команда basename извлекается название соответствующего приложения (переменная APPNAME), чтобы присвоить его будущей PNG-картинке. Эта же строка используется для формирования полного пути к картинке внутри указанной ранее папки (переменная OUTFILE). И теперь посредством консольной утилиты sips иконка программы сохраняется в формате PNG по сформированному только что адресу. Конец цикла — и новая итерация. Таким образом будут обработаны все программы, которые были выделены перед началом работы общего алгоритма службы «Автоматора».

В качестве индикатора завершения работы я использую всплывающее Growl-сообщение. Вот и все дела. 🙂 Работоспособность готовой службы можете проверить на своем Маке, скачав workflow-пакет по щелчку на нижеприведенной ссылке и скопировав его в каталог ~/Library/Services.

Загрузить архив (58 КБ).

P. S. Если у вас есть идеи, как можно оптимизировать shell-скрипт, буду рад узнать, что еще можно с ним сделать. 🙂


Редакция пока не поставила оценку
1 Star2 Stars3 Stars4 Stars5 Stars6 Stars7 Stars8 Stars9 Stars10 Stars (Пока не проголосовали)
Загрузка...
Читатели ещё не оценили запись, станьте первым!



Автор:
Маководом Саша стал семь лет назад, и с тех пор ни разу об этом не пожалел. Одно из его хобби — копаться в Мак-программах и искать простые решения повседневных задач маковода. О самом интересном он регулярно рассказывает на страницах «ПростоМАКа».

Комментарии

  1. +1 u0432 u043au0430u0440u043cu0443 🙂 u0410 u0442u043e u043du0430u0434u043eu0435u043bu043e u0440u0443u043au0430u043cu0438 u0438u0445 u0432u044bu0442u044fu0433u0438u0432u0430u0442u044c.u00a0

  2. усик говорит:

    Александр! где взять Automator? свой случайно удалил. И дисковод не работает.
    Для Mac OS 10.6.8 Снежный Леопард

Оставьте комментарий к усик Отменить комментарий

© 2011 Программы для Mac OS, iPhone и iPad