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

  • Автор темы Автор темы CSS
  • Дата начала Дата начала
Код Выполняет именно то, что Вы описали. Проверьте свои списки. Возможно, там на момент выполнения кода лежат не те данные, от которых Вы ждете заказанный результат.
Посмотреть вложение 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);

большое спасибо за обновленный код он работает очень хорошо
 
Можно ли перебрать список и удалить определенные слова / символ из каждой строки по мере его обработки?

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

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

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

Суть сниппета - заходим на домен и распаршиваем все ссылки с морды, вторая итеррация - распаршиваем распаршенные ссылки и так n-е количество раз. Все это было в несколько строчек кода на запросах. Спасибо
 
Нужен сниппет для очистки списка при наступлении новых суток. Возможно ли это сделать?
 
Последнее редактирование:
Можно ли перебрать список и удалить определенные слова / символ из каждой строки по мере его обработки?

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

Возможно, что строка не содержит ни одного из этих слов / символов, и скрипт просто их пропустит.
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
Возможно, но тут много возможных условий, как и решений. Самое простое, если он привязан к файлу и надо, чтобы каждый день в 00:00 очищался, то можно сделать отдельный шаблон и поставить его на расписание. Отключить использование браузера, а внутри такой код:
C#:
Развернуть Свернуть Копировать
lock(SyncObjects.ListSyncer){
project.Lists["список для очистки"].Clear();
}

А, если количество потоков ограничено версией стандарт, то как можно сделать?
 
А, если количество потоков ограничено версией стандарт, то как можно сделать?
1. купить про
2. сделать консольную версию в визуал студии и поставить на расписание через расписание винды.
 
  • Спасибо
Реакции: Sardol
Доброго дня!
Подскажите как из C# получить текст WARNINGa выводимого в лог?
project.GetLastError() не подходи, так как туда записывается ошибка приведшая к завершению проекта, а нужно получить предупреждения которые не привели к завершению проекта.
 
Доброго дня!
Подскажите как из C# получить текст WARNINGa выводимого в лог?
project.GetLastError() не подходи, так как туда записывается ошибка приведшая к завершению проекта, а нужно получить предупреждения которые не привели к завершению проекта.
никак.
цель какая ?
 
В основном для анализа и принятия решения что скрипту делать дальше. В каких-то случаях не загружается профиль, в каких-то не находится искомый текст. Так то процесс выглядит следующим образом; не нашел один текст, записал в переменную отметку что не нашел, записал в лог или базу что не нашел, пошел искать другой. Если бы была системная переменная в которой уже содержится текст варнинга, то пункт "записал в переменную отметку что не нашел" можно было бы исключить из схемы.
 
В основном для анализа и принятия решения что скрипту делать дальше. В каких-то случаях не загружается профиль, в каких-то не находится искомый текст. Так то процесс выглядит следующим образом; не нашел один текст, записал в переменную отметку что не нашел, записал в лог или базу что не нашел, пошел искать другой. Если бы была системная переменная в которой уже содержится текст варнинга, то пункт "записал в переменную отметку что не нашел" можно было бы исключить из схемы.
для этого есть переменные и ветвление логики. есть проверки по тексту, по регулярке, поиск по списку и в у каждого есть выход по красной линии. логика в скрипте должна выстраиваться так что скрипт однозначно понимал в каком состоянии он находится и всегда знал что он выводит в лог, а не пытался угадать уже постфактум, что же пошло не так. загрузка профиля тоже генерирует выход по красной линии при ошибке загрузки.
 
Добрый день!
Шаблон при выполнении задачи записывает переменную "time_t" в виде "30.07.2021 22:58:09".
Нужно получить другую переменную "time_s" - системное время компютера.
Далее нас интересует разница этих переменных "time_s - time_t". Разница должна быть меньше 7 минут(например).

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

Очень буду благодарен за снипет. Мне не понятно как получить системное время "time_s" и провести вычитание в минутах (хотя понятно, что можно привести все и к секундам).
 
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
Большое спасибо, работает!
У меня выход по красной ветке, попадает на другую логику.
Если превышение заданных 7минут меньше 1 минуты, то шаблон выполняется по зеленой ветке, если более 1 минуты, то по красной.
У меня просьба, как ts.AddMinutes(7) - DateTime.Now первести в переменную, чтобы иметь возможность сравнить его с заданным значением (1минутой)?
 
Большое спасибо, работает!
У меня выход по красной ветке, попадает на другую логику.
Если превышение заданных 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
Есть снипет который гинерирует числа от 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);
 
Есть снипет который гинерирует числа от 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
Так?

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]
 
Есть снипет который гинерирует числа от 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
Вот такое результат в переменное отдается, не то :-))
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
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
 
Почти так как нужно, но еще момент, что результат в переменной должен быть не в одну строку, а с новой.
Например
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
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
 
Огонь , вы настоящий гуру в 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
У меня есть снипет, который получает количество txt файлов из папки заданной в переменной path_Save_Text_Dir
C#:
Развернуть Свернуть Копировать
return System.IO.Directory.GetFiles(project.Variables["path_Save_Text_Dir"].Value,"*.txt").Length;

Нужно подправить, чтобы получить количество папок в основной папки.
 
У меня есть снипет, который получает количество 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
C#:
Развернуть Свернуть Копировать
return System.IO.Directory.GetDirectories(project.Variables["path_Save_Text_Dir"].Value).Length;
C#:
Развернуть Свернуть Копировать
return System.IO.Directory.GetDirectories(project.Variables["path_Save_Text_Dir"].Value).Length;
Логично кстати, только сейчас обратил внимание GetFiles и GetDirectories, спасибо дружище
 
Добрый день.
ниже пример кода, который выводит инфу в лог, а как изменить, чтобы вывод был в переменные
к примеру:
в выводе будет к примеру 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
    );
}
 
в выводе будет к примеру 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

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