Бесплатные снипеты на заказ

  • Автор темы Автор темы CSS
  • Дата начала Дата начала
Решил задачу. Таким образом, у себя на сайте написал php скрипт, на который будут отправляться данные гет запросом, скрипт обработает, выдаст результат, после, парсером собрать в переменные. Скрипт писал часа 3, кошмарный, но рабочий. (Костыль)
 
Есть значение:
C#:
Развернуть Свернуть Копировать
string text = project.Variables["text"].Value;

string[] split = text.Split('|');
project.Variables["set_one"].Value = split[0].Split(':')[0];
project.Variables["set_two"].Value = split[0].Split(':')[1];

int res_1 = 0;
MatchCollection mCol_1 = Regex.Matches(split[1], @"\d+(?=:)");
foreach (Match m_1 in mCol_1)
    res_1 += int.Parse(m_1.Value.Trim());
project.Variables["game_one"].Value = res_1.ToString();

int res_2 = 0;
MatchCollection mCol_2 = Regex.Matches(split[1], @"(?<=:)\d+");
foreach (Match m_2 in mCol_2)
    res_2 += int.Parse(m_2.Value.Trim());
project.Variables["game_two"].Value = res_2.ToString();
 
  • Спасибо
Реакции: samsonnn и inilim
Мой код раза в три больше))
Благодарю.
 
Код:
Развернуть Свернуть Копировать
// берем текст для парсинга из переменной
var textContains = project.Variables["name"].Value;
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["csm"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // проверяем первую ячейку, если есть совпадение кладем результат во вторую таблицу
        if (cells[0].Contains(textContains))
            return i;
    }
}
return -1;

Требуется найти фразу в таблице, если найдена, взять всю строку (с удалением) и вставить в другую таблицу
 
Код:
Развернуть Свернуть Копировать
Требуется найти фразу в таблице, если найдена, взять всю строку(с удалением) и вставить в другую таблицу
Новичку столько помощи не будет! Покупайте программу, получайте статус клиента, и возможно тогда вам помогут!!! Смысл тратить на вас время, чтоб написать вам нужный снипет?
 
Хмм... а я как бы купил пару дней назад standart :) В любом случае вы не обязаны помогать, а я не требую.
Я обычно как решаю задачи, делаю пост с задачей, и ищу решения. 2x профит :)
 
Подскажите пожалуйста, как сделать так, чтобы ZP выполняла действие точно в заданную секунду времени
 
Требуется найти фразу в таблице, если найдена, взять всю строку (с удалением) и вставить в другую таблицу
Если текст нужно искать только в первом столбце, то
C#:
Развернуть Свернуть Копировать
IZennoTable sourceTable = project.Tables["SourceTable"]; // таблица, в которой искать
IZennoTable destTable = project.Tables["DestTable"]; // таблица, в которую класть
string textContains = project.Variables["text"].Value; // текст, который искать

lock (SyncObjects.TableSyncer) {
    for (int i = 0; i < sourceTable.RowCount; i++) {
        string[] cells = sourceTable.GetRow(i).ToArray();
        if (cells[0].Contains(textContains)) {
            destTable.AddRow(cells);
            sourceTable.DeleteRow(i);
            i--;
        }
    }
}

/*
Если поиск нужно осуществлять по полному совпадению, то нужно
if (cells[0].Contains(textContains))
заменить на
if (cells[0] == textContains)
*/
если во всех столбцах, то
C#:
Развернуть Свернуть Копировать
IZennoTable sourceTable = project.Tables["SourceTable"]; // таблица, в которой искать
IZennoTable destTable = project.Tables["DestTable"]; // таблица, в которую класть
string textContains = project.Variables["text"].Value; // текст, который искать

lock (SyncObjects.TableSyncer) {
    for (int i = 0; i < sourceTable.RowCount; i++) {
        string[] cells = sourceTable.GetRow(i).ToArray();
        for (int j = 0; j < cells.Length; j++) {
            if (cells[j].Contains(textContains)) {
                destTable.AddRow(cells);
                sourceTable.DeleteRow(i);
                i--;
                break;
            }
        }
    }
}

/*
Если поиск нужно осуществлять по полному совпадению, то нужно
if (cells[j].Contains(textContains))
заменить на
if (cells[j] == textContains)
*/
 
  • Спасибо
Реакции: Valiksim и samsonnn
Подскажите как взять в таблице определенную ячейку, сравнить с переменной и если они различаются, то записать переменную в нужную ячейку?
Типа менеджера аккаунтов сделать хочу :)
 
Помогите переименовать папку?
Что-то не получается переименовать папку. Нашел вот тут как бы ответ, пытаюсь так и сделать, но не получается
  • Есть папка с файлами.
  • Надо взять папку №1 и
  • Перенести её в папку №2 вместе с файлами
  • Задав новое имя
Вопрос как?
PHP:
Развернуть Свернуть Копировать
strSourceDirectoryPath = project.Directory + @"\Img\";
List<string> lstTempDir = new List<string>();
string strResultDirName = String.Empty;

lstTempDir.AddRange(Directory.GetDirectories(strSourceDirectoryPath, "*.*", SearchOption.AllDirectories));
strResultDirName = lstTempDir[0];
strSourceDirectoryPath = strResultDirName;
string strTargetDirectoryPath = project.Directory + @"\Img2\" + "122211212";
Directory.CreateDirectory(strTargetDirectoryPath);
string strSourceDirectory = strSourceDirectoryPath;
string strTargetDirectory = strTargetDirectoryPath;
Directory.Move(strSourceDirectory, strTargetDirectory); директорию
В папке "\Img\" - несколько вложенных папок, беру первую, переношу, и переименовываю

P.S. Работает, только если перемещать в ту же папку "\Img\", если хочу в "\Img2\", то ругается и не перемещает.
Неужели нет решения? Что я не так делаю?
 
Последнее редактирование:
P.S. Работает, только если перемещать в ту же папку "\Img\", если хочу в "\Img2\", то ругается и не перемещает.
Неужели нет решения? Что я не так делаю?
Проблема в недопонимании как работает Directory.Move. Второй аргумент метода - это будущий путь перемещаемой папки, а не путь к папке, в которую нужно переместить начальную папку.
Думаю, примеры помогут понять лучше.

Перенос папки без переименования:
C#:
Развернуть Свернуть Копировать
//Путь к папке, которую нужно переместить
string pathFrom = project.Variables["pathFrom"].Value;
if (!Directory.Exists(pathFrom)) throw new Exception("Папка указана неверно. Проверьте правильность пути папки, которую нужно переместить.");
//Путь к папке, в которую нужно перенести первую папку
string pathTo = project.Variables["pathTo"].Value;

pathTo = Path.Combine(pathTo, new DirectoryInfo(pathFrom).Name);
Directory.Move(pathFrom, pathTo);

Перенос папки с переименованием:
C#:
Развернуть Свернуть Копировать
//Путь к папке, которую нужно переместить
string pathFrom = project.Variables["pathFrom"].Value;
if (!Directory.Exists(pathFrom)) throw new Exception("Папка указана неверно. Проверьте правильность пути папки, которую нужно переместить.");
//Путь к папке, в которую нужно перенести первую папку
string pathTo = project.Variables["pathTo"].Value;
//Во что должна быть переименована перемещаемая папка
string targetFolder = "Новая папка";

pathTo = Path.Combine(pathTo, targetFolder);
Directory.Move(pathFrom, pathTo);
 
  • Спасибо
Реакции: Kol57 и Valiksim
Спасибо большое. Думал уже никто не откликнется
Вот эти две строчки непонятны:
pathTo = Path.Combine(pathTo, new DirectoryInfo(pathFrom).Name);
pathTo = Path.Combine(pathTo, targetFolder);
"Combine" - это "соединение". В чём суть соединения непонятно? если можно, объясни, пожалуйста, что тут происходит, какое действие?

НО, главное другое. То, что я хочу сделать, всё равно не получается. Может быть я не до конца всё объяснил?
У меня в папке "\Img\" находятся ещё несколько папок.
Задача взять 1-ю папку из "\Img\"
и перенести всё в "\Img2\"
То есть "\Img\Вася\" должно переместиться в "\Img2\Федя\". Тут переименовываются сразу 2 папки: верхнего уровня и вложенная.
Можно, наверное, сделать всё в 2 шага, но как-то не очень...
В 1 шаг, переименовать поставить всё в папку верхнего уровня получается вот так: "\Img\Вася\" - "\Img\Федя\"

...Всё-таки получилось. Оказывается, путь должен указывать на уже существующую папку. Причём вот так:
Если надо переместить "\Img\Вася\" в "\Img2\Федя\", надо создать "\Img2\" (заблаговременно) и (видимо) присоединить к Пути "Федя".
Тогда получается то, что у Нади, то есть то что надо. В общем, разобрался, возможно, понял роль "Combine".
Ещё раз спасибо за помощь
 
Привет народ! Пытаюсь подключится по апи к лайвоину, запросы без авторизации без проблем стандартными кубами, но с авторизацией лыжи не едут. Может сталкивался кто?
Задача:
есть переменные проекта: url запроса, apikey, skretkey.
Нужно отправить Гет запрос на переменную URL с только двумя заголовками:
Api-Key: калябаля из переменной
Sign: другойкалябаля из переменной

На сайте написано:
" Для авторизации надо привести Api ключ и электронную подпись данных, передаваемых в запросах. API ключ и подпись передаются как HTTP заголовки "Api-key" и "Sign".

Подпись формируется на основе HMAC-SHA256 алгоритма. В качестве ключа используется секретный ключ, выданный в момент генерации API ключа. Сгенерированная подпись должна быть переведена в шестнадцатеричный формат и верхний регистр.

Важно (!) Для построения строки подписи параметры должны быть соединены в алфавитном порядке их имен. В противном случае проверка электронной подписи не будет проходить."
Такая вот неведомая херня.

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

C#
POST запрос
using System;
using System.Text;
using System.Web;
using System.Net;
using System.Security.Cryptography;
using System.IO;
namespace apice
{
class Program
{
private static string HashHMAC(string key, string message)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] keyByte = encoding.GetBytes(key);

HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);

byte[] messageBytes = encoding.GetBytes(message);
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return ByteArrayToString(hashmessage);
}

public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
public static string http_build_query(String formdata ){
string str = formdata.Replace("/", "%2F");
str = str.Replace("@", "%40");
str = str.Replace(";", "%3B");
return str;
}

static void Main(string[] args)
{
string ApiKey = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy";
string SecretKey = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg";
string param = http_build_query("currencyPair=BTC/USD&price=60&quantity=0.01");
string Sign = HashHMAC(SecretKey, param).ToUpper();
string uri = "https://api.livecoin.net/exchange/buylimit";
string ResponseFromServer = "";
HttpStatusCode StatusCode;
byte[] bytes = Encoding.UTF8.GetBytes(param);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;
request.Headers["Api-Key"] = ApiKey;
request.Headers["Sign"] = Sign;
Stream dataStream = request.GetRequestStream();
dataStream.Write(bytes, 0, bytes.Length);
try{
WebResponse WebResponse = request.GetResponse();
dataStream = WebResponse.GetResponseStream();
StreamReader StreamReader = new StreamReader(dataStream);
ResponseFromServer = StreamReader.ReadToEnd();
dataStream.Close();
WebResponse.Close();
StatusCode = HttpStatusCode.OK;
}
catch (WebException ex)
{
if (ex.Response != null) {
dataStream =ex.Response.GetResponseStream();
StreamReader StreamReader = new StreamReader(dataStream);
StatusCode = ((HttpWebResponse)ex.Response).StatusCode ;
ResponseFromServer = ex.Message;
}else{
StatusCode = HttpStatusCode.ExpectationFailed;
ResponseFromServer = "Неизвестная ошибка";
}
}
catch (Exception ex){
StatusCode = HttpStatusCode.ExpectationFailed;
ResponseFromServer = "Неизвестная ошибка";
}
Console.WriteLine("Response Code: " + StatusCode);
Console.WriteLine("Response String: " + ResponseFromServer);

}

}
}


GET запрос
using System;
using System.Text;
using System.Web;
using System.Net;
using System.Security.Cryptography;
using System.IO;
namespace apice
{
class Program
{
static void Main(string[] args)
{
string param = "currencyPair=BTC/USD";
string uri = "https://api.livecoin.net/exchange/ticker?";
string ResponseFromServer = "";
HttpStatusCode StatusCode;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri + param);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
Stream dataStream;
try
{
WebResponse WebResponse = request.GetResponse();
dataStream = WebResponse.GetResponseStream();
StreamReader StreamReader = new StreamReader(dataStream);
ResponseFromServer = StreamReader.ReadToEnd();
dataStream.Close();
WebResponse.Close();
StatusCode = HttpStatusCode.OK;
}
catch (WebException ex)
{
if (ex.Response != null)
{
dataStream = ex.Response.GetResponseStream();
StreamReader StreamReader = new StreamReader(dataStream);
StatusCode = ((HttpWebResponse)ex.Response).StatusCode;
ResponseFromServer = ex.Message;
}
else
{
StatusCode = HttpStatusCode.ExpectationFailed;
ResponseFromServer = "Неизвестная ошибка";
}
}
catch (Exception ex)
{
StatusCode = HttpStatusCode.ExpectationFailed;
ResponseFromServer = "Неизвестная ошибка";
}
Console.WriteLine("Response Code: " + StatusCode);
Console.WriteLine("Response String: " + ResponseFromServer);

}

}
}

Вообщем надо или адаптировать этот C# к зенке, либо просто сделать правильный запрос.
 
Последнее редактирование:
Привет народ! Пытаюсь подключится по апи к лайвоину, запросы без авторизации без проблем стандартными кубами, но с авторизацией лыжи не едут. Может сталкивался кто?
Задача:
есть переменные проекта: url запроса, apikey, skretkey.
Нужно отправить Гет запрос на переменную URL с только двумя заголовками:
Api-Key: калябаля из переменной
Sign: другойкалябаля из переменной

На сайте написано:
" Для авторизации надо привести Api ключ и электронную подпись данных, передаваемых в запросах. API ключ и подпись передаются как HTTP заголовки "Api-key" и "Sign".

Подпись формируется на основе HMAC-SHA256 алгоритма. В качестве ключа используется секретный ключ, выданный в момент генерации API ключа. Сгенерированная подпись должна быть переведена в шестнадцатеричный формат и верхний регистр.

Важно (!) Для построения строки подписи параметры должны быть соединены в алфавитном порядке их имен. В противном случае проверка электронной подписи не будет проходить."
Такая вот неведомая херня.

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

C#
POST запрос
using System;
using System.Text;
using System.Web;
using System.Net;
using System.Security.Cryptography;
using System.IO;
namespace apice
{
class Program
{
private static string HashHMAC(string key, string message)
{
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] keyByte = encoding.GetBytes(key);

HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);

byte[] messageBytes = encoding.GetBytes(message);
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return ByteArrayToString(hashmessage);
}

public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
public static string http_build_query(String formdata ){
string str = formdata.Replace("/", "%2F");
str = str.Replace("@", "%40");
str = str.Replace(";", "%3B");
return str;
}

