[ZennoPoster] Швейцарский нож разработчика - ZennoExtensions

  • Автор темы I AM
  • 882
  • Обновлено
  • 07, May 2018
  • #1
[ZennoPoster] Швейцарский нож разработчика





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

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

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

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

—————————————————————————————————

- Большой объем однотипного кода

- Плохочитаемый код

-Трудности с поиском и исправлением багов

Рассмотрим небольшой кусок кода, который загружает страницу Яндекса, вводит поисковой запрос и нажимает кнопку поиска.

Примечание: здесь и далее приведенный код написан на языке C#.

Блоки кода PHP используются только для подсветки синтаксиса ввиду отсутствия блоков C#.

Как это выглядит в коде:

Наверняка подобный код вам знаком.

Проверка загрузки страницы, проверка найденных элементов на странице.

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

Так почему бы не сделать эту рутину менее утомительной?

Взгляните на этот код, который делает то же самое, что и код выше:

Такой код гораздо компактнее, быстрее пишется и проще читается.

Вы сможете конструировать подобный код с помощью библиотеки ZennoExtensions.



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



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



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



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



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



Что представляет из себя библиотека ZennoExtensions? ZennoExtensions - DLL библиотека, расширяющая стандартный набор методов классов ZennoPoster.

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

Содержимое

—————————————————————————————————

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

Instance, Project, Tab, HtmlElement, LocalVariable

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

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

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

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

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



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

Большинство из методов расширений в библиотеке реализованы в стиле 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.

Также можно добавить в мультилогер свой вариант логирования, например, в БД.

Класс мультилогера предоставляет возможность логирования в режиме разработки, логи будут писаться только при откладке из ProjectMaker или CodeCreator.

PHP:

// Сообщение будет выведено только если исполняемой средой является ProjectMaker или CodeCreator

logger.MultiLogDebug("Тестовая запись в лог");





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

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

Особенности

—————————————————————————————————

- Файл аккаунтов не подвергается изменениям

- Для файла аккаунтов создается свой файл конфигурации, в котором содержатся все необходимые данные для последовательного выполнения аккаунтов как при работе в одном, так и в нескольких потоках

- Аккаунты для работы распределяются равномерно - не возникнет такой ситуации, что один аккаунт отработает 10 раз, а другой 15

- Для каждого аккаунта можно сохранять дополнительную информацию





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

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

Генерируемые параметры

—————————————————————————————————

- Используемый браузер (Firefox, Chrome)

- Используемое устройство (на данный момент только Windows)

- Настройки браузера:

- Использование JavaScript

- Блокировка рекламы

- Использование веб хранилищ (LocalStorage, SessionStorage, Global Storage, Database Storage)

- Использование IndexedDB

- Использование WebGL

- Использование плагинов

- DoNotTrack

- Подмена часового пояса

- Эмуляция WebRTC

- Эмуляция Canvas

- Свойства навигатора и HTTP заголовки

- UserAgent

- Language





Парсер строк Данный класс-помощник позволяет в удобном формате работать с элементами строк.

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

Это добавит гибкости в настройке и избавит от подстраивания используемых файлов под ваш шаблон.
Библиотека ориентирована на версию ZennoPoster 5.10.6.0 и выше. https://skladchik.com/threads/zennoposter-%D0%A8%D0%B2%D0%B5%D0%B9%D1%86%D0%B0%D1%80%D1%81%D0%BA%D0%B8%D0%B9-%D0%BD%D0%BE%D0%B6-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0.177992/

Скрытая информация :: Авторизуйтесь для просмотра »

I AM


Рег
23 Jul, 2011

Тем
49554

Постов
57426

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

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

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


Рассмотрим небольшой кусок кода, который загружает страницу Яндекса, вводит поисковой запрос и нажимает кнопку поиска. Такой код гораздо компактнее, быстрее пишется и проще читается. Вы сможете конструировать подобный код с помощью библиотеки ZennoExtensions.
Продукт складчины состоит из следующего - DLL файл библиотеки ZennoExtensions - Файлы проекта с исходным кодом для самостоятельного изучения и доработки - Документация и инструкции по использованию - Демо шаблоны с примерами использования, открытые для просмотра
Что представляет из себя библиотека ZennoExtensions? ZennoExtensions - DLL библиотека, расширяющая стандартный набор методов классов ZennoPoster.

С ее помощью вы сможете разрабатывать шаблоны быстрее, повысить удобство разработки и качество продуктов, улучшить отладку и исправление багов. Содержимое - Методы расширения для работы с типами ZennoPoster: Instance, Project, Tab, HtmlElement, LocalVariable

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

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

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

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

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

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

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

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

Участники складчины будут получать обновления бесплатно и смогут вносить предложения по доработке.

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


Скачать: Скрытая информация :: Авторизуйтесь для просмотра »
 

iic_ax


Рег
13 Nov, 2007

Тем
0

Постов
1

Баллов
1
Тем
49554
Комментарии
57426
Опыт
552966