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

Medvedoc

Client
Регистрация
01.04.2017
Сообщения
164
Благодарностей
10
Баллы
18
Сниппет C#: If (обрабатывание переменной DropDown Multiselect)
Описание:
Сниппет полезен для работы с DropDown Multiselect, когда необходимо обработать значение выходной переменной. Из DropDown Multiselect берется значение переменная. Выглядит она примерно так Вариант1, Вариант2, Вариант3 и т.д.. Сниппет для начала удаляет пробелы, идущие перед запятой, а потом преобразует строку в подстроки и заносит их в список. Затем поочередно перебирает в списке получившиеся строки и если они соответствуют заданному условию выполняет указанное действие.

Код:
var list = project.Lists["Список"];
string text = project.Variables["Значение переменной"].Value;

//очищаем список и обнуляем значения переменных
list.Clear();

//удаляем пробелы, идущие перед запятой
text = text.Replace(", ", ",");

//преобразование строки в подстроки с занесением в список
string[] words = text.Split(new char[] {','});
foreach (string s in words)
    {
        list.Add(s);
    }

//перебираем список и если есть совпадение, то задаем переменной значение
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list.Count; i++)
    {
        var str = list[i];
        if (str.Contains("Значение 1")) {
            project.SendInfoToLog("есть Значение 1", true);
        }
        else if (str.Contains("Значение 2")) {
            project.SendInfoToLog("есть Значение 2", true);
        }
        else if (str.Contains("Значение 3")) {
            project.SendInfoToLog("есть Значение 3", true);
        }
    }
    project.SendInfoToLog("нет", true);
}
 

Вложения

Последнее редактирование:

Medvedoc

Client
Регистрация
01.04.2017
Сообщения
164
Благодарностей
10
Баллы
18
Сниппет C#: Authorize (авторизация на сайте)
Описание:
Данный сниппет будет полезен для авторизации на сайтах. Также его можно легко переделать и для формы регистрации. Единственное сниппет не поддерживает решение каптчи.

Код:
//authorize авторизация на сайте

instance.ClearCache(); //чистим кэш
instance.ClearCookie(); //чистим куки

Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;//проверяем на наличие открытой активной вкладки
if (tab.IsBusy) tab.WaitDownloading();//ждем полной загружки страницы
tab.Navigate("Вводим ссылку на сайт", ""); //переходим по ссылке
if (tab.IsBusy) tab.WaitDownloading();//ждем полной загружки страницы
project.SendInfoToLog("Перешли на сайт", true);

// Задержка эмуляции
instance.WaitFieldEmulationDelay();

//ищем элемент поля ввода логина
HtmlElement userlogin = instance.ActiveTab.FindElementByAttribute("Ввод тега", "Ввод атрибута", "Ввод значения атрибута", "text или regex", 0);
//проверяем на наличие элемента
if (userlogin.IsVoid) return -1;
//вводим в поле значение из переменной
userlogin.SetValue(project.Variables["Значение переменной логина"].Value, instance.EmulationLevel, false);
project.SendInfoToLog("Логин успешно введен", true);

//ищем элемент поля ввода пароля
HtmlElement userpassword = instance.ActiveTab.FindElementByAttribute("Ввод тега", "Ввод атрибута", "Ввод значения атрибута", "text или regex", 0);
//проверяем на наличие элемента
if (userpassword.IsVoid) return -1;
//вводим в поле значение из переменной
userpassword.SetValue(project.Variables["Значение переменной пароля"].Value, instance.EmulationLevel, false);
project.SendInfoToLog("Пароль успешно введен", true);

//ищем кнопку авторизации
HtmlElement autobutton = instance.ActiveTab.FindElementByAttribute("Ввод тега", "Ввод атрибута", "Ввод значения атрибута", "text или regex", 0);
//проверяем на наличие элемента
if (autobutton.IsVoid) return -1;
//нажимаем на кнопку авторизации
autobutton.Click();
project.SendInfoToLog("Авторизация прошла успешно", true);
 

Вложения

YarikF

Client
Регистрация
21.01.2018
Сообщения
13
Благодарностей
2
Баллы
3
Ребят, не кидайте камнями. Нужен сниппет под zennodroid для разгадывания Funcaptcha. Продайте или укажите к кому обратиться. Всю голову сломал уже...
 

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
162
Баллы
43
Как модифицировать данный код что-бы обработка списка велась по нескольким регурякам

C#:
/*СПИСОК - удалить элементы, удовлетворяющие регулярному выражению*/
var list = project.Lists["List"];
Regex reg = new Regex("Регулярка");
/* следующая ргулярка */
Regex reg_2 = new Regex("Регулярка");
/* следующая ргулярка */
Regex reg_3 = new Regex("Регулярка");

lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list.Count; i++)
    {
        string str = list[i];
        if (reg.IsMatch(str))
        {
            list.RemoveAt(i);
            i--;
        }
    }
}
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
попробуй через или
примерно так если правильно понял

C#:
/*СПИСОК - удалить элементы, удовлетворяющие регулярному выражению*/
var list = project.Lists["List"];
Regex reg = new Regex("Регулярка");
/* следующая ргулярка */
Regex reg_2 = new Regex("Регулярка");
/* следующая ргулярка */
Regex reg_3 = new Regex("Регулярка");
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list.Count; i++)
    {
        string str = list[i];
        if (reg.IsMatch(str) || reg_2.IsMatch(str) || reg_3.IsMatch(str))
        {
            list.RemoveAt(i);
            i--;
        }
    }
}
 
  • Спасибо
Реакции: inotoxic

DmKa

Client
Регистрация
24.09.2017
Сообщения
126
Благодарностей
16
Баллы
18
Помогите плиз извлечь квадратный корень из числа(переменной) :-)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Помогите плиз извлечь квадратный корень из числа(переменной) :-)
C#:
var number = project.Variables["number"].Value;//"43564";

double a = Convert.ToDouble(number);
a = Math.Sqrt(a);
return a.ToString();//Результат: 208,719908010712
 
  • Спасибо
Реакции: DmKa

DmKa

Client
Регистрация
24.09.2017
Сообщения
126
Благодарностей
16
Баллы
18
Огромное спасибо! работает.
 

Prosto

Client
Регистрация
29.09.2010
Сообщения
24
Благодарностей
2
Баллы
3
Понимаю, что нужно использовать TickCount, но в коде пока только начальные представления. Вообщем необходимо, чтобы после некоторых действий, один из следующих кубиков сработал через определенный период в некотором диапазоне, к примеру 5-7 сек. Пауза не подходит.
Прошу помочь
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Понимаю, что нужно использовать TickCount, но в коде пока только начальные представления. Вообщем необходимо, чтобы после некоторых действий, один из следующих кубиков сработал через определенный период в некотором диапазоне, к примеру 5-7 сек. Пауза не подходит.
Прошу помочь
а что в коде как если не паузой ?
как то недопонимаю я что имено надо, поставь рандомную паузу в том же кубике, ну если пауза неустраивает, закрой зенопостер и заново его запусти
 

Prosto

Client
Регистрация
29.09.2010
Сообщения
24
Благодарностей
2
Баллы
3
Зенно будет работать в связке с другой программой и пауза зенно это относительная вещь, от какого-то момента до срабатывания кубика. Пример в 5-7 сек. условен, правильно было бы указывать миллисекунды.
Вообщем привязка идёт на реальное время исполнения.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Зенно будет работать в связке с другой программой и пауза зенно это относительная вещь, от какого-то момента до срабатывания кубика. Пример в 5-7 сек. условен, правильно было бы указывать миллисекунды.
Вообщем привязка идёт на реальное время исполнения.
вообще ничего не понимаю что надо, ну и поставь цикл в милисекундах в коде
 

Prosto

Client
Регистрация
29.09.2010
Сообщения
24
Благодарностей
2
Баллы
3
)
Допустим на старте получил значение TickCount = 100, шагами позже подходит момент для нужного мне кубика, который должен сработать в промежутке TickCount = 110, 115.
Как это должно выглядеть в коде - вопрос
 
Последнее редактирование:

mladenec45

Client
Регистрация
27.01.2016
Сообщения
3
Благодарностей
0
Баллы
1
кто подскажет как можно из такого предложения к примеру

Про любовь. Только для взрослых (2017) - Трейлер заменить на такое регуляркой или снипет

Про\ любовь\.\ Только\ для\ взрослых\ \(2017\)\ \ -\ Трейлер
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
кто подскажет как можно из такого предложения к примеру

Про любовь. Только для взрослых (2017) - Трейлер заменить на такое регуляркой или снипет

Про\ любовь\.\ Только\ для\ взрослых\ \(2017\)\ \ -\ Трейлер
обработка текста --- эскейп строки
 
  • Спасибо
Реакции: mladenec45

fri-lancer

Client
Регистрация
01.10.2013
Сообщения
409
Благодарностей
155
Баллы
43
del
 
