- Регистрация
- 24.05.2016
- Сообщения
- 214
- Благодарностей
- 431
- Баллы
- 63
Порой при работе необходимо оперировать кучей различных акков с одного профиля. Например в сеоспринт, где необходимо под один аккаунт сеоспринта иметь множество акков в различных соц.сетях Инстаграм, Гугл, ВК, ОК, ФБ, почта и т.д. Или с одного профиля Марфы Прошкиной размещать посты в разных соц.сетях. Держать всю эту инфу в списках и таблицах - не удобно. Связываться с базами данных многие боятся и не всегда это необходимо. Поэтому сохранять эту информацию в профили, которые у нас и так имеются - самое оно.
Сохранение информации в профили zpprofile пользователи просят уже давно. Была начата работа в нужном направлении http://zennolab.com/discussion/threads/xaljava-biblioteka-profileactions-rasshirennaja-versija-standartnyx-profilej-zpprofile.34908/#post-261645 , но до нужного пока как раз-таки и не добрались:
А решение данной задачи на мой взгляд элементарно!
Поняли к чему я веду? Мы можем записать в это поле любую информацию и забирать её от туда штатными средствами зенки в многопотоке без всяких сбоев!
Я бы предпочел размещать информацию в Interset
Но разработчики зенки где-то что-то не доглядели:
И обратиться к интересам мы не можем, но и не больно то и хотелось...
Кликаем правой кнопкой мыши на панельке и добавляем директивы:
Далее открываем общий код:
Добавляем в общий код:
В каждом снипете, где будем обращаться к дополнительным полям первой строчкой пишем:
Чтобы добавить значение в профиль используем метод:
Первый параметр vk_phone - это некий маркер (название поля).
Второй параметр - project.Variables["cfg_vk_phone"].Value - ваша стандартная переменная в Зеннопостере с именем cfg_vk_phone
Т.е. мы добавляем в поле project.Profile.SecretQuestionAnswer2 свои данные в виде:
[vk_phone/]79999999999[/vk_phone][vk_pass/]old_pass_vk[/vk_pass][ok_phone/]74444444444[/ok_phone][ok_pass/]old_pass_ok[/ok_pass]
и получаем некое подобие JSON или XML. Это общепринятый язык разметки под названием DTG (DoorwayTemplateGenerator).
После того как мы напихали всю эту порнографию в наш практически девственный SecretQuestionAnswer2 с этим надо как-то работать.
И забирать мы нужные нам данные будем методом
А для тех кто совсем не понимает, что с этим дальше делать, то даю готовую строку:
Строкой выше мы забираем из профиля в поле vk_phone ([vk_phone/]79999999999[/vk_phone]) нужные данные (79999999999) и помещаем их в переменную Зеннопостера project.Variables["cfg_vk_phone"].Value с именем cfg_vk_phone
Если вы хотите сделать определенные действия основываясь на наличие/отсутствие данных в профиле, то проверьте это поле на пустоту.
Например вы хотите зарегистрировать для профиля аккаунты ФБ, Твиттер, Инстаграм постепенно и не вести списки где уже зарегали, а где нет.
Данный снипет проверит есть ли запись в fb_phone и если её нет, то перейдет к следующему кубику для регистрации аккаунта. Если же в поле будут данные (не пустые), то снипет сработает по красной ветке
Проверка на регу в фб:
Отработало по зеленой, т.е. нужно регать аккаунт.
Проверка на регу в вк:
Отработали по красной ветке. Т.е акк на вк для данного профиля уже зареган, а значит завершаем выполнение данного потока.
После внесения изменений в профиле не забываем сохранить профиль в файл! Можете делать это данной строкой:
Или своим любимым кубиком.
Советую снипет загрузки данных из профиля размещать в самом начале работы шаблона, раскидав все данные по переменным Зеннопостера. И в последствии уже с ними и работать.
А снипет записи данных в профиль размещаете соответственно там где это необходимо.
Видео будет позже
Сохранение информации в профили zpprofile пользователи просят уже давно. Была начата работа в нужном направлении http://zennolab.com/discussion/threads/xaljava-biblioteka-profileactions-rasshirennaja-versija-standartnyx-profilej-zpprofile.34908/#post-261645 , но до нужного пока как раз-таки и не добрались:
Не говоря уже о не очень большом желании подключать лишние библиотеки, в том числе и из-за вопросов со стабильностью их работы.PS: есть мысль - добавить функционал сохранения переменных в профиль (project.Variables[имя_переменной]), чтобы после загрузки профиля - восстановить значения из них.
Нужно/полезно? Отпишитесь плиз.
А решение данной задачи на мой взгляд элементарно!
Поняли к чему я веду? Мы можем записать в это поле любую информацию и забирать её от туда штатными средствами зенки в многопотоке без всяких сбоев!
Я бы предпочел размещать информацию в Interset
Но разработчики зенки где-то что-то не доглядели:
И обратиться к интересам мы не можем, но и не больно то и хотелось...
Кликаем правой кнопкой мыши на панельке и добавляем директивы:
Далее открываем общий код:
Добавляем в общий код:
Код:
namespace my
{
public class Profile {
private IZennoPosterProjectModel Project;
private Instance Instance;
public Profile (IZennoPosterProjectModel project, Instance instance)
{
Project = project;
Instance = instance;
}
public void AddToProfile(string tag, string value)
{
string advParam = this.Project.Profile.SecretQuestionAnswer2;
string settings = Regex.Match(advParam, string.Format(@"\[{0}/].*\[/{0}]", tag)).Value;
if(!string.IsNullOrEmpty(settings))
{
this.Project.Profile.SecretQuestionAnswer2 = advParam.Replace(settings, string.Format("[{1}/]{0}[/{1}]", value, tag));
this.Project.SendInfoToLog(string.Format("Для поля {0} обновили значение {1}", tag, value), true);
}
else
{
this.Project.Profile.SecretQuestionAnswer2 = advParam+string.Format("[{1}/]{0}[/{1}]", value, tag);
this.Project.SendInfoToLog(string.Format("Добавили поле {0} со значением {1}", tag, value), true);
}
}
public string GetFromProfile(string tag)
{
return Regex.Match(this.Project.Profile.SecretQuestionAnswer2, string.Format(@"(?<=\[{0}/]).*?(?=\[/{0}])", tag)).Value;
}
}
}
Код:
my.Profile profile = new my.Profile(project, instance);
Код:
profile.AddToProfile("vk_phone", project.Variables["cfg_vk_phone"].Value);
Второй параметр - project.Variables["cfg_vk_phone"].Value - ваша стандартная переменная в Зеннопостере с именем cfg_vk_phone
Т.е. мы добавляем в поле project.Profile.SecretQuestionAnswer2 свои данные в виде:
[vk_phone/]79999999999[/vk_phone][vk_pass/]old_pass_vk[/vk_pass][ok_phone/]74444444444[/ok_phone][ok_pass/]old_pass_ok[/ok_pass]
и получаем некое подобие JSON или XML. Это общепринятый язык разметки под названием DTG (DoorwayTemplateGenerator).
После того как мы напихали всю эту порнографию в наш практически девственный SecretQuestionAnswer2 с этим надо как-то работать.
И забирать мы нужные нам данные будем методом
Код:
profile.GetFromProfile("vk_phone")
Код:
project.Variables["cfg_vk_phone"].Value = profile.GetFromProfile("vk_phone");
Если вы хотите сделать определенные действия основываясь на наличие/отсутствие данных в профиле, то проверьте это поле на пустоту.
Например вы хотите зарегистрировать для профиля аккаунты ФБ, Твиттер, Инстаграм постепенно и не вести списки где уже зарегали, а где нет.
Код:
my.Profile profile = new my.Profile(project, instance);
if(!string.IsNullOrEmpty(profile.GetFromProfile("fb_phone")))
{
return null;
}
Проверка на регу в фб:
Отработало по зеленой, т.е. нужно регать аккаунт.
Проверка на регу в вк:
Отработали по красной ветке. Т.е акк на вк для данного профиля уже зареган, а значит завершаем выполнение данного потока.
После внесения изменений в профиле не забываем сохранить профиль в файл! Можете делать это данной строкой:
Код:
project.Profile.Save(project.Directory + @"\profile.zpprofile", true, true, true, false, false, false, true, true, false);
Советую снипет загрузки данных из профиля размещать в самом начале работы шаблона, раскидав все данные по переменным Зеннопостера. И в последствии уже с ними и работать.
А снипет записи данных в профиль размещаете соответственно там где это необходимо.
Видео будет позже
- Тема статьи
- Другое
- Номер конкурса статей
- Девятый конкурс статей
Вложения
-
29,7 КБ Просмотры: 586
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование: