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

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
Код Выполняет именно то, что Вы описали. Проверьте свои списки. Возможно, там на момент выполнения кода лежат не те данные, от которых Вы ждете заказанный результат.
Посмотреть вложение 78954
C#:
//Очищу списки
foreach(string s in new[]{"A", "B"})
    project.Lists[s].Clear();
//Заполню списки тестовыми данными
var A = project.Lists["A"];
A.Add("какие-то данные_1");
A.Add("какие-то данные_2");
A.Add("какие-то данные_3");
A.Add("какие-то данные_4");
A.Add("какие-то данные_5");
var B = project.Lists["B"];
B.Add("some data_youtube");
B.Add("some data_2");
B.Add("some data_3");
B.Add("some data_4");
B.Add("some data_iframe");
//Выполню замену строк в списке B строками из списка A, если в них имеются слова из массива
for(int i = 0; i < B.Count; i++)
    foreach(string str in new[]{"youtube", "iframe"})
        if(B[i].Contains(str))
            B[i] = A[i];
//Посмотрю, что теперь в списке B
return string.Join(Environment.NewLine, B);
большое спасибо за обновленный код он работает очень хорошо
 

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
Можно ли перебрать список и удалить определенные слова / символ из каждой строки по мере его обработки?

Пример:
Если эта строка содержит # или%, или и то, и другое, по мере того, как скрипт запускает каждую строку, он удалит указанное слово / символы.

Возможно, что строка не содержит ни одного из этих слов / символов, и скрипт просто их пропустит.
 

Nord

Client
Регистрация
22.03.2012
Сообщения
2 408
Благодарностей
1 474
Баллы
113
Товарищи, поделитесь сниппетом по распаршиванию домена на все урлы.

Он точно когда то был тут, но сейчас не могу найти. Я еще на его основе делел парсер емейлов со всех страниц сайта. Свой парсер тоже где-то протерял давным давно =)

Суть сниппета - заходим на домен и распаршиваем все ссылки с морды, вторая итеррация - распаршиваем распаршенные ссылки и так n-е количество раз. Все это было в несколько строчек кода на запросах. Спасибо
 

Sardol

Client
Регистрация
23.09.2020
Сообщения
193
Благодарностей
45
Баллы
28
Нужен сниппет для очистки списка при наступлении новых суток. Возможно ли это сделать?
 
Последнее редактирование:

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
Можно ли перебрать список и удалить определенные слова / символ из каждой строки по мере его обработки?

Пример:
Если эта строка содержит # или%, или и то, и другое, по мере того, как скрипт запускает каждую строку, он удалит указанное слово / символы.

Возможно, что строка не содержит ни одного из этих слов / символов, и скрипт просто их пропустит.
C#:
var list = project.Lists["список для обработки"];
string[] toDel = new string[]{//массив стоп-слов или символов
    "%",
    "&",
    "стоп-слово",
    "целая стоп фраза"
};
/*тестовые данные
list.Clear();
list.AddRange(new[]{"mama","&","papa","целая стоп фраза","brat%","&sestra","какое-то стоп-слово"});
*/
for(int i = 0; i < list.Count; i++)
    foreach(string del in toDel.Where(x=>list[i].Contains(x)))
        list[i] = list[i].Replace(del, "");
//удаление пустых строк из списка
while(list.Contains(""))
    list.Remove("");
Товарищи, поделитесь сниппетом по распаршиванию домена на все урлы.

Он точно когда то был тут, но сейчас не могу найти. Я еще на его основе делел парсер емейлов со всех страниц сайта. Свой парсер тоже где-то протерял давным давно =)

Суть сниппета - заходим на домен и распаршиваем все ссылки с морды, вторая итеррация - распаршиваем распаршенные ссылки и так n-е количество раз. Все это было в несколько строчек кода на запросах. Спасибо
Универсальный сниппет под это дело отнимет кучу времени, которого у меня нет, но Вы можете начать заново, например, с этой заготовки.
https://zennolab.com/discussion/threads/parser-vneshnix-i-vnutrennix-ssylok.77533/
Нужен сниппет для очистки списка при наступлении новых суток. Возможно ли это сделать?
Возможно, но тут много возможных условий, как и решений. Самое простое, если он привязан к файлу и надо, чтобы каждый день в 00:00 очищался, то можно сделать отдельный шаблон и поставить его на расписание. Отключить использование браузера, а внутри такой код:
C#:
lock(SyncObjects.ListSyncer){
    project.Lists["список для очистки"].Clear();
}
 
  • Спасибо
Реакции: Nord и Sardol

Sardol

Client
Регистрация
23.09.2020
Сообщения
193
Благодарностей
45
Баллы
28
Возможно, но тут много возможных условий, как и решений. Самое простое, если он привязан к файлу и надо, чтобы каждый день в 00:00 очищался, то можно сделать отдельный шаблон и поставить его на расписание. Отключить использование браузера, а внутри такой код:
C#:
lock(SyncObjects.ListSyncer){
project.Lists["список для очистки"].Clear();
}
А, если количество потоков ограничено версией стандарт, то как можно сделать?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
А, если количество потоков ограничено версией стандарт, то как можно сделать?
1. купить про
2. сделать консольную версию в визуал студии и поставить на расписание через расписание винды.
 
  • Спасибо
Реакции: Sardol

SVRyzhov

Client
Регистрация
17.05.2017
Сообщения
47
Благодарностей
5
Баллы
8
Доброго дня!
Подскажите как из C# получить текст WARNINGa выводимого в лог?
project.GetLastError() не подходи, так как туда записывается ошибка приведшая к завершению проекта, а нужно получить предупреждения которые не привели к завершению проекта.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
Доброго дня!
Подскажите как из C# получить текст WARNINGa выводимого в лог?
project.GetLastError() не подходи, так как туда записывается ошибка приведшая к завершению проекта, а нужно получить предупреждения которые не привели к завершению проекта.
никак.
цель какая ?
 

SVRyzhov

Client
Регистрация
17.05.2017
Сообщения
47
Благодарностей
5
Баллы
8
В основном для анализа и принятия решения что скрипту делать дальше. В каких-то случаях не загружается профиль, в каких-то не находится искомый текст. Так то процесс выглядит следующим образом; не нашел один текст, записал в переменную отметку что не нашел, записал в лог или базу что не нашел, пошел искать другой. Если бы была системная переменная в которой уже содержится текст варнинга, то пункт "записал в переменную отметку что не нашел" можно было бы исключить из схемы.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
В основном для анализа и принятия решения что скрипту делать дальше. В каких-то случаях не загружается профиль, в каких-то не находится искомый текст. Так то процесс выглядит следующим образом; не нашел один текст, записал в переменную отметку что не нашел, записал в лог или базу что не нашел, пошел искать другой. Если бы была системная переменная в которой уже содержится текст варнинга, то пункт "записал в переменную отметку что не нашел" можно было бы исключить из схемы.
для этого есть переменные и ветвление логики. есть проверки по тексту, по регулярке, поиск по списку и в у каждого есть выход по красной линии. логика в скрипте должна выстраиваться так что скрипт однозначно понимал в каком состоянии он находится и всегда знал что он выводит в лог, а не пытался угадать уже постфактум, что же пошло не так. загрузка профиля тоже генерирует выход по красной линии при ошибке загрузки.
 

Alex.A

Client
Регистрация
14.11.2020
Сообщения
426
Благодарностей
197
Баллы
43
Добрый день!
Шаблон при выполнении задачи записывает переменную "time_t" в виде "30.07.2021 22:58:09".
Нужно получить другую переменную "time_s" - системное время компютера.
Далее нас интересует разница этих переменных "time_s - time_t". Разница должна быть меньше 7 минут(например).

Далее по логике если разница меньше 7 минут то идет продолжение выполнения шаблона по зеленой ветке, если нет, то шаблон выполняется по красной ветке.

Очень буду благодарен за снипет. Мне не понятно как получить системное время "time_s" и провести вычитание в минутах (хотя понятно, что можно привести все и к секундам).
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
C#:
if(DateTime.TryParse(project.Variables["time_t"].Value, out DateTime ts)){
    if (ts.AddMinutes(7) - DateTime.Now < TimeSpan.Zero){
        throw new Exception("прошло более 7 минут");
    }
}
else throw new Exception("Не удалось распознать дату в переменной 'time_t'");
 
  • Спасибо
Реакции: Alex.A и BAZAg

Alex.A

Client
Регистрация
14.11.2020
Сообщения
426
Благодарностей
197
Баллы
43
Большое спасибо, работает!
У меня выход по красной ветке, попадает на другую логику.
Если превышение заданных 7минут меньше 1 минуты, то шаблон выполняется по зеленой ветке, если более 1 минуты, то по красной.
У меня просьба, как ts.AddMinutes(7) - DateTime.Now первести в переменную, чтобы иметь возможность сравнить его с заданным значением (1минутой)?
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
Большое спасибо, работает!
У меня выход по красной ветке, попадает на другую логику.
Если превышение заданных 7минут меньше 1 минуты, то шаблон выполняется по зеленой ветке, если более 1 минуты, то по красной.
У меня просьба, как ts.AddMinutes(7) - DateTime.Now первести в переменную, чтобы иметь возможность сравнить его с заданным значением (1минутой)?
project.Variables["time_s"].Value = (ts.AddMinutes(7) - DateTime.Now).ToString(); вставьте это между 2 и 3 строками. Переменная time_s должна существовать или замените имя на свою.
Или используйте в следующем действии этот же сниппет, только вычитайте не 7, а 8 минут.
 
  • Спасибо
Реакции: Alex.A

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
Есть снипет который гинерирует числа от X до X
Например в переменной numb_start = 1
numb_max = 5
На выходе получим в переменную результат
1
2
3
4
5
Как перед цифрой добавить свой текст ? Не знаю как править снипет

C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);
int i = 1;

IEnumerable<int> numbers = Enumerable.Range(start, max - start + 1).Where(x => x % i == 0);
return string.Join(Environment.NewLine, numbers);
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 568
Благодарностей
1 368
Баллы
113
Есть снипет который гинерирует числа от X до X
Например в переменной numb_start = 1
numb_max = 5
На выходе получим в переменную результат
1
2
3
4
5
Как перед цифрой добавить свой текст ? Не знаю как править снипет

C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);
int i = 1;

IEnumerable<int> numbers = Enumerable.Range(start, max - start + 1).Where(x => x % i == 0);
return string.Join(Environment.NewLine, numbers);
Так?

C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);
int i = 1;
string text = project.Variables["ИмяПеременной с текстов"].Value;

IEnumerable<int> numbers = Enumerable.Range(start, max - start + 1).Where(x => x % i == 0);
return string.Join(Environment.NewLine, text +"_"+ numbers);
 
  • Спасибо
Реакции: udder

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
Так?

C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);
int i = 1;
string text = project.Variables["ИмяПеременной с текстов"].Value;

IEnumerable<int> numbers = Enumerable.Range(start, max - start + 1).Where(x => x % i == 0);
return string.Join(Environment.NewLine, text +"_"+ numbers);
Так?

C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);
int i = 1;
string text = project.Variables["ИмяПеременной с текстов"].Value;