Последнее редактирование:

Ara

Client
Регистрация
14.02.2018
Сообщения
192
Благодарностей
14
Баллы
18
кто подскажет - есть папка "мебель" в ней 10 папок "стулья" "столы" "кухня" и т.д как запаковать каждую папку и удалить те что паковались .

пс. или кто подскажет пару таких примеров ( как запаковывать папки, залить пару фото на фотохостинг и т.д за небольшое "вознаграждение " )
 

Emilian

Новичок
Регистрация
18.05.2016
Сообщения
2
Благодарностей
1
Баллы
3
Здравствуйте, подскажите пожалуйста как сделать.
Есть список с "BUF" данными, пример:

Привет1<br>
Привет2<br>

Нужно получить на выходе:

Привет1
Привет2

То есть, заменить в каждой строчке по регулярным выражением "<br>".

Нашел как заменить просто значения при нахождение текста в строчке, а нужно именно заменить то что строчке

Код:
var sourceList = project.Lists["BUF"];
var parserRegex = new Regex("<br>.*?"); // Вот регулярка на поиск чисел
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++) // Пробегаемся по списку
    {
        if (parserRegex.IsMatch(sourceList[i])) // Если регулярка срабатывает, то..
        {
            sourceList[i]=""; // Заменяем текущий элемент
        }
    }
}
 

mrakolis

Client
Регистрация
22.09.2016
Сообщения
106
Благодарностей
3
Баллы
18
столкнулся с ситуацией - у нас есть замкнутый цикл где мы получаем в одной и той же переменной разные значения - эти значения легко записать в список - но нужно все эти значения получить в одной строчке - есть вариант обьеденить элементы списка-есть такой екшен в операциях над списком- (если записать все значения в список) - но он требует физической привязки к существующему списку на компьютере и это отменяет многопоток -
видимо без си шарпа из этой ситуации легко не выйти -
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Привет всем. Помогите решить проблему с подсчетом вхождений в вложенном цикле.
Есть список в котором берется строка с удалением и в цикле прогоняется по второму столбцу таблицы, на предмет совпадений, если есть совпадение +1 в переменную count и запись результата инкремента в таблицу ResultTable.
Но счетчик count записывает всегда 1 вместо суммы совпадений, перепробовал много вариантов и никак.. Вариант подсчета в снипете нормально работает только без внешнего цикла.

Код:
var DataTables = project.Tables["DataTables"];
var ResultTable = project.Tables["ResultTable"];
var CatIdsList = project.Lists["CatIdsList"];

for(int i = 0; i < CatIdsList.Count; i++)

    {
        int count = 0; //Переменная счетчика
      //string CatId = "45613";
        string CatId = CatIdsList.GetItem("0", true); //Берем из списка Id категории с удалением
    
        for(int j = 0; j < DataTables.RowCount; j++)
        {
          var cells = DataTables.GetRow(j).ToArray(); //Строка таблици в массив
      
            //Счетчик совпадений
            if(cells[2] == CatId)
            {
                   count++;
               //++count;
               //count = count + 1;  
          
            }
            if(j == TableCount - 1)
            {
             string CatInfo = CatId + ":" + count;
             ResultTable.ColSeparator = ":";
             ResultTable.AddRow(CatInfo);
            }
      
        }
      
          
    }
 
Последнее редактирование:

LaGir

Client
Регистрация
01.10.2015
Сообщения
211
Благодарностей
852
Баллы
93
Но счетчик count записывает всегда 1 вместо суммы совпадений, перепробовал много вариантов и никак.. Вариант подсчета в снипете нормально работает только без внешнего цикла.
Объявление переменной count нужно вынести за пределы внешнего цикла. Сейчас на каждой итерации внешнего цикла она объявляется заново, заново становится равна 0.
C#:
var DataTables = project.Tables["DataTables"];
var ResultTable = project.Tables["ResultTable"];
var CatIdsList = project.Lists["CatIdsList"];

int count = 0; //Переменная счетчика

for(int i = 0; i < CatIdsList.Count; i++)
{
    //string CatId = "45613";
    string CatId = Items.GetItem("0", true); //Берем из списка Id категории с удалением
   
    for(int j = 0; j < DataTables.RowCount; j++)
    {
        var cells = DataTables.GetRow(j).ToArray(); //Строка таблици в массив
       
        //Счетчик совпадений
        if(cells[2] == CatId)
        {
            count++;
            //++count;
            //count = count + 1; 
        }
        if(j == TableCount - 1)
        {
            string CatInfo = CatId + ":" + count;
            ResultTable.ColSeparator = ":";
            ResultTable.AddRow(CatInfo);
        }
    }
}
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
а как он вообще работает ?
это переменные Items - TableCount ?
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Объявление переменной count нужно вынести за пределы внешнего цикла. Сейчас на каждой итерации внешнего цикла она объявляется заново, заново становится равна 0.
C#:
var DataTables = project.Tables["DataTables"];
var ResultTable = project.Tables["ResultTable"];
var CatIdsList = project.Lists["CatIdsList"];

int count = 0; //Переменная счетчика

for(int i = 0; i < CatIdsList.Count; i++)
{
    //string CatId = "45613";
    string CatId = Items.GetItem("0", true); //Берем из списка Id категории с удалением
  
    for(int j = 0; j < DataTables.RowCount; j++)
    {
        var cells = DataTables.GetRow(j).ToArray(); //Строка таблици в массив
      
        //Счетчик совпадений
        if(cells[2] == CatId)
        {
            count++;
            //++count;
            //count = count + 1;
        }
        if(j == TableCount - 1)
        {
            string CatInfo = CatId + ":" + count;
            ResultTable.ColSeparator = ":";
            ResultTable.AddRow(CatInfo);
        }
    }
}
Она должна обьявляться заново. При каждой итерации внешнего цикла берется новое значение из списка для подсчета совпадений в столбце таблицы. Вывод переменной count за пределы внешнего цикла не дает результата.
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
211
Благодарностей
852
Баллы
93
Она должна обьявляться заново. При каждой итерации внешнего цикла берется новое значение из списка для подсчета совпадений в столбце таблицы. Вывод переменной count за пределы внешнего цикла не дает результата.
Тогда либо проверяем данные в таблице (может там сумма и должна равна единице), либо ищем несостыковки:
прогоняется по второму столбцу таблицы
//Счетчик совпадений
if(cells[2] == CatId)
cells[2] - это обращение к третьему столбцу, а не ко второму (нумерация в массиве с 0).
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
cells[2] - это обращение к третьему столбцу, а не ко второму (нумерация в массиве с 0).
Номер столбца правильный, описал не правильно.
Вы правы на счет суммы в 1. снипет подсчета дублей рабочий.
Воспользовался снипетом из форума для удаления дублей из списка, а он удалял все, что больше одного раза повторялось в списке. На выходе получалось десяток строк, что вполне нормально и сутки в трубу ушли))
Извиняюсь за украденное время.
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Кто знает, подскажите плиз, как через снипет экспортировать входные настройки в .xml файл?
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
211
Благодарностей
852
Баллы
93
Кто знает, подскажите плиз, как через снипет экспортировать входные настройки в .xml файл?
C#:
string path = @"D:\settings.xml";    //Путь экспорта
File.WriteAllText(path, ZennoPoster.ExportInputSettings(new Guid(project.TaskId)));
(!) Экспорт предназначен для запуска в ZennoPoster, не в ProjectMaker (в PM сохраняет пустой файл).
 
  • Спасибо
Реакции: Severip

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
LaGir, спасибо! Все завелось с первого раза.
А я все не мог понять, почему пустая переменная, а оказывается все дело в ProjectMaker.
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93
Нужна идея как реализовать с JavaScript, document.write.
Код:
YumoqWRI='<a href';RsFTK='="te';BMcWXgxmuu='l: 8961';xVCuBEvDB='35470';VZxxr='99">8&n';xHaaRHG='bsp;(9';OPreKp='61)';QSrJgVdk='&nbsp';OdQdTfNF=';354-70';otpTTB='99&nb';VNNFjcw='sp;<';sjdTARn='/a>';gNvMVZ='';WraAsgC='';GQged='';JQCgCyMF='';chVGXXBkd='';ZCWaSh='';njaOmu='';Vzsmw='';iqFYOTkaGV='';document.write(YumoqWRI+RsFTK+BMcWXgxmuu+xVCuBEvDB+VZxxr+xHaaRHG+OPreKp+QSrJgVdk+OdQdTfNF+otpTTB+VNNFjcw+sjdTARn+gNvMVZ+WraAsgC+GQged+JQCgCyMF+chVGXXBkd+ZCWaSh+njaOmu+Vzsmw+iqFYOTkaGV+'');
Делал на скорую руку через костыль в браузере, но покоя не даёт перенос в шарп.
 

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