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

  • Автор темы Автор темы CSS
  • Дата начала Дата начала
Здравствуйте, Есть ли способ выбрать последнее предложение абзаца? Может ли кто-нибудь подсказать мне этот сниппет? Спасибо за любую помощь.
 
  • Спасибо
Реакции: wheeljumpr
Подскажите, по поводу клика с помощью с#
Есть 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 все работает. Во втором - нет.
Подскажите, что нужно подправить?
 
Последнее редактирование:
Подскажите, по поводу клика с помощью с#
Есть 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
не используй " или если они так жизненно нужны, то экранируй их ""
Как экранировать, покажи пожалуйста?
У меня были случаи двойные кавычки не срабатывали, я делал тогда одинарные кавычке, в Punto Switcher замену сделал, двойные кавычки на одинарные
 
Прошу помощи. Нужен снипет для работы с профилями.
Задача: брать в работу профиль, который работал не меньше суток назад от текущего времени. Остальные профили пропускать.

Без имени.png
 
Прошу помощи. Нужен снипет для работы с профилями.
Задача: брать в работу профиль, который работал не меньше суток назад от текущего времени. Остальные профили пропускать.

Посмотреть вложение 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
Добрый день!
Прошу помочь решить такую задачу:
Есть таблица "Table" со столбцами А,B,C,D. Нужно в 3-х последних строках таблицы выяснить, есть ли в столбце "В" значение "04L", а если есть то получить значение (например 87.155.62) из столбца "С" и присвоить его переменной "table_c".
При этом, если среди последних трех строк таблицы есть несколько значений "04L" (как в примере), то из них нужно выбрать самое последнее.
 

Вложения

  • table1.jpg
    table1.jpg
    81 KB · Просмотры: 5
Добрый день!
Прошу помочь решить такую задачу:
Есть таблица "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
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
Очень бы помог набор снипетов для работы с видео(ffmpeg), а именно:
  1. Ускорить видео в N раз
  2. Нанести watermark который рандомно меняет координаты каждые N сек.
  3. Склеить N видео
  4. Сжать видео без потери качества
  5. Удалить звуковую дорожку с видео
  6. Добавить звуковую дорожку к видео
  7. Собрать видео из слайдов
 
*стерто
 
Последнее редактирование:
Сжать видео без потери качества
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
 
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);
Спасибо за ответ, но выдает ошибку. Прилагаю скрин:
 

Вложения

  • table2.jpg
    table2.jpg
    254,1 KB · Просмотры: 5
Посмотреть вложение 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);
Спасибо за ответ, но выдает ошибку, прилагаю скрин:
 

Вложения

  • table3.jpg
    table3.jpg
    302 KB · Просмотры: 6
  • Спасибо
Реакции: Alex.A
В коде BAZAg показывает верное значение (последнее из двух 04L).
В коде Alexmd показывает не верное значение (первое значение из двух 04L).
 
  • Спасибо
Реакции: Alexmd
В коде 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
Есть ли способ удалить все начальные и конечные пустые места всех строк в списке?
 
Большое спасибо за очистку скрипта списка. Работает супер быстро и работает отлично!

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

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

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

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

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

Заранее спасибо!
 
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];
А не лучше ли пересмотреть инструмент перевода, чтобы у него не возникало проблем..
 
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]

Не могли бы вы указать, где могли ошибиться, спасибо!
 
Я использую сторонний инструмент для перевода. Таким образом, нет никакого контроля над выводом перевода.

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

Компиляция кода ошибки в действии «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
Привет всем!
Нужно декодировать 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());
}
Но не получается его приладить. Подскажите как им правильно воспользоваться и куда чего вставлять
 
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. Цель состоит в том, чтобы заменить только конкретную строку, содержащую эту строку.
 
Код может закончиться на этот раз. Однако у него появилась новая проблема. Если есть строка, соответствующая строке в списке 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--;
        }
    }
}
 
Код может закончиться на этот раз. Однако у него появилась новая проблема. Если есть строка, соответствующая строке в списке 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

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