- Регистрация
- 09.10.2015
- Сообщения
- 3 916
- Благодарностей
- 3 867
- Баллы
- 113
Расширенный вариант работы с профилями в ZennoPoster. Возможность сохранять не только информацию о профиле в *.zpprofile, но и заголовки инстанса, устанавливаемые методом instance.SetHeader.
Библиотека сделана для исправления появившейся в 5.10.3.1 версии баги, из-за которой перезаписываются некоторые данные при сохранении профиля (пруф баги). Скорее всего похожие проблемы могли быть и на других версиях, но тому нет точного подтверждения.
Версия v2.0: http://zennolab.com/discussion/threads/xaljava-biblioteka-profileactions-rasshirennaja-versija-standartnyx-profilej-zpprofile.34908/#post-261645 - теперь не нужно думать о потоках и работе в многопотоке. Библиотека и C# сами разруливают это, теперь работа с библиотекой стала на порядок проще и логичнее.
Установка
Т.к. пути и версии библиотеки будут периодически меняться - вот ссылка на репозиторий с исходным кодом: https://github.com/lord-alfred/ProfileActions - там всё будет обновляться регулярнее.
Методы ProfileActions
Для быстрого понимания - в репозитории расположен тестовый проект test_project.xmlz.
Список свойств профиля, которые можно устанавливать - можно взять отсюда: Profile Public Properties.
Параметры:
project - переменная проекта
propname - имя свойства
value - значение свойства
Пример использования:
Параметры:
propname - имя свойства
Пример использования (переменная result должна быть создана заранее):
Расширенный вариант стандартного метода 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-заголовка
Примеры использования:
Параметры:
project - переменная проекта
path - полный путь к файлу профиля (вместе с расширением)
saveProxy - сохранять прокси
savePlugins - сохранять список плагинов
saveLocalStorage - сохранять содержимое localStorage
saveTimezone - сохранять информацию о таймзоне
saveGeoposition - сохранять геопозицию
Пример использования:
Параметры:
project - переменная проекта
instance - переменная инстанса
path - полный путь к файлу профиля (вместе с расширением)
Пример использования:
Лицензия
CC BY-NC-SA 3.0 (Creative Commons — «Attribution-NonCommercial-ShareAlike» 3.0)
Лицензия «С указанием авторства — Некоммерческая — С сохранением условий»
Даная лицензия позволяет другим людям редактировать, поправлять и брать произведение за основу для производных в некоммерческих целях при условии, что они указывают авторство и лицензируют свои новые произведения на тех же условиях.
PS: в топике можете написать идеи что ещё туда можно внедрить, связанного с профилем. Например, пофиксить что-нибудь или сохранять ещё какие-то дополнительные данные для профиля. Если идея получит много "спасибо", то я её реализую
Библиотека сделана для исправления появившейся в 5.10.3.1 версии баги, из-за которой перезаписываются некоторые данные при сохранении профиля (пруф баги). Скорее всего похожие проблемы могли быть и на других версиях, но тому нет точного подтверждения.
Версия v2.0: http://zennolab.com/discussion/threads/xaljava-biblioteka-profileactions-rasshirennaja-versija-standartnyx-profilej-zpprofile.34908/#post-261645 - теперь не нужно думать о потоках и работе в многопотоке. Библиотека и C# сами разруливают это, теперь работа с библиотекой стала на порядок проще и логичнее.
Установка
Т.к. пути и версии библиотеки будут периодически меняться - вот ссылка на репозиторий с исходным кодом: https://github.com/lord-alfred/ProfileActions - там всё будет обновляться регулярнее.
Методы ProfileActions
Для быстрого понимания - в репозитории расположен тестовый проект test_project.xmlz.
- Установка значения свойства профиля
C#:
void SetProperty(IZennoPosterProjectModel project, string propname, string value)
Параметры:
project - переменная проекта
propname - имя свойства
value - значение свойства
Пример использования:
C#:
ProfileActions.SetProperty(project, "UserAgent", "Firefox");
- Получение значения свойства профиля
C#:
string GetProperty(string propname)
propname - имя свойства
Пример использования (переменная result должна быть создана заранее):
C#:
project.Variables["result"].Value = ProfileActions.GetProperty("UserAgent");
- Установка значения заголовка инстанса
C#:
void SetHeader(Instance instance, string headername, string value, bool is_navigator_field=true)
Список заголовков инстанса, которые можно устанавливать - можно взять отсюда: 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-заголовка
Примеры использования:
C#:
ProfileActions.SetHeader(instance, "Language", "ru");
ProfileActions.SetHeader(instance, "HTTP_USER_AGENT", "ZennoPoster", false);
- Сохранение профиля со свойствами и заголовками инстанса
C#:
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 - сохранять геопозицию
Пример использования:
C#:
string path = Path.Combine(project.Directory, "profiles", "test_profile.zpprofile");
ProfileActions.Save(project, path, true, true, true, true, true);
- Загрузка профиля с простановкой свойств и заголовков инстанса
C#:
void Load(IZennoPosterProjectModel project, Instance instance, string path)
project - переменная проекта
instance - переменная инстанса
path - полный путь к файлу профиля (вместе с расширением)
Пример использования:
C#:
string path = Path.Combine(project.Directory, "profiles", "test_profile.zpprofile");
ProfileActions.Load(project, instance, path);
CC BY-NC-SA 3.0 (Creative Commons — «Attribution-NonCommercial-ShareAlike» 3.0)
Лицензия «С указанием авторства — Некоммерческая — С сохранением условий»
Даная лицензия позволяет другим людям редактировать, поправлять и брать произведение за основу для производных в некоммерческих целях при условии, что они указывают авторство и лицензируют свои новые произведения на тех же условиях.
PS: в топике можете написать идеи что ещё туда можно внедрить, связанного с профилем. Например, пофиксить что-нибудь или сохранять ещё какие-то дополнительные данные для профиля. Если идея получит много "спасибо", то я её реализую
Последнее редактирование: