Code Monkey home page Code Monkey logo

profileactions's Introduction

ProfileActions v2.0

Расширенный вариант работы с профилями в ZennoPoster. Возможность сохранять не только информацию о профиле в *.zpprofile, но и заголовки инстанса, устанавливаемые методом instance.SetHeader.

Библиотека сделана для исправления появившейся в 5.10.3.1 версии баги, из-за которой перезаписываются некоторые данные при сохранении профиля (пруф баги). Скорее всего похожие проблемы могли быть и на других версиях, но тому нет точного подтверждения.

История версий

v2.0 [22.02.2017]:

По сути осталось всё тоже самое, за исключением того, что теперь не нужно думать о потоках и работе в многопотоке. Библиотека и C# сами разруливают это, теперь работа с библиотекой стала на порядок проще и логичнее.

Изменения:

  • Удален отовсюду параметр thread_id
  • Удален генератор идентификаторов GenerateThreadID
  • Удалена "очистка мусора" DestroyThreadID
  • Удален параметр destroy_thread в методе Save
  • Теперь свойства профиля и заголовки инстанса объявлены с [ThreadStatic]
  • Добавлен приватный метод инициализации свойств профиля InitProperies
  • Добавлен приватный метод инициализации заголовков инстанса InitHeaders

v1.0 [09.02.2017]:

Первая версия библиотеки

Установка

  1. Взять ProfileActions.dll и положить в директорию: C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\[версия ZP]\Progs\ExternalAssemblies
  2. Перезапустить ZennoPoster/ProjectMaker
  3. В проекте выбрать Добавить действие -> Свой код -> Ссылки из GAC
  4. Зайти в появившийся внизу блок References (в Расширенном редакторе), нажать кнопку Добавить..., затем кнопку Обзор...
  5. В появившемся окне выбрать: C:\Program Files (x86)\ZennoLab\RU\ZennoPoster Pro\[версия ZP]\Progs\ExternalAssemblies\ProfileActions.dll
  6. В проекте выбрать Добавить действие -> Свой код -> Директивы using и общий код
  7. Зайти в появившийся внизу блок OwnCodeUsings (в Расширенном редакторе) и в окне "Директивы Using" вставить:

using ZPProfileActions;

После этого у вас в код появится класс ProfileActions с публичными методами, описанными ниже.

Методы ProfileActions

Для быстрого понимания - в репозитории расположен тестовый проект test_project.xmlz.

  • Установка значения свойства профиля

void SetProperty(IZennoPosterProjectModel project, string propname, string value)

Список свойств профиля, которые можно устанавливать - можно взять отсюда: Profile Public Properties.

Параметры:

project - переменная проекта
propname - имя свойства
value - значение свойства

Пример использования:

ProfileActions.SetProperty(project, "UserAgent", "Firefox");

  • Получение значения свойства профиля

string GetProperty(string propname)

Параметры:

propname - имя свойства

Пример использования (переменная result должна быть создана заранее):

project.Variables["result"].Value = ProfileActions.GetProperty("UserAgent");

  • Установка значения заголовка инстанса

void SetHeader(Instance instance, string headername, string value, bool is_navigator_field=true)

Расширенный вариант стандартного метода instance.SetHeader, все устанавливаемые значения сохраняются в профиль.

Список заголовков инстанса, которые можно устанавливать - можно взять отсюда: NavigatorField Members.

Примечание: согласно стандартным ограничениям метода instance.SetHeader - текущий метод нужно вызывать перед вызовом любого другого метода объекта Instance.

Параметры:

instance - переменная инстанса
headername - заголовок инстанса (название поля ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField или просто HTTP-заголовок)
value - значение
is_navigator_field - true при установке поля ZennoLab.InterfacesLibrary.Enums.Browser.NavigatorField или false при установке HTTP-заголовка

Примеры использования:

ProfileActions.SetHeader(instance, "Language", "ru"); ProfileActions.SetHeader(instance, "HTTP_USER_AGENT", "ZennoPoster", false);

  • Сохранение профиля со свойствами и заголовками инстанса

void Save(IZennoPosterProjectModel project, string path, bool saveProxy=false, bool savePlugins=false, bool saveLocalStorage=false, bool saveTimezone=false, bool saveGeoposition=false)

Параметры:

project - переменная проекта
path - полный путь к файлу профиля (вместе с расширением)
saveProxy - сохранять прокси
savePlugins - сохранять список плагинов
saveLocalStorage - сохранять содержимое localStorage
saveTimezone - сохранять информацию о таймзоне
saveGeoposition - сохранять геопозицию

Пример использования:

string path = Path.Combine(project.Directory, "profiles", "test_profile.zpprofile"); ProfileActions.Save(project, path, true, true, true, true, true);

  • Загрузка профиля с простановкой свойств и заголовков инстанса

void Load(IZennoPosterProjectModel project, Instance instance, string path)

Параметры:

project - переменная проекта
instance - переменная инстанса
path - полный путь к файлу профиля (вместе с расширением)

Пример использования:

string path = Path.Combine(project.Directory, "profiles", "test_profile.zpprofile"); ProfileActions.Load(project, instance, path);

Контрибьютеры

  • DmitryAk, спасибо за помощь с рефлекшенами и ThreadStatic
  • тут может быть твой ник и ссылка на тебя ;-)

Лицензия

CC BY-NC-SA 3.0 (Creative Commons — «Attribution-NonCommercial-ShareAlike» 3.0)

Лицензия «С указанием авторства — Некоммерческая — С сохранением условий»

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

profileactions's People

Contributors

lord-alfred avatar

Watchers

Mikhail avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.