Задать вопрос
  • Как в webview2 Заполнить поле типа file?

    @Uncleruc1
    В WebView2 есть несколько способов автоматизировать заполнение полей типа file, но основное ограничение связано с безопасностью браузера, так как доступ к файловым полям строго ограничен и браузеры не позволяют напрямую задавать значения для этих полей через JavaScript. Ваш текущий подход с использованием SendKeys имитирует пользовательский ввод, что позволяет обходить это ограничение, но действительно может быть медленным при большом количестве полей.

    Вот несколько возможных альтернатив для ускорения процесса:

    Пакетная обработка файлов: Вместо того, чтобы обрабатывать каждое поле по одному, можно попытаться сгенерировать команды для всех полей и запустить их параллельно. Например, можно использовать параллельные задачи для вызова метода PopulateInputFile_poster сразу для нескольких полей:
    async Task PopulateMultipleFiles(Dictionary<string, string> fileMappings)
    {
        var tasks = fileMappings.Select(async kvp =>
        {
            var fileId = kvp.Key;
            var filePath = kvp.Value;
            ExecuteScript($"document.getElementById(\"{fileId}\").focus();");
    
            var sendKeyTask = Task.Delay(1000).ContinueWith((_) =>
            {
                SendKeys.Send(filePath + "{ENTER}");
            }, TaskScheduler.FromCurrentSynchronizationContext());
    
            ExecuteScript($"document.getElementById(\"{fileId}\").click();");
    
            await sendKeyTask;
            await Task.Delay(1000);
        });
    
        await Task.WhenAll(tasks);
    }
    
    var fileMappings = new Dictionary<string, string>
    {
        { "fln1", "poster.webp" },
        { "fln2", "image2.jpg" },
        // Добавьте остальные файлы
    };
    
    await PopulateMultipleFiles(fileMappings);

    WebDriver / Selenium: Хотя WebView2 более легкий и быстрый, использование Selenium с WebDriver может предоставить более гибкие возможности автоматизации, в том числе возможность работы с множеством полей через драйвер:
    IWebDriver driver = new EdgeDriver();
    IWebElement fileInput = driver.FindElement(By.Id("fln1"));
    fileInput.SendKeys("C:\\path\\to\\poster.webp");

    Это может быть быстрее для массового заполнения полей.

    Использование JavaScript и локальных API: Если у вас есть контроль над страницей, можно разработать API для загрузки файлов через JavaScript, но это требует модификации самой страницы, что не всегда возможно.

    Оптимизация задержек: Поиграйте с настройками задержек в вашем коде. Возможно, в некоторых случаях не нужно ждать целую секунду между шагами.

    Если у вас есть возможность контролировать или изменять целевые страницы, другие подходы могут включать в себя создание вспомогательных API для загрузки файлов напрямую.
    Ответ написан
    Комментировать
  • Как настроить VPN для определенных программ?

    @Drno
    Никак. ВПН клиент не опперирует понятиями "программа", ему всё равно.
    используйте прокси в браузере, в том или ином виде

    Либо ставьте ВПН клиент на роутер и настраивайте там маршрутизацию через ВПН к нужным доменам, если Ваш ротутер позволяет такое сделать
    Ответ написан
  • На чем создать сайт с онлай-книгами?

    pLavrenov
    @pLavrenov
    Разработка сайтов
    Изи вэй - WP, минимум хлама (привет куску битрикса), самый простой вход в цмс. Идеальное решение для твоей задачи.

    DLE - он как-то занял каталожную нишу, мне кажется во времена когда каждый день открывались пиратские сайты про фильмы и оcел в ней особо без развития (может я не прав). Но он все еще платный и все еще мало популярный относительно WP.
    Ответ написан
  • С помощью какой программы отзеркалить видео по горизонтали?

    @Drno
    никто не мешает включить в movavi кодирование на GPU
    ffmpeg позволяет кодировать чисто на GPU, если он правильно собран
    Ответ написан
    5 комментариев
  • С помощью какой программы отзеркалить видео по горизонтали?

    ffmpeg с фильтром hflip:
    SRC="/var/tmp/nu-pogodi.mp4"
    
    ffmpeg \
      -i "$SRC" \
      -vf "hflip" \
      -c:v libx264 \
      -c:a copy \
      "$SRC-flip.mp4"
    Медленная и тяжёлая часть работы тут — пережатие видео в h264. Его не избежать, к сожалению.

    Можно выполнять кодирование на GPU, но придётся компилировать ffmpeg и кодек. Вот пример. Не пробовал. Но должно ускорить.
    Ответ написан
    7 комментариев
  • С помощью какой программы отзеркалить видео по горизонтали?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Комментировать
  • Как получить текст за пределами тега при помощи xpath?

    @Roman-Fov
    можно ли написать универсальный xpath-запрос, в котором будет меняться содержимое contains, чтобы получить эти текстовые значения.


    Короткий ответ
    //article[@class='eText']/p/b[. = 'Жанр:']/following-sibling::text()[1]

    Xml:
    <article class="eText">
    	<p class="">
    		<b class="">Жанр:</b>вфывафыва
    		<b class="">Время:</b> 22 х ~ 00:24:00 
    	</p>
    </article>

    XPath result:
    Text='вфывафыва'
    -----------------------------------

    Правильный ответ
    //article[@class='eText']/p/b[text() = 'Жанр:'][generate-id(following-sibling::text()[1]/preceding-sibling::node()[1]) = generate-id(.)]/normalize-space(following-sibling::text()[1])

    Xml:
    <article class="eText">
    	<p class="">
    		<b class="">Жанр:</b><b class="">Жанр:</b>Многоголосый дубляж от Wakanim 
    		<b class="">Время:</b> 22 х ~ 00:24:00 
    	</p>
    </article>

    XPath result:
    String='Многоголосый дубляж от Wakanim'
    -----------------------------------
    (Тип учитывать возможное пустое значение после тега <b>. Незн насколько наглядно проиллюстрировал)

    Если что не понятно, то спрашивайте

    PS: Вопрос знатокам: реально ли упростить второй вариант без потери функционала?
    Ответ написан
    5 комментариев
  • Почему xpath-запрос в HtmlAgilityPack разных версий работает по-разному?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Изменилось поведение. Я например сегодня искал почему у меня белое меню с белым текстом.

    Оказалось достаточно изменить xamarin forms 4.5 -> 4.6
    Ответ написан
    2 комментария
  • Что дает Cef.Initialize?

    borisdenis
    @borisdenis
    Ленив и вреден...
    В крайнем случае, пойдет на английском.

    https://github.com/cefsharp/CefSharp/wiki/General-Usage там и про Cef.Initialize написано
    Ответ написан
    Комментировать
  • Как создать форму на Java в IntelliJ IDEA 2018?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Swing и JavaFX одинаковы по сложности. JavaFX - это новая, более современная библиотека. Google по запросу "JavaFX" выдаёт огромное количество ссылок на статьи и руководства для начинающих.
    Ответ написан
    Комментировать
  • Как создать форму на Java в IntelliJ IDEA 2018?

    TopMetaFizick
    @TopMetaFizick
    Все двоит и троит...
    JFrame, JTextFiled , JScrollPane, JTextArea, JLabel - это все компоненты, которые здесь нужны.
    И используй менеджер компоновки GridBagLayout, - этого вполне хватит.
    Ответ написан
    Комментировать