static void Main(string[] args)
{
string ApiKey = "gJx7Wa7qXkPtmTAaK3ADCtr6m5rCYYMy";
string SecretKey = "8eLps29wsXszNyEhOl9w8dxsOsM2lTzg";
string param = http_build_query("currencyPair=BTC/USD&price=60&quantity=0.01");
string Sign = HashHMAC(SecretKey, param).ToUpper();
string uri = "https://api.livecoin.net/exchange/buylimit";
string ResponseFromServer = "";
HttpStatusCode StatusCode;
byte[] bytes = Encoding.UTF8.GetBytes(param);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;
request.Headers["Api-Key"] = ApiKey;
request.Headers["Sign"] = Sign;
Stream dataStream = request.GetRequestStream();
dataStream.Write(bytes, 0, bytes.Length);
try{
WebResponse WebResponse = request.GetResponse();
dataStream = WebResponse.GetResponseStream();
StreamReader StreamReader = new StreamReader(dataStream);
ResponseFromServer = StreamReader.ReadToEnd();
dataStream.Close();
WebResponse.Close();
StatusCode = HttpStatusCode.OK;
}
catch (WebException ex)
{
if (ex.Response != null) {
dataStream =ex.Response.GetResponseStream();
StreamReader StreamReader = new StreamReader(dataStream);
StatusCode = ((HttpWebResponse)ex.Response).StatusCode ;
ResponseFromServer = ex.Message;
}else{
StatusCode = HttpStatusCode.ExpectationFailed;
ResponseFromServer = "Неизвестная ошибка";
}
}
catch (Exception ex){
StatusCode = HttpStatusCode.ExpectationFailed;
ResponseFromServer = "Неизвестная ошибка";
}
Console.WriteLine("Response Code: " + StatusCode);
Console.WriteLine("Response String: " + ResponseFromServer);

}

}
}


GET запрос
using System;
using System.Text;
using System.Web;
using System.Net;
using System.Security.Cryptography;
using System.IO;
namespace apice
{
class Program
{
static void Main(string[] args)
{
string param = "currencyPair=BTC/USD";
string uri = "https://api.livecoin.net/exchange/ticker?";
string ResponseFromServer = "";
HttpStatusCode StatusCode;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri + param);
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
Stream dataStream;
try
{
WebResponse WebResponse = request.GetResponse();
dataStream = WebResponse.GetResponseStream();
StreamReader StreamReader = new StreamReader(dataStream);
ResponseFromServer = StreamReader.ReadToEnd();
dataStream.Close();
WebResponse.Close();
StatusCode = HttpStatusCode.OK;
}
catch (WebException ex)
{
if (ex.Response != null)
{
dataStream = ex.Response.GetResponseStream();
StreamReader StreamReader = new StreamReader(dataStream);
StatusCode = ((HttpWebResponse)ex.Response).StatusCode;
ResponseFromServer = ex.Message;
}
else
{
StatusCode = HttpStatusCode.ExpectationFailed;
ResponseFromServer = "Неизвестная ошибка";
}
}
catch (Exception ex)
{
StatusCode = HttpStatusCode.ExpectationFailed;
ResponseFromServer = "Неизвестная ошибка";
}
Console.WriteLine("Response Code: " + StatusCode);
Console.WriteLine("Response String: " + ResponseFromServer);

}

}
}

Вообщем надо или адаптировать этот C# к зенке, либо просто сделать правильный запрос.

Есть решалка funcaptcha?
 
Добрый день!
Беру капчу GET запросом
Код:
Развернуть Свернуть Копировать
string url = @"https://m.vk.com/captcha.php?sid="+ project.Variables["captcha_id"].Value +"&s=1";
ZennoPoster.HttpGet(
    url, // адрес картинки
    "", // прокси если нужно
    "UTF-8", // кодировка
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.File, // говоим что нужно скачать фаил
    30000, // ждем ответ от сервера
    "", //куки если нужно
    "", //юзерагент если нужно
    true, // использовать редирект
    3, // количество редиректов
    new String[]{}, // заголовки если нужно
    @"D:\tmp_captcha", // куда сохранить фаил
    true // использовать оригенальный УРЛ
);
сохраняет в указанную директорию, но со своим именем captcha.
При многопотоке нужно сохранять под каким нибудь рандомным именем, которое генерирую в переменную проекта вот так

string login = project.Profile.RegenerateLogin("[RndNum|00000|99999]");
project.Variables["rnd_name"].Value=login;

Подскажите как прописать помимо пути куда сохранить, еще и имя из переменной.
Спасибо.
 
Спасибо, но заработал только вот так
Код:
Развернуть Свернуть Копировать
string[] first = project.Lists["all"].ToArray();
string[] second = project.Lists["secondList"].ToArray();
string[] third = second.AsParallel().Except(first.AsParallel()).ToArray();
project.Lists["secondList"].Clear();
project.Lists["secondList"].AddRange(third.ToList());
Всем доброго дня.
Спасибо за код. Но он удалят только полностью одинаковые строки. Как сделать чтобы удалял по части строки, например сейчас удаляет только точное вхождение строки такое как http://сайт. но не удалит строку http://сайт.ру, т.е. строка http://сайт. и http://сайт.ру вроде одинакова но ее не удаляет. Не пойму как сделать поиск по части строки. Заранее всем спасибо.
 
Нужен сниппет.
На странице есть несколько форм с одинаковыми названиями login.
Нужно заполнить все формы с указанным именем. В курсах ростоникса было такое но не могу найти.
 
Нужен сниппет.
На странице есть несколько форм с одинаковыми названиями login.
Нужно заполнить все формы с указанным именем. В курсах ростоникса было такое но не могу найти.
Недавно выборочно смотрел 2 часть курса Ростоникса, то что Вам надо находится - 1. Вступление aka Базовые вещи > Base2_Коллекции элементов.mp4
 
Добрый день, подскажите, реально сделать такой сниппет где будет несколько выпадающих списков, после выбора всех значений из которых нажимается кнопка, добавляются выбранные значения куда-нибудь (например в текстбокс) и так можно сделать не один раз, а в конце жмется кнопка закрытия формы и все
 
Есть два сниппета


Код:
Развернуть Свернуть Копировать
HtmlElement he;
for(int i=0;i<1;i++)
{
    he = instance.ActiveTab.FindElementByAttribute("img", "src", "captcha", "text", 0);
    if(!he.IsVoid)
    {     
        int attribute = int.Parse(he.GetAttribute("height"));
        if (attribute != 0)
        {         
           return "элемент отображается";
        }
    }
   return "элемент не отображается";
}

и

Код:
Развернуть Свернуть Копировать
HtmlElement he = instance.GetTabByAddress("page").FindElementByAttribute("img", "img", "captcha", "text", 1);
if (he.IsVoid) return -1;

// Отправить на распознавание
string recognition = ZennoPoster.CaptchaRecognition("MonkeyEnter.dll", he.DrawToBitmap(false), "");


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

что бы считало количество элементов в коллекции
HtmlElementCollection elements5 = instance.ActiveTab.FindElementsByAttribute("img","img", "captcha","text");
//return elements4.Count;
 
Как сделать так что бы на распознование шла только видимая капча ?
Если правильно понял задачу, то примерно так:
C#:
Развернуть Свернуть Копировать
//Ищем коллекцию элементов, которые удовлетворяют заданным атрибутам капчи
var col = instance.ActiveTab.FindElementsByAttribute("img","img", "captcha","text");
//Если в коллекции есть элементы
if (col.Count>0){
    //Перебираем элементы коллекции
    foreach (var el in col){
        //Проверяем, отображается ли текущий элемент коллекции
        if (el.Height>0){
            //Если отображается, отправляем на распознавание
            string recognition = ZennoPoster.CaptchaRecognition("MonkeyEnter.dll", el.DrawToBitmap(false), "");
            //Вводим результат распознавания в нужное место
            //...
        }
    }
}
 
  • Спасибо
Реакции: КарлМаркс
Если правильно понял задачу, то примерно так:
C#:
Развернуть Свернуть Копировать
//Ищем коллекцию элементов, которые удовлетворяют заданным атрибутам капчи
var col = instance.ActiveTab.FindElementsByAttribute("img","img", "captcha","text");
//Если в коллекции есть элементы
if (col.Count>0){
    //Перебираем элементы коллекции
    foreach (var el in col){
        //Проверяем, отображается ли текущий элемент коллекции
        if (el.Height>0){
            //Если отображается, отправляем на распознавание
            string recognition = ZennoPoster.CaptchaRecognition("MonkeyEnter.dll", el.DrawToBitmap(false), "");
            //Вводим результат распознавания в нужное место
            //...
        }
    }
}
Да именно так спасибо.
 
Всем привет.
Как можно вставить текст из буфера обмена в переменную?
 
Привет народ! Пытаюсь подключится по апи к лайвоину, запросы без авторизации без проблем стандартными кубами, но с авторизацией лыжи не едут. Может сталкивался кто?
Задача:
есть переменные проекта: url запроса, apikey, skretkey.
Нужно отправить Гет запрос на переменную URL с только двумя заголовками:
Api-Key: калябаля из переменной
Sign: другойкалябаля из переменной

Вообщем надо или адаптировать этот C# к зенке, либо просто сделать правильный запрос.
Я рассматривал подобную задачу, когда работал с другой биржей криптовалют.
Собственно, думаю решение подойдет и для решения данной задачи.
Вот видео в котором все наглядно показываю:

Прежде всего необходимо подписать данные чтобы получить сигнатуру.
В юзинги добавляем: using System.Security.Cryptography;

Дальше подписываем данные.
Делается это примерно так:
C#:
Развернуть Свернуть Копировать
string strKey = project.Variables["API_secret"].Value;
string data = "nonce="+project.Variables["nonce"].Value;
        HMACSHA512 hma = new HMACSHA512();
     hma.Key = Encoding.UTF8.GetBytes(strKey);
project.Variables["SIGNATURE"].Value = BitConverter.ToString(hma.ComputeHash(Encoding.UTF8.GetBytes(data))).Replace("-","").ToLower();

Здесь в переменной data наши параметры, которые мы желаем подписать ключем, который находится в переменной API_secret.
Результатом выполнения будет сигнатура, которую необходимо будет передавать в заголовках.

А дальше уже необходимо выполнить запрос, вид будет примерно следующим:
C#:
Развернуть Свернуть Копировать
string key = "ключ который передается в заголовке";
string url = "https://api.livecoin.net/exchange/ticker?";
string rezult = ZennoPoster.HttpGet( url, "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,    30000, "", project.Profile.UserAgent, true, 0, new [] { string.Format(@"Api-key: {0}",key), string.Format(@"Sign: {0}",project.Variables["SIGNATURE"].Value) } );
return rezult;
 
  • Спасибо
Реакции: dimanis
А ни у кого нет сниппета который выводит самые популярные слова из текста ?
 
Код ищет совпадение в одном списке
Код:
Развернуть Свернуть Копировать
// берем из переменной текст, который надо искать
var textContains = project.Variables["ID"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["КОНТРОЛЬ"];
// Лочим список
lock(SyncObjects.ListSyncer)
// ищем в каждой строчке в списке
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строки из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение выходим по красной
        if (str.Contains(textContains))
return null;
    }
}
// если ничего не нашли возвращаем "yes"
return "yes";
А как сделать так чтобы искал сразу в нескольких (например 3-х) списках.
Спасибо.
 
А ни у кого нет сниппета который выводит самые популярные слова из текста ?
Вот те основная часть, но вокруг нее надо еще кубиками, или в том же коде доделать логику.
Код:
Развернуть Свернуть Копировать
//С# снипет определяет кол-во вхождений слова в тексте
var source = project.Variables["Stroki"].Value; // простыня нашего текста
var pattern = project.Variables["b_Slovo_b"].Value; // слово или фраза для поиска обрамленные в регулярку \b, например: \bслово или фраза\b
int amount = new Regex(pattern).Matches(source).Count;
return amount;
Только понятно что делать это надо в цикле для всех слов, которые есть в проекте (получаем их заменой границ слов на перенос строки, формированием таким методом списка и удалением дубликатов, или поиск по регулярке самих слов....) .
Может есть че попроще, надо искать по форуму:
http://zennolab.com/discussion/thre...lee-chasto-vstrechajuschiesja-v-tekste.27146/
http://zennolab.com/discussion/threads/poluchit-slova.32675/
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)