[zennoposter] швейцарский нож разработчика

FUTIK

Проверенный
Сообщения
4
Реакции
0
Баллы
1
Credits
0


Проблемы при создании шаблонов?

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

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

Самые распространенные проблемы

Большой объем однотипного кода
Плохочитаемый код
Трудности с поиском и исправлением багов




Продукт складчины состоит из следующего

- DLL файл библиотеки ZennoExtensions

- Файлы проекта с исходным кодом для самостоятельного изучения и доработки

- Документация и инструкции по использованию

- Демо шаблоны с примерами использования, открытые для просмотра

Что представляет из себя библиотека ZennoExtensions?

ZennoExtensions - DLL библиотека, расширяющая стандартный набор методов классов ZennoPoster. С ее помощью вы сможете разрабатывать шаблоны быстрее, повысить удобство разработки и качество продуктов, улучшить отладку и исправление багов.

Содержимое

- Методы расширения для работы с типами ZennoPoster:

Instance, Project, Tab, HtmlElement, LocalVariable

- Модуль для работы с аккаунтами

- Модуль для работы с настройками браузера

- Модуль логирования

- Дополнительные классы-помощники

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



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

Большинство из методов расширений в библиотеке реализованы в стиле Fluent Interface.

Что такое Fluent Interface

Методы расширения библиотеки

В библиотеке представлены методы расширения для следующих классов:
- Instance (ZennoLab.CommandCenter.Instance)
- Project (ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel)
- LocalVariable (ZennoLab.InterfacesLibrary.ProjectModel.ILocalVariable)
- Tab (ZennoLab.CommandCenter.Tab)
- HtmlElement (ZennoLab.CommandCenter.HtmlElement)
- Некоторые системные типы

Проверка входных настроек

Рассмотрим использование методов расширения на примере проверки входных настроек шаблона.

Проверка входных настроек при запуске является хорошей практикой разработки шаблона.
Она несет следующие преимущества:

- Быстрая настройка и запуск шаблона за счет подробных уведомлений в логе
- Устранение багов из-за некорректно введенных данных
- Пользователи смогут понять и исправить свою ошибку во входных настройках не прибегая к вашей помощи
Принцип проверки состоит в том, чтобы проверять корректность всех введенных в настройках данных. Если какие-то данные введены не правильно, нужно оповестить об этом в логе и прекратить дальнейшее выполнение шаблона.

Для этого в библиотеке есть набор методов расширения для локальных переменных.
Методы можно соединять в цепочки вызовов для проверки переменной на соответствие нескольким условиям.

Здесь проверяются сразу 3 различных ситуации:

  • Задал ли вообще пользователь файл с аккаунтами. Если файл задан, переходим ко второму шагу.
  • Существует ли такой файл. Если файл существует, переходим к третьему шагу.
  • Есть ли в файле содержимое.
В случае если какое-то условие не выполнено, будет выведено Warning сообщение в лог и выкинуто исключение (экшн завершится по ветви BadEnd). Сообщение можно не указывать, тогда будет выдано исключение с сообщение по умолчанию. Но ваши сообщения помогут пользователю лучше понять в чем именно проблема.

А вот как выглядит логика проверки без использования библиотеки.

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



Мультилогер

В библиотеке представлен класс MultiLogger который позволяет удобно логировать в несколько мест одновременно. Одной строчкой кода вы можете записать сообщение в файл, вывести его пользователю в виде MessageBox и в лог ZennoPoster. Также можно добавить в мультилогер свой вариант логирования, например, в БД.



Менеджер аккаунтов

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

Особенности
—————————————————————————————————
- Файл аккаунтов не подвергается изменениям
- Для файла аккаунтов создается свой файл конфигурации, в котором содержатся все необходимые данные для последовательного выполнения аккаунтов как при работе в одном, так и в нескольких потоках
- Аккаунты для работы распределяются равномерно - не возникнет такой ситуации, что один аккаунт отработает 10 раз, а другой 15
- Для каждого аккаунта можно сохранять дополнительную информацию




Менеджер браузера

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


Генерируемые параметры
—————————————————————————————————
- Используемый браузер (Firefox, Chrome)
- Используемое устройство (на данный момент только Windows)
- Настройки браузера:
- Использование JavaScript
- Блокировка рекламы
- Использование веб хранилищ (LocalStorage, SessionStorage, Global Storage, Database Storage)
- Использование IndexedDB
- Использование WebGL
- Использование плагинов
- DoNotTrack
- Подмена часового пояса
- Эмуляция WebRTC
- Эмуляция Canvas
- Свойства навигатора и HTTP заголовки
- UserAgent
- Language




Парсер строк

Данный класс-помощник позволяет в удобном формате работать с элементами строк. С помощью него можно дать возможность пользователям самостоятельно указывать формат используемых ресурсов. Это добавит гибкости в настройке и избавит от подстраивания используемых файлов под ваш шаблон.

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

login;password:proxy



Библиотека активно используется и дорабатывается. Участники складчины будут получать обновления бесплатно и смогут вносить предложения по доработке. Помимо самой библиотеки всем участникам будет также доступен проект Visual Studio с исходным кодом, что даст возможность изучать и дорабатывать функционал самостоятельно.


Инструкция по разработке шаблонов через Visual Studio
Способы подключения библиотек к шаблону без использования ExternalAssemblies
Список полезных сервисов и инструментов для разработки
Подборка ссылок на обучающие материалы для самостоятельного изучения
Способы дополнительного заработка на шаблонах

Скачать:
Скрытое содержимое могут видеть только пользователь группы : Vip, Проверенный
 
Сверху