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

wheeljumpr

Новичок
Регистрация
10.06.2020
Сообщения
2
Благодарностей
0
Баллы
1
Здравствуйте, Есть ли способ выбрать последнее предложение абзаца? Может ли кто-нибудь подсказать мне этот сниппет? Спасибо за любую помощь.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
  • Спасибо
Реакции: wheeljumpr

Markoonij

Client
Регистрация
13.10.2020
Сообщения
70
Благодарностей
3
Баллы
8
Подскажите, по поводу клика с помощью с#
Есть 2 вида XPATH:

1. //button[@class='button button--stretched place-bet-button button--primary']
2. //abc-accordion[@id='123']//span[@class='btn-odds__label' and text()="123"]

Делаю клик с помощью C#:

C#:
foreach(var t in instance.ActiveTab.FindElementsByXPath(@"//button[@class='button button--stretched place-bet-button button--primary']"))
    t.Click();
В первом варианте XPATH все работает. Во втором - нет.
Подскажите, что нужно подправить?
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113
Подскажите, по поводу клика с помощью с#
Есть 2 вида XPATH:

1. //button[@class='button button--stretched place-bet-button button--primary']
2. //abc-accordion[@id='123']//span[@class='btn-odds__label' and text()="123"]

Делаю клик с помощью C#:

C#:
foreach(var t in instance.ActiveTab.FindElementsByXPath(@"//button[@class='button button--stretched place-bet-button button--primary']"))
    t.Click();
В первом варианте XPATH все работает. Во втором - нет.
Подскажите, что нужно подправить?
не используй " или если они так жизненно нужны, то экранируй их ""
 
  • Спасибо
Реакции: Markoonij

Markoonij

Client
Регистрация
13.10.2020
Сообщения
70
Благодарностей
3
Баллы
8

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 789
Благодарностей
5 721
Баллы
113

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
746
Баллы
113
не используй " или если они так жизненно нужны, то экранируй их ""
Как экранировать, покажи пожалуйста?
У меня были случаи двойные кавычки не срабатывали, я делал тогда одинарные кавычке, в Punto Switcher замену сделал, двойные кавычки на одинарные
 

Sardol

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

Без имени.png
 

Sardol

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

Посмотреть вложение 78030

Решено. Огромное спасибо bvbfor ! Забрал в коллекцию снипетов. :dh:
Выкладываю решение, возможно кому-нибудь пригодится.


C#:
// переменная, куда запишем путь к файлу профиля
string prof = project.Variables["profile"].Value;
// считаем все файлы из папки prof
DirectoryInfo dir = new DirectoryInfo(@"путь к директории с профилями");
//перебираем все файлы
foreach (var item in dir.GetFiles())
            {
        // количество минут от даты последнег изменения файла
        var res = (DateTime.Now - item.LastWriteTime).TotalMinutes;
        // если больше 1440 минут, берем этот файл профиля
        if ( res > 1440)
        {
          project.Variables["profile"].Value = item.Name;
          break; // выходим из цикла
        }
            }
 
Последнее редактирование:
  • Спасибо
Реакции: udder и Alex.A

Alex.A

Client
Регистрация
14.11.2020
Сообщения
426
Благодарностей
197
Баллы
43
Добрый день!
Прошу помочь решить такую задачу:
Есть таблица "Table" со столбцами А,B,C,D. Нужно в 3-х последних строках таблицы выяснить, есть ли в столбце "В" значение "04L", а если есть то получить значение (например 87.155.62) из столбца "С" и присвоить его переменной "table_c".
При этом, если среди последних трех строк таблицы есть несколько значений "04L" (как в примере), то из них нужно выбрать самое последнее.
 

Вложения

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 794
Благодарностей
2 466
Баллы
113
Добрый день!
Прошу помочь решить такую задачу:
Есть таблица "Table" со столбцами А,B,C,D. Нужно в 3-х последних строках таблицы выяснить, есть ли в столбце "В" значение "04L", а если есть то получить значение (например 87.155.62) из столбца "С" и присвоить его переменной "table_c".
При этом, если среди последних трех строк таблицы есть несколько значений "04L" (как в примере), то из них нужно выбрать самое последнее.
78742
78743


C#:
IZennoTable table = project.Tables["tb"]; // таблица tb должна существовать в шаблоне

// ДЕМО данные
table.AddRow(new[]{"a0", "b0", "c0", "d0"});
table.AddRow(new[]{"a1", "b1", "c1", "d1"});
table.AddRow(new[]{"a2", "b2", "c2", "d2"});
table.AddRow(new[]{"a3", "b3_04L", "c3", "d3"});
table.AddRow(new[]{"a4", "b4", "c4", "d4"});
table.AddRow(new[]{"a5", "b5", "c5", "d5"});


int count = table.RowCount; // узнаю количество строчек в таблице
int max_count = 3; // Сколько последних значений будем просматривать
string template = "04L"; // Что будем искать
string table_c = string.Empty;

for(int i=0; i<max_count;i++) {
    int item = count-i-1;
    if(item >=0 ){
        string[] row = table.GetRow(item).ToArray();
        if(row[1].Contains(template)) {
            table_c = row[2];
            break; // Значение найдено
        }
        else{
            continue; // Значение не найдено
        }
    }
}
project.Variables["table_c"].Value = table_c; // Сохраняем результат либо пусто (если не найдено)
project.SendInfoToLog(table_c);
 
  • Спасибо
Реакции: Alex.A и Alexmd

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
C#:
var table = project.Tables["Table"];
for (int i = table.RowCount - 1;  i >= table.RowCount - 3; i--)
    if(table.GetCell("B", i).Contains("04L"))
        project.Variables["table_c"].Value = table.GetCell("C", i);
 
  • Спасибо
Реакции: Alex.A и BAZAg

tanichev

Client
Регистрация
14.08.2020
Сообщения
654
Благодарностей
761
Баллы
93
Очень бы помог набор снипетов для работы с видео(ffmpeg), а именно:
  1. Ускорить видео в N раз
  2. Нанести watermark который рандомно меняет координаты каждые N сек.
  3. Склеить N видео
  4. Сжать видео без потери качества
  5. Удалить звуковую дорожку с видео
  6. Добавить звуковую дорожку к видео
  7. Собрать видео из слайдов
 

ArmMonster

Client
Регистрация
10.08.2018
Сообщения
70
Благодарностей
10
Баллы
8
*стерто
 
Последнее редактирование:

tanichev

Client
Регистрация
14.08.2020
Сообщения
654
Благодарностей
761
Баллы
93

Alex.A

Client
Регистрация
14.11.2020
Сообщения
426
Благодарностей
197
Баллы
43
C#:
var table = project.Tables["Table"];
for (int i = table.RowCount - 1;  i >= table.RowCount - 3; i--)
    if(table.GetCell("B", i).Contains("04L"))
        project.Variables["table_c"].Value = table.GetCell("C", i);
Спасибо за ответ, но выдает ошибку. Прилагаю скрин:
 

Вложения

Alex.A

Client
Регистрация
14.11.2020
Сообщения
426
Благодарностей
197
Баллы
43
Посмотреть вложение 78742
Посмотреть вложение 78743


C#:
IZennoTable table = project.Tables["tb"]; // таблица tb должна существовать в шаблоне

// ДЕМО данные
table.AddRow(new[]{"a0", "b0", "c0", "d0"});
table.AddRow(new[]{"a1", "b1", "c1", "d1"});
table.AddRow(new[]{"a2", "b2", "c2", "d2"});
table.AddRow(new[]{"a3", "b3_04L", "c3", "d3"});
table.AddRow(new[]{"a4", "b4", "c4", "d4"});
table.AddRow(new[]{"a5", "b5", "c5", "d5"});


int count = table.RowCount; // узнаю количество строчек в таблице
int max_count = 3; // Сколько последних значений будем просматривать
string template = "04L"; // Что будем искать
string table_c = string.Empty;

for(int i=0; i<max_count;i++) {
    int item = count-i-1;
    if(item >=0 ){
        string[] row = table.GetRow(item).ToArray();
        if(row[1].Contains(template)) {
            table_c = row[2];
            break; // Значение найдено
        }
        else{
            continue; // Значение не найдено
        }
    }
}
project.Variables["table_c"].Value = table_c; // Сохраняем результат либо пусто (если не найдено)
project.SendInfoToLog(table_c);
Спасибо за ответ, но выдает ошибку, прилагаю скрин:
 

Вложения

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 246
Благодарностей
1 821
Баллы
113
  • Спасибо
Реакции: Alex.A

Alex.A

Client
Регистрация
14.11.2020
Сообщения
426
Благодарностей
197
Баллы
43
В коде BAZAg показывает верное значение (последнее из двух 04L).
В коде Alexmd показывает не верное значение (первое значение из двух 04L).
 
  • Спасибо
Реакции: Alexmd

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
В коде BAZAg показывает верное значение (последнее из двух 04L).
В коде Alexmd показывает не верное значение (первое значение из двух 04L).
Вы правы. Моя невнимательность)
Надо так оформить
1623583049222.png
C#:
var table = project.Tables["Table"];
for (int i = table.RowCount - 1;  i >= table.RowCount - 3; i--)
    if(table.GetCell("B", i).Contains("04L"))
        return table.GetCell("C", i);
или оставить, как было, но только добавив break;
C#:
var table = project.Tables["Table"];
for(int i = table.RowCount - 1;  i >= table.RowCount - 3; i--)
    if(table.GetCell("B", i).Contains("04L")){
        project.Variables["table_c"].Value = table.GetCell("C", i);
        break;
    }
 
  • Спасибо
Реакции: Alex.A

zmike

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

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
C#:
var list = project.Lists["список"];
for(int i = 0; i < list.Count; i++)
    list[i] = list[i].Trim();
 
  • Спасибо
Реакции: zmike

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
Большое спасибо за очистку скрипта списка. Работает супер быстро и работает отлично!

Можно ли написать скрипт для следующих действий:

У меня есть список A с 20 строками данных
У меня есть список B, который представляет собой копию перевода A с 20 строками данных.

Может ли скрипт сканировать список B и найти, есть ли совпадение со словом «iframe», тогда он вернется к списку A и возьмет эту строку, содержащую iframe, и заменит строку iframe в списке B.

После этого: он сделает то же самое и просканирует список B и найдет соответствующую строку с Youtube.com. Если такая строка найдена, сценарий вернется к списку A, чтобы взять эту строку и заменить строку списка B, содержащую слово youtube.

В основном это связано с тем, что мой инструмент перевода плохо обрабатывает код iframe и html. Я хочу использовать исходные строковые данные, если мой переведенный список содержит iframe или youtube.

Заранее спасибо!
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
C#:
var A = project.Lists["A"];
var B = project.Lists["B"];
for(int i = 0; i < list.Count; i++)
    foreach(string str in new[]{"iframe", "Youtube.com"})
        if(B[i].Contains(str))
            B[i] = A[i];
А не лучше ли пересмотреть инструмент перевода, чтобы у него не возникало проблем..
 

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
C#:
var A = project.Lists["A"];
var B = project.Lists["B"];
for(int i = 0; i < list.Count; i++)
    foreach(string str in new[]{"iframe", "Youtube.com"})
        if(B[i].Contains(str))
            B[i] = A[i];
А не лучше ли пересмотреть инструмент перевода, чтобы у него не возникало проблем..
Я использую сторонний инструмент для перевода. Таким образом, нет никакого контроля над выводом перевода.

Я попробовал скрипт, у него следующая ошибка:

Компиляция кода ошибки в действии «CS0103» «Имя 'list' не существует в текущем контексте». [Ряд: 3; Колонка: 20]

Не могли бы вы указать, где могли ошибиться, спасибо!
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
Я использую сторонний инструмент для перевода. Таким образом, нет никакого контроля над выводом перевода.

Я попробовал скрипт, у него следующая ошибка:

Компиляция кода ошибки в действии «CS0103» «Имя 'list' не существует в текущем контексте». [Ряд: 3; Колонка: 20]

Не могли бы вы указать, где могли ошибиться, спасибо!
C#:
var A = project.Lists["A"];
var B = project.Lists["B"];
for(int i = 0; i < B.Count; i++)//Здесь:) мы же перебираем список B
    foreach(string str in new[]{"iframe", "Youtube.com"})
        if(B[i].Contains(str))
            B[i] = A[i];
 
  • Спасибо
Реакции: zmike

SVRyzhov

Client
Регистрация
17.05.2017
Сообщения
47
Благодарностей
5
Баллы
8
Привет всем!
Нужно декодировать Quoted-Printable
Нашел код
C#:
var str = @"=C3=87=C3=A4=C3=B0=C3=A0=C3=A2=C3=B1=C3=B2=C3=A2=C3=B3=C3=A9=C3=B2=C3=A5 To=xa45 =20";
var s1 = DecodeQuotedPrintable(str, Encoding.UTF8);
var s2 = Encoding.GetEncoding("iso-8859-15").GetBytes(s1);
var s3 = Encoding.GetEncoding(1251).GetString(s2);
где метод DecodeQuotedPrintable:
C#:
static string DecodeQuotedPrintable(string str, Encoding enc)
{
    var result = new List<byte>();

    str = str.Replace("=\r\n", "");
    for(int i=0;i<str.Length;i++)
    {
        var c = str[i];
        switch (c)
        {
            case '=':
                var b = Convert.ToByte(str.Substring(i + 1, 2), 16);
                result.Add(b);
                i += 2;
                break;
            default:
                result.Add((byte) c);
                break;
        }
    }

    return enc.GetString(result.ToArray());
}
Но не получается его приладить. Подскажите как им правильно воспользоваться и куда чего вставлять
 

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
C#:
var A = project.Lists["A"];
var B = project.Lists["B"];
for(int i = 0; i < B.Count; i++)//Здесь:) мы же перебираем список B
    foreach(string str in new[]{"iframe", "Youtube.com"})
        if(B[i].Contains(str))
            B[i] = A[i];
Код может закончиться на этот раз. Однако у него появилась новая проблема. Если есть строка, соответствующая строке в списке B, то все содержимое списка A копируется в список B. Цель состоит в том, чтобы заменить только конкретную строку, содержащую эту строку.
 

zmike

Client
Регистрация
24.10.2019
Сообщения
133
Благодарностей
8
Баллы
18
Код может закончиться на этот раз. Однако у него появилась новая проблема. Если есть строка, соответствующая строке в списке B, то все содержимое списка A копируется в список B. Цель состоит в том, чтобы заменить только конкретную строку, содержащую эту строку.
Я нашел здесь следующий код
Github

Однако код удаляет конкретную строку, содержащую определенный текст. В любом случае изменить его, чтобы вместо удаления этой строки. Когда эта строка будет найдена, получите номер индекса строки и возьмите точные данные строки из списка A (исходный список) и замените эту строку в списке B (замените эту конкретную строку, найденную конкретным отображаемым текстом)

list code:
// берем из переменной текст, который надо искать
var textContains = project.Variables["Переменная"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Список"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (str.Contains(textContains))
        {
            //удаляем строку содержащую текст
             sourceList.RemoveAt(i);
             // без "i--;" обработка будет некорректной, будет пропускаться строка идущая сразу после удаляющейся строки.
             i--;
        }
    }
}
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
Код может закончиться на этот раз. Однако у него появилась новая проблема. Если есть строка, соответствующая строке в списке B, то все содержимое списка A копируется в список B. Цель состоит в том, чтобы заменить только конкретную строку, содержащую эту строку.
Код Выполняет именно то, что Вы описали. Проверьте свои списки. Возможно, там на момент выполнения кода лежат не те данные, от которых Вы ждете заказанный результат.
1623949033691.png
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);
Привет всем!
Нужно декодировать Quoted-Printable
Нашел код
C#:
var str = @"=C3=87=C3=A4=C3=B0=C3=A0=C3=A2=C3=B1=C3=B2=C3=A2=C3=B3=C3=A9=C3=B2=C3=A5 To=xa45 =20";
var s1 = DecodeQuotedPrintable(str, Encoding.UTF8);
var s2 = Encoding.GetEncoding("iso-8859-15").GetBytes(s1);
var s3 = Encoding.GetEncoding(1251).GetString(s2);
где метод DecodeQuotedPrintable:
C#:
static string DecodeQuotedPrintable(string str, Encoding enc)
{
    var result = new List<byte>();

    str = str.Replace("=\r\n", "");
    for(int i=0;i<str.Length;i++)
    {
        var c = str[i];
        switch (c)
        {
            case '=':
                var b = Convert.ToByte(str.Substring(i + 1, 2), 16);
                result.Add(b);
                i += 2;
                break;
            default:
                result.Add((byte) c);
                break;
        }
    }

    return enc.GetString(result.ToArray());
}
Но не получается его приладить. Подскажите как им правильно воспользоваться и куда чего вставлять
1623950140399.png
1)добавляем общий код

2) вставляем найденный код сюда.
Обзываем public static string.... иначе из кубика его видно не будет

3)вставляем остальной код в кубик и пробуем выполнить.
там то ли строка неверный формат имела, то ли что. не стал разбираться, но отрезав " To=xa45 =20"
код отдал "Здравствуйте".
 
Последнее редактирование:
  • Спасибо
Реакции: TeslaCo, zmike и SVRyzhov

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