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

wheeljumpr

Новичок
Joined
Jun 10, 2020
Messages
2
Reaction score
0
Points
1
Здравствуйте, Есть ли способ выбрать последнее предложение абзаца? Может ли кто-нибудь подсказать мне этот сниппет? Спасибо за любую помощь.
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,650
Points
113
Здравствуйте, Есть ли способ выбрать последнее предложение абзаца? Может ли кто-нибудь подсказать мне этот сниппет? Спасибо за любую помощь.
[^.!?]+[.!?]+(?=\r\n|$)
 
  • Thank you
Reactions: wheeljumpr

Markoonij

Client
Joined
Oct 13, 2020
Messages
71
Reaction score
3
Points
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 все работает. Во втором - нет.
Подскажите, что нужно подправить?
 
Last edited:

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
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 все работает. Во втором - нет.
Подскажите, что нужно подправить?
не используй " или если они так жизненно нужны, то экранируй их ""
 
  • Thank you
Reactions: Markoonij

Markoonij

Client
Joined
Oct 13, 2020
Messages
71
Reaction score
3
Points
8
не используй " или если они так жизненно нужны, то экранируй их ""
Так и думал,что дело в кавычках. Что значит "экранируй"? :-)
 

Roman48

Client
Joined
Feb 28, 2016
Messages
2,058
Reaction score
746
Points
113
не используй " или если они так жизненно нужны, то экранируй их ""
Как экранировать, покажи пожалуйста?
У меня были случаи двойные кавычки не срабатывали, я делал тогда одинарные кавычке, в Punto Switcher замену сделал, двойные кавычки на одинарные
 

Sardol

Client
Joined
Sep 23, 2020
Messages
193
Reaction score
45
Points
28
Прошу помощи. Нужен снипет для работы с профилями.
Задача: брать в работу профиль, который работал не меньше суток назад от текущего времени. Остальные профили пропускать.

Без имени.png
 

Sardol

Client
Joined
Sep 23, 2020
Messages
193
Reaction score
45
Points
28
Прошу помощи. Нужен снипет для работы с профилями.
Задача: брать в работу профиль, который работал не меньше суток назад от текущего времени. Остальные профили пропускать.

View attachment 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; // выходим из цикла
        }
            }
 
Last edited:
  • Thank you
Reactions: udder and Alex.A

Alex.A

Client
Joined
Nov 14, 2020
Messages
484
Reaction score
246
Points
43
Добрый день!
Прошу помочь решить такую задачу:
Есть таблица "Table" со столбцами А,B,C,D. Нужно в 3-х последних строках таблицы выяснить, есть ли в столбце "В" значение "04L", а если есть то получить значение (например 87.155.62) из столбца "С" и присвоить его переменной "table_c".
При этом, если среди последних трех строк таблицы есть несколько значений "04L" (как в примере), то из них нужно выбрать самое последнее.
 

Attachments

BAZAg

Client
Joined
Nov 8, 2015
Messages
1,880
Reaction score
2,604
Points
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);
 
  • Thank you
Reactions: Alex.A and Alexmd

Alexmd

Client
Joined
Dec 10, 2018
Messages
1,021
Reaction score
1,427
Points
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);
 
  • Thank you
Reactions: Alex.A and BAZAg

tanichev

Client
Joined
Aug 14, 2020
Messages
654
Reaction score
761
Points
93
Очень бы помог набор снипетов для работы с видео(ffmpeg), а именно:
  1. Ускорить видео в N раз
  2. Нанести watermark который рандомно меняет координаты каждые N сек.
  3. Склеить N видео
  4. Сжать видео без потери качества
  5. Удалить звуковую дорожку с видео
  6. Добавить звуковую дорожку к видео
  7. Собрать видео из слайдов
 

ArmMonster

Client
Joined
Aug 10, 2018
Messages
72
Reaction score
10
Points
8
*стерто
 
Last edited:

tanichev

Client
Joined
Aug 14, 2020
Messages
654
Reaction score
761
Points
93
Сжать видео без потери качества
C#:
.\ffmpeg.exe -y -i .\'7 урок'.mp4 -vcodec mpeg4 -q:v 10 -r:v 10 7урок.mp4
  1. Ускорить видео в 100 раз
C#:
.\ffmpeg -i input.mp4 -an -vf setpts=PTS/100 result2.mp4
 

Alex.A

Client
Joined
Nov 14, 2020
Messages
484
Reaction score
246
Points
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);
Спасибо за ответ, но выдает ошибку. Прилагаю скрин:
 

Attachments

Alex.A

Client
Joined
Nov 14, 2020
Messages
484
Reaction score
246
Points
43
View attachment 78742
View attachment 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);
Спасибо за ответ, но выдает ошибку, прилагаю скрин:
 

Attachments

nicanil

Client
Joined
Mar 6, 2016
Messages
2,246
Reaction score
1,828
Points
113
Спасибо за ответ, но выдает ошибку, прилагаю скрин:
Создайте в проекте через Окно переменных переменную с именем table_c
 
  • Thank you
Reactions: Alex.A

Alex.A

Client
Joined
Nov 14, 2020
Messages
484
Reaction score
246
Points
43
В коде BAZAg показывает верное значение (последнее из двух 04L).
В коде Alexmd показывает не верное значение (первое значение из двух 04L).
 
  • Thank you
Reactions: Alexmd

Alexmd

Client
Joined
Dec 10, 2018
Messages
1,021
Reaction score
1,427
Points
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;
    }
 
  • Thank you
Reactions: Alex.A

zmike

Client
Joined
Oct 24, 2019
Messages
147
Reaction score
8
Points
18
Есть ли способ удалить все начальные и конечные пустые места всех строк в списке?
 

Alexmd

Client
Joined
Dec 10, 2018
Messages
1,021
Reaction score
1,427
Points
113
C#:
var list = project.Lists["список"];
for(int i = 0; i < list.Count; i++)
    list[i] = list[i].Trim();
 
  • Thank you
Reactions: zmike

zmike

Client
Joined
Oct 24, 2019
Messages
147
Reaction score
8
Points
18
Большое спасибо за очистку скрипта списка. Работает супер быстро и работает отлично!

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

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

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

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

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

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

Alexmd

Client
Joined
Dec 10, 2018
Messages
1,021
Reaction score
1,427
Points
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
Joined
Oct 24, 2019
Messages
147
Reaction score
8
Points
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
Joined
Dec 10, 2018
Messages
1,021
Reaction score
1,427
Points
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];
 
  • Thank you
Reactions: zmike

SVRyzhov

Client
Joined
May 17, 2017
Messages
52
Reaction score
6
Points
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
Joined
Oct 24, 2019
Messages
147
Reaction score
8
Points
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
Joined
Oct 24, 2019
Messages
147
Reaction score
8
Points
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
Joined
Dec 10, 2018
Messages
1,021
Reaction score
1,427
Points
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"
код отдал "Здравствуйте".
 
Last edited:

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)