IEnumerable<int> numbers = Enumerable.Range(start, max - start + 1).Where(x => x % i == 0);
return string.Join(Environment.NewLine, text +"_"+ numbers);
Вот такое результат в переменное отдается, не то :-))
test_System.Linq.Enumerable+WhereEnumerableIterator`1[System.Int32]
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
582
Баллы
93
Есть снипет который гинерирует числа от X до X
Например в переменной numb_start = 1
numb_max = 5
На выходе получим в переменную результат
1
2
3
4
5
Как перед цифрой добавить свой текст ? Не знаю как править снипет

C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);
int i = 1;

IEnumerable<int> numbers = Enumerable.Range(start, max - start + 1).Where(x => x % i == 0);
return string.Join(Environment.NewLine, numbers);
C#:
return string.Join("\n", Enumerable.Range(1, 5).ToList().Select(x => "Слоово " + x));
 
  • Спасибо
Реакции: udder и Alexmd

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 568
Благодарностей
1 368
Баллы
113
Вот такое результат в переменное отдается, не то :-))
test_System.Linq.Enumerable+WhereEnumerableIterator`1[System.Int32]
C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);

// Временны список для чисел
List<string> SpisokChisel = new List<string>();
string text = project.Variables["ИмяПеременной с текстов"].Value;

while (start <= max)
{
    
    
    // Складируем числа в список
    SpisokChisel.Add(Convert.ToString(text +"_"+ start));
    
    // +1 К цифре
    start++;
    
}

return string.Join("\n", SpisokChisel);
 
  • Спасибо
Реакции: udder

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);

// Временны список для чисел
List<string> SpisokChisel = new List<string>();
string text = project.Variables["ИмяПеременной с текстов"].Value;

while (start <= max)
{
   
   
    // Складируем числа в список
    SpisokChisel.Add(Convert.ToString(text +"_"+ start));
   
    // +1 К цифре
    start++;
   
}

return string.Join("\n", SpisokChisel);
Почти так как нужно, но еще момент, что результат в переменной должен быть не в одну строку, а с новой.
Например
test1
test2
test3
а сейчас так
test1test2test3
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 568
Благодарностей
1 368
Баллы
113
Почти так как нужно, но еще момент, что результат в переменной должен быть не в одну строку, а с новой.
Например
test1
test2
test3
а сейчас так
test1test2test3

C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);

// Временны список для чисел
List<string> SpisokChisel = new List<string>();
string text = project.Variables["ИмяПеременной с текстов"].Value;

while (start <= max)
{
    
    
    // Складируем числа в список
    SpisokChisel.Add(Convert.ToString(text +"_"+ start));
    
    // +1 К цифре
    start++;
    
}

project.Variables["ИмяПеременнойКудаВыгрузить"].Value = string.Join("\r\n", SpisokChisel);

return string.Join("\n", SpisokChisel);
 
  • Спасибо
Реакции: udder

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);

// Временны список для чисел
List<string> SpisokChisel = new List<string>();
string text = project.Variables["ИмяПеременной с текстов"].Value;

while (start <= max)
{
   
   
    // Складируем числа в список
    SpisokChisel.Add(Convert.ToString(text +"_"+ start));
   
    // +1 К цифре
    start++;
   
}

project.Variables["ИмяПеременнойКудаВыгрузить"].Value = string.Join("\r\n", SpisokChisel);

return string.Join("\n", SpisokChisel);
Огонь , вы настоящий гуру в C# :-)
Жаль я сразу не сказал как нужно, вынужден опять дополнить:

на выходе получаю как и просил
test1
test2
test3

пожалуйста, еще один вариант, чтобы на выходе было
test1.domain.ru
test2.domain.ru
test3.domain.ru
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 568
Благодарностей
1 368
Баллы
113
Огонь , вы настоящий гуру в C# :-)
Жаль я сразу не сказал как нужно, вынужден опять дополнить:

на выходе получаю как и просил
test1
test2
test3

пожалуйста, еще один вариант, чтобы на выходе было
test1.domain.ru
test2.domain.ru
test3.domain.ru
C#:
int start = int.Parse(project.Variables["numb_start"].Value);
int max = int.Parse(project.Variables["numb_max"].Value);

// Временны список для чисел
List<string> SpisokChisel = new List<string>();
string text = project.Variables["ИмяПеременной с текстов"].Value;

while (start <= max)
{
    
    
    // Складируем числа в список
    SpisokChisel.Add(Convert.ToString("test" + start +".domain.ru"));
    
    // +1 К цифре
    start++;
    
}

project.Variables["ИмяПеременнойКудаВыгрузить"].Value = string.Join("\r\n", SpisokChisel);

return string.Join("\n", SpisokChisel);
 
  • Спасибо
Реакции: udder

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43
У меня есть снипет, который получает количество txt файлов из папки заданной в переменной path_Save_Text_Dir
C#:
return System.IO.Directory.GetFiles(project.Variables["path_Save_Text_Dir"].Value,"*.txt").Length;
Нужно подправить, чтобы получить количество папок в основной папки.
 

daVinchi

Client
Регистрация
11.01.2019
Сообщения
60
Благодарностей
68
Баллы
18
У меня есть снипет, который получает количество txt файлов из папки заданной в переменной path_Save_Text_Dir
C#:
return System.IO.Directory.GetFiles(project.Variables["path_Save_Text_Dir"].Value,"*.txt").Length;
Нужно подправить, чтобы получить количество папок в основной папки.
C#:
return System.IO.Directory.GetDirectories(project.Variables["path_Save_Text_Dir"].Value).Length;
 
  • Спасибо
Реакции: udder

udder

Client
Регистрация
28.03.2017
Сообщения
618
Благодарностей
128
Баллы
43

eksin

Client
Регистрация
09.12.2010
Сообщения
62
Благодарностей
28
Баллы
18
Добрый день.
ниже пример кода, который выводит инфу в лог, а как изменить, чтобы вывод был в переменные
к примеру:
в выводе будет к примеру 12 строк, каждую строку положить в свою переменную( img1,img2,img3...img12)

C#:
var fs = Helper.GetFotoService().service;
//var list = project.Lists["list"];
var list = Directory.GetFiles(@"D:\ML\repos\","*.jpg");
foreach (var f in list)
{
    var answer = fs.CheckFoto(@f);
    var fname = Path.GetFileName(f);
    
    project.SendInfoToLog(
        fname+" "+
        answer.Name + ":" + answer.Score
    );
}
 

daVinchi

Client
Регистрация
11.01.2019
Сообщения
60
Благодарностей
68
Баллы
18
в выводе будет к примеру 12 строк, каждую строку положить в свою переменную( img1,img2,img3...img12)
C#:
var fs = Helper.GetFotoService().service;
//var list = project.Lists["list"];
var list = Directory.GetFiles(@"D:\ML\repos\","*.jpg");

string vParamName = "img"; // Название переменной
int i = 0; // Счетчик

foreach (var f in list)
{
    var answer = fs.CheckFoto(@f);
    var fname = Path.GetFileName(f);
    
    project.SendInfoToLog(
        fname+" "+
        answer.Name + ":" + answer.Score
    );
    
    //проверяем существование переменной, если нет то создаем новую
    if (project.Variables.Keys.Contains(vParamName + i.ToString()))
    {
        project.SendInfoToLog("Переменная "+ vParamName + i.ToString() + " уже существует - присваиваем ей значение");                 
        project.Variables[vParamName].Value = f;
    } else
    {
        project.SendInfoToLog("Создаем переменную " + vParamName + i.ToString() + " и присваиваем ей значение");
        object obj = project.Variables;
        obj.GetType().GetMethod("QuickCreateVariable").Invoke(obj,new Object[]{vParamName + i.ToString()});
        project.Variables[vParamName + i.ToString()].Value = fname;
    }
    
    i++;
}
 
  • Спасибо
Реакции: eksin

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