Как написать макрос для браузера
Различные офисные пакеты включают инструменты для записи макросов, с помощью которых пользователи могут записывать ряд выбранных опций и действий в приложениях. Например, вы можете записать макрос, который добавляет номера страниц и заголовок к документу. Затем вы можете воспроизвести макрос, чтобы добавить один и тот же шаблон страницы в несколько документов. Однако, помимо офисных пакетов, макро инструменты не были широко включены в альтернативное программное обеспечение. Таким образом, Google Chrome, Firefox, Opera, Edge и другие браузеры не содержат встроенных макропрограмм.
Инструменты записи макросов в браузере наверняка пригодятся. С их помощью вы можете записывать макросы, открывающие группу страниц, вместо поиска по закладкам и открытия каждого сайта отдельно. Или вы можете записывать макросы, которые входят на веб-сайты или воспроизводить видео на YouTube. Так как Google и компания не добавили параметры макроса в свои браузеры, Alertsite и Ipswitch разработали расширения Chrome, которые записывают действия веб-браузера. Вот как вы можете записывать макросы с помощью DéjàClick и iMacros.
Как записать действия веб-браузера в Chrome
- Запись макросов с помощью DéjàClick
- Запись макросов с помощью iMacros
1. Запись макросов с помощью DéjàClick
DéjàClick – это одно расширение Chrome и Firefox, которое позволяет записывать в браузере указатель и щелчок для создания веб-скриптов. Вы можете добавить его в Chrome, открыв эту страницу и нажав там кнопку + Добавить в Chrome .
2. Запись макросов с помощью iMacros
IMacros – это еще одно расширение, в которое можно записывать макросы Chrome, аналогичное DéjàClick. Откройте эту страницу iMacros, чтобы добавить расширение в Google Chrome.
DéjàClick и iMacros – два лучших расширения для записи макросов для Google Chrome, Firefox и Internet Explorer. С этими расширениями вы можете записывать макросы, которые открывают группу веб-сайтов, заполнять формы, вводить ключевые слова в поисковых системах, заполнять поля журнала веб-сайтов и многое другое! Вы также можете записывать макросы для Windows с помощью некоторых программ, упомянутых в этой статье.
Примечание редактора . Этот пост был первоначально опубликован в марте 2017 года и с тех пор был полностью переработан и обновлен для обеспечения свежести, точности и полноты.
LibreOffice — это сила. С помощью этого пакета можно делать практически все: вести бухгалтерский учет, рисовать векторную графику, администрировать базы данных, писать HTML-код, создавать визитки и прочее, прочее, прочее. LibreOffice Basic — это тройная сила, так как она позволяет делать то же самое в разы быстрее и легче. Как пользоваться столь бесценным творением, расскажет эта статья.
warning
Что такое LibreOffice
Пакет свободного ПО для работы с документами. Появился в 2010 году, но уже успел завоевать бешеную популярность во всем мире. С помощью его можно создавать и редактировать файлы чуть менее сотни различных форматов, в том числе документы Microsoft Office (.doc, .docx, .xls, .xlsx). Есть версии для Windows, Linux и OS X.
Еще LibreOffice можно установить на сервер и запускать в браузере. Для этого сервер должен управляться Linux и на нем должна быть установлена библиотека GTK3 (она нужна для трансляции графики в HTML5).
Программный пакет включает в себя следующие компоненты:
- Text — аналог Word;
- SpreadSheet — аналог Excel;
- Presentation — аналог PowerPoint;
- Drawing — векторный графический редактор;
- Database — панель управления базами данных, можно использовать для управления локальными базами (dBase) данных или для администрирования удаленных (MySQL, Oracle и другие);
- визуальный HTML-редактор;
- редактор формул;
- мастер по созданию визиток.
Специально для тебя мы сделали подборку исходников макросов для LibreOffice. Ищи их в репозиториях GitHub к этому номеру.
.bash и LibreOffice
Создавать и редактировать документы LibreOffice можно напрямую из shell, используя LibreOffice API. В качестве примера сконвертируем ODT-файл в docx:
Языки, на которых можно написать макрос
Для написания макросов на этом языке не нужно устанавливать никаких дополнений. Пакет LibreOffice Basic поставляется с обширной коллекцией примеров кода для разных ситуаций, и этот способ автоматизации отлично документирован на сайте проекта. Большая часть нашей статьи посвящена этому способу.
Открываем менеджер макросов
Другие статьи в выпуске:
Этот способ достался в наследство от OpenOffice (проект курировала компания Oracle). BeanShell — это скриптовый язык, созданный для тестирования и отладки Java-программ. Для написания макросов на этом языке необходимо изменить установить соответствующее расширение goo.gl/OzHo1W.
Кнопка Edit неактивна. С Python все не так просто
Для того чтобы автоматизировать работу с LibreOffice на Python, нужно установить соответствующее дополнение:
Если ты используешь LibreOffice под Windows, тогда надо установить это дополнение через Tools → Options → LibreOffice → General.
После установки можно редактировать Python-макросы из встроенного редактора.
Java Script
C JS ситуация аналогична ситуации с Python. Для выполнения макросов требуется установить libreoffice-script=provider-js.
Соответственно, для Windows способ установки также аналогичен предыдущему пункту.
Как и в MS Office, в LibreOffice есть возможность записывать макросы. Это можно сделать через пункт меню Record Macro.
Можно настроить несколько способов вызова макроса:
- из пункта меню;
- сочетанием клавиш;
- по событию;
- по гиперссылке;
- по элементу картинки;
- по форме или ее части.
Примеры макросов:
Встроенный шаблон макроса, производящего замену одного символа на другой во всем документе. Как‑то подозрительно много букв
В принципе, на LibreOffice Basic можно имитировать любые действия пользователя. Для наглядности приведем примеры автоматизаций для различных компонентов LibreOffice.
Hello world
Пример простейшего макроса для вывода сообщения с текстом:
Редактор макросов А вот макрос вставляет в конец текстового документа строку, отформатированную определенным образом:
SpreadSheet
Этот код красит первую ячейку во втором листе в книге в черный цвет:
UNO — компонентная модель для взаимодействия объектов в OpenOffice и LibreOffice. Для программного управления этой моделью существуют UNO API. С помощью его производится обращение к LibreOffice из сторонних скриптов (Python, JS и BeanShell).
Presentation
Макрос для создания нового слайда в презентации:
Drawing
Этот макрос удаляет все линии с рисунка. Когда это может пригодиться? Допустим: нарисовали 30-страничную схему, где линиями соединены все объекты. Потом пришел твой шеф и сказал: «Нафиг линиями? И без них все понятно!»
Аналогичным образом можно удалить все стрелочки или другие фигуры.
Автоматизация OpenOffice
Если ты олдфаг, привык к OpenOffice и не хочешь менять его не на что‑то другое, это не лишает тебя возможности автоматизировать свою работу. Многие примеры из этой статьи будут работать в этом пакете. А документации по автоматизации OpenOffice гораздо больше, чем по LibreOffice. Вот ссылка на отличный FAQ, в котором есть ответы на все вопросы по автоматизации OpenOffice:
Database
С помощью макросов можно выполнять запросы к базам данных (предварительно необходимо установить соединение с database-сервером):
Pandoс
Утилита для обработки текстовых файлов. Она может конвертировать Markdown, LaTeX и HTML в целый калейдоскоп различных форматов. Вот некоторые из них:
- PDF;
- MediaWiki;
- DocBook;
- EPUB;
- Docx;
- ODT;
- HTML-слайды презентаций.
Заключение
LibreOffice Basic синтаксически идентичен VBA и всем остальным разновидностям бейсика, с которыми многим из нас пришлось столкнуться в школе и институте. Но не надо ставить LOB на один уровень с его братом от Microsoft. Во‑первых, редактор макросов в LB гораздо дружественнее и терпимее к промахам пользователя. В частности, в случае ошибки не надо гуглить ее код по форумам в стиле «информатика для школьника», чаще всего понять, что не так, можно, не выходя из окна с кодом. Во‑вторых, выполнение макроса никогда не парализует работу компьютера (как это иногда может сделать бесконечный цикл в VBA). А в‑третьих, благодаря возможностям UNO API автоматизировать можно почти все что угодно.
Доброго времени суток, дорогие друзья, знакомые и прочие личности, которым довелось читать этот материал.
Сегодня в объектив камеры нашего проекта попала тема из разряда бонусов для пользователя или так называемых "облегчалок" работы в повседневно-бытовой юзеровской жизни. Последняя связана непосредственно с путеводителем по интернету - браузером, причем не просто каким-то браузером, а многими любимым, единственным и неповторимым огненным лисом - Firefox , про который написано множество статей, особенно востребованные из которых были про плагины или оптимизацию.
Так вот, очередная примочка, расширение или, попросту, плагин, думаю, точно не оставит равнодушным всех поклонников Firefox (и не только их, но и всех остальных). Ибо вещь очень полезная, неординарная и порой совершенно незаменимая под рукой.
Ну что, поехали осваивать..
iMacros: функционал, основные возможности и принцип работы. Автоматизируем действия в интернете
Вообще, думаю, ни для кого не секрет, что плагины это такие «плюшки», которые позволяют улучшить жизнь обычного интернет-пользователя, будь то визуальная составляющая браузера (в виде изменения внешнего вида) или же более тонкая материя – оптимизация работы (см.ссылку выше по тексту), взятие на себя определенных функций, обязанностей, рутинных операций, которые совершаются неоднократно.
Вашего покорного слугу, как уже говорилось выше, частенько напрягало вводить одни и те же пароли (даже не смотря на функцию запоминания), забивать однотипные «ФИО-формы» или формы логинов (и т.п.) при веб-серфинге по различным сайтам сети. Всегда хотелось, чтобы под рукой был некий виртуальный помощник, готовый подставить плечо в деле решения постоянно повторяющихся (бытовых) задач и сказать: « Хозяин, хватит делать все самому, предоставь это мне! ».
И хочу Вам сказать, что мои поиски такого помощника не были напрасны, ибо решение такое есть и зовется оно плагин iMacros для Firefox. К слову сказать, это даже не плагин, а целый комбайн решений, который можно поистине назвать палочкой-выручалочкой в деле автоматизации многих рабочих процессов web -браузера. Которым я и хочу с Вами поделиться.
И чтобы Вы как-то смогли убедиться, что это не просто красивые слова, рассмотрим заявленные разработчиком возможности.
Итак, замечательный плагин iMacros позволяет/осуществляет:
- Автоматизировать свою деятельность, записывая и воспроизводя повторяющиеся действия пользователя;
- Заполнение форм данных, запоминание паролей, которые в интерактивном режиме вводятся в поля;
- Извлечение, сбор и исследование данных - специальная команда автоматически читает данные с сайта и экспортирует их в CSV -файл, действуя аналогично заполнению форм;
- Тестирование web-приложений;
- Автоматический вход в почту или другие часто посещаемые сайты;
- Автоматическую выгрузку и загрузку - автоматизация загрузки изображений, файлов или целых страниц;
- Возможность переноса файлов макросов с одного ПК на другой с последующим их воспроизведением;
- Безопасное хранение паролей с использованием 256 -битного алгоритма шифрования;
- Делиться своими макросами;
- Сохранять и печатать веб-страницы;
- Редактировать сохраненные макросы;
- ..И многое другое.
Да, и еще, кроме всего прочего, этот плагин работает с самыми ходовыми браузерами, а именно, Mozilla Firefox, Google Chrome (и др. на основе Chromium ), многострадальным Internet Explorer и, кроме того, не гнушается таких ОС , как Windows, Mac , Linux.
Собственно, если по-простому, то можно сказать, что это некий рекордер записи Ваших действий, который неусыпно следит за каждым Вашим шагом. Впоследствии он предлагает воспользоваться уже готовым решением по выполнению той или иной уже совершенной операции/действия (во замудрил-то :-)).
Итак, функциональные возможности рассмотрели, осталось сказать пару слов о самом алгоритме работы программы. Выглядит он следующим образом.
Есть действия, которые требуют Вашего постоянного участия (ввод логина/пароля авторизации, заполнение формы данных и многое много многое прочее). Так вот, как минимум iMacros берет и записывает все действия, по Вашему желанию, в специальный макрос, который потом пользователь может запустить одним кликом и автоматически выполнить всю цепочку записанных в него операций. Вот и всего делов-то! Удобно же.
Примечание:
Макрос – это набор инструкций, в которых говориться, какие действия необходимо выполнить, чтобы достигнуть определенной цели.
Освоение подопытного или что из себя представляет плагин iMacros
Для начала работы с iMacros нужно сначала обзавестись, т.е. скачать (во как :)) сие расширение. Для этого проходим по ссылке и кликаем по зеленой кнопке с надписью « Добавить в Firefox ».
После загрузки нажимаем « Установить сейчас » и перезапускаем нашего огненного лиса (ну или лисичку, у кого как).
При повторном заходе нас отправляют прямиком на страницу плагина, где сообщают, что последний успешно установлен и предлагают пройтись по мануалам на английском языке, а так же, что для активации модуля необходимо либо кликнуть по соответствующему значку на панели инструментов браузера, либо жмякнуть F8 (см. изображение).
Итак, после активации слева (от основной рабочей области браузера) появляется специальная форма плагина (см. изображение).
Форма представляет собой две области, одна из которых предназначена для работы с уже готовыми демо-шаблонами ( 1 ), а вторая ( 2 ) – для создания/работы/редактирования с будущими макросами. Готовые шаблоны содержат список демо-скриптов, которые позволяют разобраться в работе модуля, а это: различные фреймы, фильтры, заполнение полей, табы и т.п.
Вот, например, один из макросов (" SavePDF ") запущен на выполнение (см. изображение).
Конечно, на первый взгляд всё кажется непонятным, да и, отчасти, это так и есть, однако после ознакомления с видеоинструкциями из раздела поддержки становятся понятными механизмы работы со скриптами. Ну и примеры стоит посмотреть, да. В общем, не забывайте про раздел iMacros Suppor t. Если владеете английским, тогда посетите более подробный информационный ресурс с описанием работы iMacros (или он же через вкладку « Редактирование » - «П омощь »). Для тех же, кто не владеет - еще всё впереди, у нас еще будет некое количество статей по этой теме.
Ну да ладно, пробежимся по настройкам и перейдем непосредственно к практике, дабы посмотреть, на что сие чудо годится.
Итак, кликаем по вкладке « Редактирование », переходим в « Опции » и настраиваем необходимые параметры (см. изображение).
Панель « Опции » имеет 5 вкладок с настройками, но нам необходимо лишь проделать следующие действия (см. изображение):
- Вкладка « General » - поставить скорость воспроизведения в положение « Среднее » ( 1 ). Это оптимальный вариант по скорости выполнения макроса. Впрочем, если Вам потребуется более быстрое или медленное воспроизведение, то, как Вы понимаете, это всегда можно изменить;
- Вкладка « Security » - можно указать необходимость шифрования паролей, которые будут запоминаться плагином. Это нужно для того, чтобы исключить возможность несанкционированного использования макросов, которые находятся на общих сетевых ресурсах. Придумайте основной пароль и введите его в поле « Enter master password.. » ( 2 ), если необходимо;
- Изменить (если не устраивают) рабочие папки сохранения для макросов/данных/закачек, вкладка « Path » ( 3 ).
Теперь окунемся в практику и рассмотрим парочку реальных примеров из жизни.
iMacros: запись и воспроизведение действий
Допустим, нам необходимо разгрести электронный почтовый ящик или оплатить какую-то услугу, но вот незадача - все пароли и явки (регистрационные данные) вылетели из головы или просто вводить их решительно лениво. Что делать?
Можно раз и навсегда решить эту проблему с помощью iMacros путем записывания всех наших действий (единожды) и последующим просмотром, так сказать, увлекательного кино со стороны, в качестве зрителя. Т.е. мы забиваем все пароли/логины в формы один раз, и уже потом нет нужды хранить все в голове или еще где-то.
Итак, переходим на web -страницу ресурса, форму которого нам надо заполнить. Допустим, мы хотим попасть на всеми нами любимый форум проекта [Sonikelf's Project's], для чего идем по этому адресу Fорум Sис.Админа и начинаем записывать свои действия путём предварительного нажатия кнопки « Запись » (см. изображение).
Примечание:
При клике по кнопке « Запись » вылетит предупреждение – хотим ли мы закрыть все формы до начала записи, нажимаем - « Нет ».
После этого панель расширения iMacros начнет фиксировать и преобразовывать все наши манипуляции на сайте в свой внутренний, машинный макроязык (см. изображение). Важно иметь это в виду и не делать ничего лишнего из того, что Вы не хотели бы добавлять в макрос и последовательность действий.
Наблюдается интересная картина: мы сидим, ничего не делаем, а кто-то тем временем, используя наш логин и пароль, заходит на форум FS . Что за дела? ;)
Также можно редактировать любой макрос (ведь все данные хранятся в текстовом виде) путем нажатия правой кнопкой мыши и выбора пункта « Редактировать » из выпадающего меню. Но для этого надо знать код и синтаксис, чему можно будет обучиться или внимательно следя за тем, что записывается после каждого действия, или изучая вышеупомянутую англоязычную поддержку.. Или же попросту дожидаясь новых статей на проекте. Впрочем, кусочек синтаксиса мы сегодня расскажем.
Опять же, по желанию макрос возможно добавить в закладки браузеров Firefox , Chrome. Созданный макрос можно выбрать из этого выпадающего меню, дабы потом просто щелкать по нему как по вкладке и наблюдать за процессом. Изменив же путь Paths (вкладка « Редакт .» - « Опции ») и указав общедоступную сетевую (или обычную) папку, можно делиться макросами с другими пользователями по локальной сети.
В общем, благодаря описанной выше последовательности действий таким нехитрым способом можно автоматизировать любой процесс, так или иначе связанный, скажем, с заполнением форм данных.
Итак, приведу еще один пример, как можно использовать сей инструмент в повседневной жизни некоторых людей.
iMacros для браузерных онлайн-игр
Сейчас все популярнее становятся браузерные онлайн-игры. В некоторых из них смысл игры заключается в том, чтобы выполнять определенные (чаще всего однотипные) действия через какой-то заданный промежуток времени. Так вот, чтобы автоматизировать сей процесс, достаточно всего лишь один раз выполнить всю последовательность действий в игре, записать макрос, задать время повторения и передать вожжи управления самому плагину. Кроме того, есть игры, которые приносят реальный доход, т.е., допустим, Вы развиваете персонажа/город и т.п. и получаете определенные цифровые "ништяки" (иногда в виде электронных денег) от спонсора. Так вот, поставьте этот процесс на автопилот и займитесь своими делами.
Теперь давайте рассмотрим базовые команды, которые позволяют работать с imacros, и разберемся, для чего они вообще нужны и за что отвечают. Ну и будем примерно знать, как писать или редактировать макросы вообще, опираясь на синтаксис.
iMacros: команды макросов и их синтаксис
Для начала рассмотрим список команд, позволяющих нам выполнять простейшие действия. Итак, команды следующие:
- ADD – добавление переменной. Позволяет также производить вычитание путем добавления отрицательного значения переменной и поддерживает внутренние переменные !VAR1, !VAR2, !VAR3 и !EXTRACT ;
- BACK – команда возврата на предыдущую страницу веб-сайта;
- CLICK - клик на HTML -элемент с заранее указанными X/Y координатами. Левый верхний угол страницы - нулевое положение системы координат. Необязательный атрибут CONTENT может использоваться для вставки текста в поле ввода. В основном команда используется в тех случаях, когда необходимо нажимать ссылку, название которой меняется, а координаты остаются неизменными;
- CLEAR – очищает все временные файлы на HDD, в том числе кэш браузера, куки, сохранённые пароли;
- PAUSE – остановка выполнения макроса до момента, пока пользователь не нажмет кнопку « Продолжить ». Команда полезна для отладки скриптов;
- REFRESH – обновляет текущее окно браузера по аналогии с кнопкой F5 ;
- SET – устанавливает пользовательские переменные от ! VAR0 до ! VAR9 (стандартные встроенные переменные - число, символ, набор символов);
- TAG - выбирает HTML- элемент из текущего сайта. Путем назначения параметров POS , TYPE , FORM и ATTR задается определение элемента. Если последний является ссылкой, то она будет нажата, т.е. команда TAG произведёт переход. Если выбранный элемент является формой ввода, то содержимое параметра CONTENT будет использовано для заполнения формы;
- TAB – позволяет сфокусироваться на определенной вкладке браузера;
- URL – осуществляет переход по заданной ссылке активной вкладки браузера;
- VERSION – команда (без которой не обходится ни один макрос), указывающая на версию iMacros , с помощью которой он был записан;
- WAIT - задержка по времени выполнения скрипта. Можно также задать определенный промежуток между командами Imacros -скрипта;
- ‘ – одиночная кавычка, указывающая на комментарий. Начав строку со знака « ‘ » все остальное игнорируется.
Мы рассмотрели сами команды, с помощью которых создаются макросы iMacros . Теперь чуть ближе познакомимся с их синтаксисом, дабы у Вас самих была возможность что-либо составить из этих команд и попрактиковаться.
Итак, идем по порядку.
Синтаксис команды ADD
« ADD result_var added_value», здесь:
- result_var - Одна из четырех внутренних переменных !VAR1, !VAR2, !VAR3 или ! EXTRACT ;
- added_value - Значение, которое будет добавлено к result_var
Пример: Вычитание двух переменных.
SET !VAR1 10
ADD !VAR1 -2
=> Content of !VAR1 is 8.
Синтаксис команды URL
Пример: Открыть локальный файл с сетевого диска E
Макрос:
URL GOTO=file:///E:/image/icon.jpg
URL GOTO=file:///E:/folder/index.html
Синтаксис команды CLICK
«CLICK X=n Y=m [CONTENT=some_content]» , здесь:
- X - Определяет горизонтальную координату элемента на сайте, который должен быть нажат;
- У - Определяет вертикальную координату элемента на сайте, который должен быть нажат;
- CONTENT - Указывает значение, которое отправляется при нажатии элемента.
Координаты (X/Y) нужного места, определяются с помощью специализированного софта.
Синтаксис команды SET
« SET var value », здесь:
- var - Имя встроенной переменной, от ! VAR0 до ! VAR9 , или переменной определенной пользователем;
- value – Присваиваемое значение
Пример: Установить значение « Заметки Сис.Админа » в переменную SET , а также цифровое значение задержки страницы, равное 100 секунд.
Макросы:
1. SET !VAR1 "Заметки Сис.Админа";
2. SET !TIMEOUT_PAGE 100
Синтаксис команды TAB
« TAB (T=n|OPEN|CLOSE|CLOSEALLOTHERS) », здесь:
- n – порядковый номер нужной вкладки;
- CLOSE – закрытие текущей вкладки;
- OPEN - открытие новой вкладку в фоновом режиме;
- CLOSEALLOTHERS - закрытие все вкладкок, кроме активной.
Синтаксис команды TAG
Пример: Загрузить файл « Filesonikelf . txt », расположенный на диске С .
Макрос:
TAG POS=1 TYPE=INPUT:FILE FORM=NAME:frm_upload ATTR=NAME:uploaded_file CONTENT=c:\Download\Filesonikelf.txt
Команда TAG позволяет запускать события, используя для этого значение EVENT: event_name для параметра CONTENT .
Синтаксис команды VERSION
« VERSION BUILD= », здесь:
Когда происходит запись макроса в iMacros , рекордер добавляет к нему атрибут " RECORDER=FX" , который не несет никакой командно-смысловой нагрузки.
Версия 7.03 (Build 1111 ), записана при помощи Firefox .
Уфф-ф, некоторые базовые команды и их синтаксис осилили, теперь конечно же не плохо было бы рассмотреть пару неиллюзорных примеров, да и вообще научиться создавать свои собственные макросы, основываясь на всех этих командах. И все это будет, правда уже в следующей статье, так сказать чисто практической, поэтому далеко не уходим, ждем продолжения.
А пока, как минимум изучите возможность записи действий, попробуйте что-то редактировать и тд и тп. В общем, инструмент полезный, так что есть смысл осваивать.
Послесловие
В заключении хотелось бы еще раз сказать, что iMacros действительно полезная в быту вещица, но таки, чтобы раскрыть потенциал оной в полном объеме, необходимо повозится с мануалами, изучить demo -ролики, ну и вручную создать пару-тройку своих скриптов (последний пункт уже наша забота). Ну, или использовать по минимуму, опираясь на встроенную, собственно, запись макросов. Думайте :) Мы же, если Вам это интересно, постараемся статьями рассказывать по этой теме всякие новые штуки.
Результатом же всех этих стараний, если Вы таки решитесь их проделать станет сэкономленное время и автоматизация многих повседневно-рутинных операций при работе с интернетом и браузером. А это, в свою очередь, означает, что высвободившееся время можно потратить с пользой, например чаще на изучение сайта Заметки Сис.Админа и читать больше интересных, полезных статей для своего развития :) ;)
PS: За существование данной статьи спасибо члену команды 25 КАДР
Белов Андрей (Sonikelf) Заметки Сис.Админа [Sonikelf's Project's] Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
Сейчас для браузера Mozilla Firefox существует огромное количество полезных расширений, добавляющих опции, которые изначально отсутствуют в веб-обозревателе. К числу подобных относится и iMacros. Этот инструмент позволит юзеру самостоятельно записать различные макросы или уже использовать готовые для молниеносного выполнения сложных действий. О работе с этим дополнением мы и хотим поговорить далее.
Используем расширение iMacros в Mozilla Firefox
Мы решили разделить содержимое этой статьи на шаги, чтобы более детально разобраться в каждом аспекте взаимодействия с расширением. Это поможет пользователю быстрее освоить принципы управления и понять, стоит ли вообще устанавливать iMacros в свой веб-обозреватель.
Шаг 1: Установка iMacros
Начнем с первого этапа, с которым столкнется каждый пользователь, желающий начать работу с iMacros. Установка практически ничем не отличается от других дополнений, но мы все же уделим этому процессу немного времени, чтобы самые начинающие разобрались с его выполнением.
-
Для начала запустите браузер, откройте меню, нажав на кнопку в виде трех горизонтальных полосок, а затем выберите пункт «Дополнения». Быстрый переход к этой вкладке осуществляется нажатием горячей клавиши Ctrl + Shift + A.
Теперь дополнение автоматически будет активировано, а вам останется лишь перейти к его использованию. Браузер перезагружать при этом не нужно, поскольку все изменения вступают в силу сразу же.
Шаг 2: Основные настройки
Пользователи, которые первый раз сталкиваются с подобными приложениями или установили его только для ознакомления, могут сразу переходить к следующему шагу, потому что глобальные параметры практически всегда остаются в состоянии по умолчанию. Однако если вы все же желаете что-то поменять, воспользуйтесь следующей инструкцией.
- Нажмите на значок расширения, который находится на верхней панели. В появившемся меню вас интересует пункт «Manage».
Теперь вам осталось выставить каждый параметр в соответствии со своими потребностями. Если в этом нет никакой необходимости, просто переходите к следующему этапу.
Шаг 3: Использование и редактирование шаблонных макросов
Сегодня мы разбираем бесплатную версию iMacros. В нее разработчики включили директорию, где присутствует множество демонстрационных скриптов с описанием их работы в виде комментариев. Это поможет начинающим освоить азы взаимодействия с приложением и даст возможность быстро корректировать какой-то макрос под себя.
-
При открытии меню управления расширением дополнительно запустится отдельное окно. Здесь в разделе «Bookmarks» откройте директорию «Demo-Firefox».
Шаблонные макросы созданы не только для того, чтобы ознакомить пользователя с возможностями расширения, они помогают быстрее изучить принцип создания собственного кода, взяв за основу как раз эти заготовки. Специально для этого разработчиками были созданы описания в формате комментариев в редакторе, поэтому не стоит пренебрегать ими при редактировании.
Шаг 4: Создание собственных макросов
В качестве последнего шага нашей сегодняшней статьи мы рассмотрим максимально простой пример создания собственных макросов наподобие того, как это было показано в шаблоне по одновременному открытию вкладок. Сейчас мы задействуем технологию записи, а если вы захотите работать в редакторе, используя синтаксис, прочитайте заключительный абзац ниже.
-
Откройте окно управления iMacros, где на вкладке «Record» нажмите на кнопку «Record Macro».
Что касается собственноручного создания скриптов через редактор, то для этого потребуется выучить синтаксис или одну из документаций поддерживаемых языков программирования. Более детальные инструкции и описания по этому поводу вы найдете на официальном сайте разработчиков iMacros. Рекомендуем ознакомиться с этой информацией тем юзерам, кто хочет на постоянной основе работать с рассмотренным расширением.
Сегодня вы узнали все об использовании iMacros в браузере Mozilla Firefox. Как видите, этот инструмент будет полезен многим юзерам, а также поможет значительно упростить выполнение ежедневных действий.
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Не так давно на Google+ появились игры. Прочитав топик об этом, я решил во что нибудь поиграть. Выбор пал на игру Diamond Dash. Через некоторое время игры программист во мне заговорил, что однотипные действия нужно автоматизировать. И вот что из этого вышло…
*Примечание: «руками» даже опытному игроку сложно набрать больше 400к
Раньше я никогда не сталкивался с задачами работы с экраном и мышкой. После непродолжительного гугления было решено для решения использовать язык макросов AutoIt.
Под катом вы найдете краткое описание игры, мой способ распознавания поля, алгоритм определения точки нажатия, и некоторое количество оптимизаций. А так же ссылку на github-репозиторий скрипта.
UPD Добавлено видео работы скрипта.
Краткое описание игры
Игра представляет из себя простую «кликни-на-область-больше-трех-квадратиков-одного-цвета» головоломку.
Есть поле 9 на 10, заполненное квадратиками 5 цветов. У нас есть одна минута на то, чтобы набрать максимальное количество очков. При нажатии на область из 3 или более одноцветных клеток, она исчезает, то что над ней проваливается, а сверху падает недостающее. Количество начисленных очков зависит от размера области: чем она больше — тем больше очков.
Кроме того, если делать клики быстро, и почти безошибочно, поле вокруг загорается, а каждое удаление(в данном случае взрыв), захватывает соседние с удаляемой областью клетки.
И наконец последняя особенность: наверху есть шкала с алмазом в конце, которая заполняется по мере уничтожения клеток(и уменьшается при ошибочных кликах). Когда она заполняется, на поле в случайном месте появляется горящий алмаз. При клике на него время останавливается, а сверху поля падает огненный шар, уничтожая все клетки в строке и столбце, где находился камень.
Определение координат окна
Эта часть была добавлена в самую последнюю очередь, до этого координаты угла были жестко прописаны в коде. Используется функция из сторонней библиотеки ImageSearch для поиска сохраненного шаблона 10 на 10 пикселей. Судя по всему, фон слегка меняется от игры к игре, потому что не любой кусок подходил.
На форумах повсеместно не рекомендуют использование ImageSearch из-за долгого времени работы. Но так как нам нужно определить координаты только один раз в начале игры, провисаний по времени можно не опасаться.
Распознавание цветов и сохранение скриншотов
Для определения цвета пикселя по его координатам в AutoIt есть функция PixelGetColor. Но как показала практика, измерение всего 90 пикселей занимает полторы секунды, что, конечно, не очень хорошо. Но справедливости ради надо сказать, что бот написанный с использованием этой функции набирал 400-600 тысяч очков, а это больше чем может набрать человек, даже при большой сноровке.
На форумах был найден метод сохранения текущего состояния монитора в Bitmap, используя WinAPI. Кстати, этот битмап, при необходимости(например для дебага), можно сохранить в файл функцией _ScreenCapture. Далее смотрим цвета 90 пикселей, расположенных по решетке и по ним строим таблицу цветов квадратиков.
- Func _GetField ( ByRef $aiField ) ; получение массива цветов поля
- ; получение BitMap-снимка экрана с помощью WinAPI
- Local $hWnd = WinGetHandle ( "Игры Google+ - Google Chrome" )
- Local $Size = WinGetClientSize ( $hWnd )
- Local $hDC = _WinAPI_GetDC ( $hWnd )
- Local $hMemDC = _WinAPI_CreateCompatibleDC ( $hDC )
- Local $hBitmap = _WinAPI_CreateCompatibleBitmap ( $hDC , $Size [ 0 ] , $Size [ 1 ] )
- Local $hSv = _WinAPI_SelectObject ( $hMemDC , $hBitmap )
- _WinAPI_BitBlt ( $hMemDC , 0 , 0 , $Size [ 0 ] , $Size [ 1 ] , $hDC , 0 , 0 , $SRCCOPY )
- _WinAPI_SelectObject ( $hMemDC , $hSv )
- _WinAPI_DeleteDC ( $hMemDC )
- _WinAPI_ReleaseDC ( $hWnd , $hDC )
- Local $L = $Size [ 0 ] * $Size [ 1 ]
- Local $tBits = DllStructCreate ( 'dword[' & $L & ']' )
- _WinAPI_GetBitmapBits ( $hBitmap , 4 * $L , DllStructGetPtr ( $tBits ) )
- ; определение цветов клеток
- For $iCol = 0 To $iNumCols - 1
- For $iRow = $iNumRows - 1 to 0 Step - 1
- ; замер цвета квадратика
- $iX = $iCornerX + ( $iCol * 40 ) + $iDeltaX
- $iY = $iCornerY + ( $iRow * 40 ) + $iDeltaY
- $iPixelColor = Mod ( DllStructGetData ( $tBits , 1 , $iY * $Size [ 0 ] + $iX ) , 0x1000000 )
- $aiField [ $iRow ] [ $iCol ] = _GetCheckColor ( $iPixelColor )
- Next
- Next
- ; удаление данных для избежаня утечки памяти
- _WinAPI_DeleteObject ( $hBitmap )
- _WinAPI_DeleteObject ( $hMemDC )
- _WinAPI_DeleteObject ( $tBits )
- EndFunc
Тут стоит оговориться, почему замер происходит всего по 1 точке. Этот метод был испробован мной в первую очередь, и остался в финальной версии. Между этими двумя моментами было испробовано довольно большое количество альтернативных способов, среди которых были: замер 64 точек на каждый квадратик(решетка 8 на 8) и различные усреднения полученных значений, случайный выбор координат для замера, хранение истории нескольких последних замеров для лучшей точности… Но все они оказались менее точными или удобными, чем самый первый способ.
Возможно, что так как я весьма далек от темы распознавания изображений, я не знаю чего-то простого, способного помочь мне в этом вопросе. В таком случае буду рад любым предложениям. =)
Определение одноцветной области по таблице цветов
Ну, и, наконец, осталось найти подходящее место и кликнуть туда. Для этого обходим поле снизу вверх (потому что все падает вниз, а значит снизу менее пусто чем сверху), и проверяем одноцветные части. Я делал это с помощью алгоритма безрекурсивного поиска в глубину (DFS). Вкратце суть такова: кладем в стек стартовую клетку, а дальше, пока стек не пуст, достаем из него текущую клетку и обходим ее соседей, при совпадении цвета кладем в стек. Ну да что говорить, код понятней. =)
- Func _DfsAreaSize ( ByRef $aiField , $iStartX , $iStartY ) ; нерекурсивный алгоритм поиска размера одноцветной области
- ; методом поиска в глубину
- Local $aiResult [ $iNumCols * $iNumRows ] [ 2 ] ; список клеток входящих в область
- Local $iResultSize = 0
- Local $afMap [ $iNumRows ] [ $iNumCols ] ; флаги пройденности
- For $iRow = 0 to $iNumRows - 1
- For $iCol = 0 to $iNumCols - 1
- $afMap [ $iRow ] [ $iCol ] = False
- Next
- Next
- $afMap [ $iStartX ] [ $iStartY ] = True
- Local $aiStack [ $iNumRows * $iNumCols ] [ 2 ] ; активный стек
- Local $iStackSize = 1
- $aiStack [ 0 ] [ 0 ] = $iStartX
- $aiStack [ 0 ] [ 1 ] = $iStartY
- While $iStackSize > 0
- $iStackSize -= 1
- $iX = $aiStack [ $iStackSize ] [ 0 ]
- $iY = $aiStack [ $iStackSize ] [ 1 ]
- $aiResult [ $iResultSize ] [ 0 ] = $iX
- $aiResult [ $iResultSize ] [ 1 ] = $iY
- $iResultSize += 1
- For $iDirection = 0 to 3 ; перебор 4 рядомстоящих клеток
- Local $iNewX = $iX
- Local $iNewY = $iY
- Switch $iDirection
- Case 0
- $iNewY += 1
- Case 1
- $iNewY -= 1
- Case 2
- $iNewX += 1
- Case 3
- $iNewX -= 1
- EndSwitch
- If ( $iNewX >= 0 And $iNewX < $iNumRows And _
- $iNewY >= 0 And $iNewY < $iNumCols And _
- Not ( $afMap [ $iNewX ] [ $iNewY ] ) And $aiField [ $iNewX ] [ $iNewY ] = $aiField [ $iStartX ] [ $iStartY ] ) Then
- $afMap [ $iNewX ] [ $iNewY ] = True
- $aiStack [ $iStackSize ] [ 0 ] = $iNewX
- $aiStack [ $iStackSize ] [ 1 ] = $iNewY
- $iStackSize += 1
- EndIf
- Next
- WEnd
- Return $iResultSize
- EndFunc
Оптимизации
Оптимизация 1. Алмазики
Написанного выше уже хватало для получения миллиона. Но мне хотелось больше. Самым большим недостатком вышеописанного алгоритма было, пожалуй, неумение определять алмазы. Поэтому под конец минуты поле выглядело примерно так:
А между тем, алмазы — очень полезная вещь, потому что пока падает огненный шар, таймер останавливается, а квадратики падают. А значит пробелы заполняются, и ошибок будет меньше.
Для определения алмазов для начала пришлось поиграть с координатами замеров, чтобы цветные клетки определялись корректно, а алмазы — не попадали ни под один из их цветов. После этого создаем массив $aiDiams размером 3 (будем проверять только нижние 3 строки, потому что все алмазы рано или поздно туда упадут) * ширину (в нашем случае — 10). При каждом замере просматриваем нижние 3 строки, и если ячейка определилась, то обнуляем соответствующее место в $aiDiams, иначе инкрементируем его. Таким образом для клеток с алмазиками значения будут велики. При накоплении некоего порога, кликаем.
- For $iRow = $iNumRows - 1 to $iNumRows - 3 Step - 1
- For $iCol = 0 to $iNumCols - 1
- If $aiField [ $iRow ] [ $iCol ] <> 0 Then
- $aiDiams [ $iRow ] [ $iCol ] = 0
- Else
- $aiDiams [ $iRow ] [ $iCol ] += 1
- If $aiDiams [ $iRow ] [ $iCol ] > 15 Then
- MouseClick ( "Left" , $iCornerX + 30 + ( $iCol * 40 ) , $iCornerY + 10 + ( $iRow * 40 ) , 1 , $iMouseSpeed )
- $aiDiams [ $iRow ] [ $iCol ] = 0
- Sleep ( 500 )
- Return 0
- EndIf
- EndIf
- Next
- Next
Оптимизация 2. Over Explosion
Оптимизация 3. Область последнего клика
Защита от повторной ошибки, в эффективности которой я не уверен. Дело в том, что в самой игре при ошибке клетка становится серого цвета, а серый цвет алгоритмом определяется как неопределенный (тавтология получилась =) ). Но хуже эта проверка точно сделать не может, поэтому пусть живет.
Суть в том, что при каждом клике сохраняем область, по которой кликаем, и при следующем клике не трогаем ее.
Вместо постскриптума. Пара слов об AutoIt
Читайте также: