- Регистрация
- 10.04.2016
- Сообщения
- 468
- Благодарностей
- 333
- Баллы
- 63
ZennoBrowser - Добавляем свои действия, которых нет в стандартных кубиках. Пример шаблона.
Пока ещё не все действия с зеннобраузером можно делать с помощью стандартных кубиков.
Но если нужно, можно сделать свой код для изменения некоторых параметров.
Покажу на примере изменения имени профиля и заметок(описания).
Возможно к моменту публикации это уже будет реализовано в стандартных кубиках, но по такому же принципу можно менять и другие параметры.
Начнем.
Всё, что здесь написано, продемонстрировано в видео в конце темы.
Файлы профилей у нас лежат в C:\Users\имяпользователя\AppData\Local\ZennoLab\ZP8\.zp8\
Создадим руками профиль с именем Sample и с заметками Sample Note
Зайдем в вышеуказанную папку и сделаем поиск в файлах по слову Sample
Видим, что это файл SQLite - ProfileManagement.db.
Открываем его с помощью браузера SQLite, видим что нужные нам поля, это id name notes в таблице ProfileInfos
Дальше пишем код для смены значений полей name и notes. Кому затруднительно, можно прибегнуть к помощи ИИ.
Код для смены имени и описания(заметок):
// ВХОДНЫЕ ПАРАМЕТРЫ
// Получаем ID профиля из переменной проекта ZennoPoster
string id = project.Variables["idprof"].Value;
// Устанавливаем новые заметки для профиля
string newNotes = project.Variables["note"].Value;
// Путь к базе данных SQLite с информацией о профилях ZennoPoster
string dbPath = @"C:\Users\bvbfo\AppData\Local\ZennoLab\ZP8\.zp8\ProfileManagement.db";
// Новое имя профиля (email адрес)
string newName = project.Variables["name"].Value;
// Объявляем переменную для подключения к базе данных SQLite
System.Data.SQLite.SQLiteConnection conn = null;
// Объявляем переменную для транзакции базы данных
System.Data.SQLite.SQLiteTransaction tx = null;
try {
// Создаем новое подключение к базе данных SQLite с указанным путем
conn = new System.Data.SQLite.SQLiteConnection("Data Source=" + dbPath + ";");
// Открываем соединение с базой данных
conn.Open();
// Создаем команду для установки таймаута ожидания блокировки БД (10 секунд)
var pragma1 = conn.CreateCommand(); pragma1.CommandText = "PRAGMA busy_timeout=10000"; pragma1.ExecuteNonQuery();
// Создаем команду для включения проверки внешних ключей в SQLite
var pragma2 = conn.CreateCommand(); pragma2.CommandText = "PRAGMA foreign_keys=ON"; pragma2.ExecuteNonQuery();
// Начинаем транзакцию для обеспечения целостности данных
tx = conn.BeginTransaction();
// Создаем команду для выполнения SQL запроса
var cmd = conn.CreateCommand();
// Привязываем команду к текущей транзакции
cmd.Transaction = tx;
// SQL запрос для обновления заметок и имени профиля по ID
cmd.CommandText = "UPDATE ProfileInfos SET Notes=@notes, Name=@name WHERE Id=@id";
// Создаем параметр для заметок и добавляем его в команду
var p1 = cmd.CreateParameter(); p1.ParameterName = "@notes"; p1.Value = (object)newNotes ?? System.DBNull.Value; cmd.Parameters.Add(p1);
// Создаем параметр для имени профиля и добавляем его в команду
var p2 = cmd.CreateParameter(); p2.ParameterName = "[USER=98307]@Name[/USER]"; p2.Value = (object)newName ?? System.DBNull.Value; cmd.Parameters.Add(p2);
// Создаем параметр для ID профиля и добавляем его в команду
var p3 = cmd.CreateParameter(); p3.ParameterName = "@id"; p3.Value = id; cmd.Parameters.Add(p3);
// Выполняем SQL команду обновления данных
cmd.ExecuteNonQuery();
// Подтверждаем транзакцию (сохраняем изменения в БД)
tx.Commit();
// Создаем команду для принудительной записи WAL файла в основную БД
var cp = conn.CreateCommand();
// PRAGMA команда для полной синхронизации WAL (Write-Ahead Logging) с основной БД
cp.CommandText = "PRAGMA wal_checkpoint(FULL)";
// Выполняем команду синхронизации
cp.ExecuteNonQuery();
}
catch (System.Exception ex) {
// В случае ошибки пытаемся откатить транзакцию
try { if (tx != null) tx.Rollback(); } catch {}
// Отправляем сообщение об ошибке в лог ZennoPoster
project.SendErrorToLog("Ошибка обновления профиля: " + ex.Message, false);
}
finally {
// В блоке finally гарантированно закрываем соединение с БД
try { if (conn != null) conn.Close(); } catch {}
// Освобождаем ресурсы подключения к базе данных
try { if (conn != null) conn.Dispose(); } catch {}
}
Описание создания шаблона:
Руками создаем профиль Sample с нужными настройками. Копируем id профиля.
Затем создаем кубик для создания профиля с такими же параметрами, добавляем в него id профиля Sample.
Распарсиваем json ответ и кладем значение id нового профиля в переменную idprof.
Запускаем инстанс с idprof
Дальше выполняем задачу - например авторизацию на каком либо сервисе(например на mailru) или делаем какие либо другие действия.
Сохраняем значения для имени профиля и заметок в переменные проекта name и note
В случае удачного выполнения - меняем имя профиля и заполняем поле Заметки и останавливаем инстанс.
В случае неудачи - устанавливаем инстанс и удаляем профиль.
Видео Пример шаблона.
Шаблон скачать:
Вложения
-
829,6 КБ Просмотры: 4
Последнее редактирование: