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

inilim

Client
Регистрация
16.09.2017
Сообщения
441
Благодарностей
170
Баллы
43
Решил задачу. Таким образом, у себя на сайте написал php скрипт, на который будут отправляться данные гет запросом, скрипт обработает, выдаст результат, после, парсером собрать в переменные. Скрипт писал часа 3, кошмарный, но рабочий. (Костыль)
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 099
Баллы
113
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

inilim

Client
Регистрация
16.09.2017
Сообщения
441
Благодарностей
170
Баллы
43
Мой код раза в три больше))
Благодарю.
 

inilim

Client
Регистрация
16.09.2017
Сообщения
441
Благодарностей
170
Баллы
43
Код:
// берем текст для парсинга из переменной
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;
Требуется найти фразу в таблице, если найдена, взять всю строку (с удалением) и вставить в другую таблицу
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 629
Благодарностей
1 303
Баллы
113
Код:
Требуется найти фразу в таблице, если найдена, взять всю строку(с удалением) и вставить в другую таблицу
Новичку столько помощи не будет! Покупайте программу, получайте статус клиента, и возможно тогда вам помогут!!! Смысл тратить на вас время, чтоб написать вам нужный снипет?
 

inilim

Client
Регистрация
16.09.2017
Сообщения
441
Благодарностей
170
Баллы
43
Хмм... а я как бы купил пару дней назад standart :-) В любом случае вы не обязаны помогать, а я не требую.
Я обычно как решаю задачи, делаю пост с задачей, и ищу решения. 2x профит :-)
 

Вячес

Client
Регистрация
25.01.2015
Сообщения
11
Благодарностей
0
Баллы
1
Подскажите пожалуйста, как сделать так, чтобы ZP выполняла действие точно в заданную секунду времени
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 099
Баллы
113
Требуется найти фразу в таблице, если найдена, взять всю строку (с удалением) и вставить в другую таблицу
Если текст нужно искать только в первом столбце, то
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

Juniorcpa

Client
Регистрация
27.05.2014
Сообщения
2 031
Благодарностей
1 285
Баллы
113
Подскажите как взять в таблице определенную ячейку, сравнить с переменной и если они различаются, то записать переменную в нужную ячейку?
Типа менеджера аккаунтов сделать хочу :-)
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 914
Благодарностей
6 381
Баллы
113

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 340
Благодарностей
298
Баллы
83
Помогите переименовать папку?
Что-то не получается переименовать папку. Нашел вот тут как бы ответ, пытаюсь так и сделать, но не получается
  • Есть папка с файлами.
  • Надо взять папку №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\", то ругается и не перемещает.
Неужели нет решения? Что я не так делаю?
 
Последнее редактирование:

LaGir

Client
Регистрация
01.10.2015
Сообщения
211
Благодарностей
849
Баллы
93
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

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 340
Благодарностей
298
Баллы
83
Спасибо большое. Думал уже никто не откликнется
Вот эти две строчки непонятны:
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".
Ещё раз спасибо за помощь
 

dimanis

Client
Регистрация
16.04.2016
Сообщения
195
Благодарностей
110
Баллы
43
Привет народ! Пытаюсь подключится по апи к лайвоину, запросы без авторизации без проблем стандартными кубами, но с авторизацией лыжи не едут. Может сталкивался кто?
Задача:
есть переменные проекта: 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# к зенке, либо просто сделать правильный запрос.
 
Последнее редактирование:

milch19954

Новичок
Регистрация
04.03.2016
Сообщения
13
Благодарностей
6
Баллы
3
Привет народ! Пытаюсь подключится по апи к лайвоину, запросы без авторизации без проблем стандартными кубами, но с авторизацией лыжи не едут. Может сталкивался кто?
Задача:
есть переменные проекта: 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?
 

dimanis

Client
Регистрация
16.04.2016
Сообщения
195
Благодарностей
110
Баллы
43

WEISS

Client
Регистрация
11.12.2015
Сообщения
115
Благодарностей
25
Баллы
28
Добрый день!
Беру капчу 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;

Подскажите как прописать помимо пути куда сохранить, еще и имя из переменной.
Спасибо.
 

zhekan3

Client
Регистрация
27.12.2015
Сообщения
32
Благодарностей
4
Баллы
8
Спасибо, но заработал только вот так
Код:
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://сайт.ру вроде одинакова но ее не удаляет. Не пойму как сделать поиск по части строки. Заранее всем спасибо.
 

КарлМаркс

Активный пользователь
Регистрация
11.07.2017
Сообщения
200
Благодарностей
64
Баллы
28

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с КарлМаркс какие-либо сделки.

Нужен сниппет.
На странице есть несколько форм с одинаковыми названиями login.
Нужно заполнить все формы с указанным именем. В курсах ростоникса было такое но не могу найти.
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Нужен сниппет.
На странице есть несколько форм с одинаковыми названиями login.
Нужно заполнить все формы с указанным именем. В курсах ростоникса было такое но не могу найти.
Недавно выборочно смотрел 2 часть курса Ростоникса, то что Вам надо находится - 1. Вступление aka Базовые вещи > Base2_Коллекции элементов.mp4
 

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 278
Благодарностей
96
Баллы
48
Добрый день, подскажите, реально сделать такой сниппет где будет несколько выпадающих списков, после выбора всех значений из которых нажимается кнопка, добавляются выбранные значения куда-нибудь (например в текстбокс) и так можно сделать не один раз, а в конце жмется кнопка закрытия формы и все
 

КарлМаркс

Активный пользователь
Регистрация
11.07.2017
Сообщения
200
Благодарностей
64
Баллы
28

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с КарлМаркс какие-либо сделки.

Есть два сниппета


Код:
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;
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
211
Благодарностей
849
Баллы
93
Как сделать так что бы на распознование шла только видимая капча ?
Если правильно понял задачу, то примерно так:
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), "");
            //Вводим результат распознавания в нужное место
            //...
        }
    }
}
 
  • Спасибо
Реакции: КарлМаркс

КарлМаркс

Активный пользователь
Регистрация
11.07.2017
Сообщения
200
Благодарностей
64
Баллы
28

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с КарлМаркс какие-либо сделки.

Если правильно понял задачу, то примерно так:
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), "");
            //Вводим результат распознавания в нужное место
            //...
        }
    }
}
Да именно так спасибо.
 

Gllory

Client
Регистрация
19.06.2017
Сообщения
43
Благодарностей
10
Баллы
8
Всем привет.
Как можно вставить текст из буфера обмена в переменную?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 595
Баллы
113

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 758
Благодарностей
2 392
Баллы
113
Привет народ! Пытаюсь подключится по апи к лайвоину, запросы без авторизации без проблем стандартными кубами, но с авторизацией лыжи не едут. Может сталкивался кто?
Задача:
есть переменные проекта: 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

КарлМаркс

Активный пользователь
Регистрация
11.07.2017
Сообщения
200
Благодарностей
64
Баллы
28

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с КарлМаркс какие-либо сделки.

А ни у кого нет сниппета который выводит самые популярные слова из текста ?
 

WEISS

Client
Регистрация
11.12.2015
Сообщения
115
Благодарностей
25
Баллы
28
Код ищет совпадение в одном списке
Код:
// берем из переменной текст, который надо искать
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-х) списках.
Спасибо.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 159
Благодарностей
2 159
Баллы
113
А ни у кого нет сниппета который выводит самые популярные слова из текста ?
Вот те основная часть, но вокруг нее надо еще кубиками, или в том же коде доделать логику.
Код:
//С# снипет определяет кол-во вхождений слова в тексте
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/threads/vyjavit-slova-reguljarkoj-naibolee-chasto-vstrechajuschiesja-v-tekste.27146/
http://zennolab.com/discussion/threads/poluchit-slova.32675/
 
Последнее редактирование:

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