• Как отобразить pdf на странице, без редакторов просмотра?

    @zkrvndm
    Софт для автоматизации
    Библиотека pdf.js от Mozilla позволяет тонко настраивать параметры отображения PDF:

    https://mozilla.github.io/pdf.js/web/viewer.html

    1. Скачайте демо

    2. Распакуйте на своем сайте

    3. Скройте или удалите не нужные кнопки
    Ответ написан
    1 комментарий
  • Как интегрировать ChatGPT?

    @zkrvndm
    Софт для автоматизации
    Постейший запрос к ChatGPT выглядит так:
    $.ajax({
    	'url': 'https://api.openai.com/v1/chat/completions',
    	'type': 'POST',
    	'contentType': 'application/json; charset=UTF-8',
    	'headers': {
    		'Authorization': 'Bearer тут_ключ_доступа',
    		'OpenAI-Organization': 'тут_идентификатор_организации'
    	},
    	'data': JSON.stringify({
    		'model': 'gpt-3.5-turbo',
    		'messages': [
    			{
    				'role': 'user',
    				'content': 'Привет. Сколько лет Тому Крузу?'
    			}
    		],
    		'temperature': 0.3
    	}),
    	'success': function(response) {
    		console.log('Ответ ChatGPT:', response);
    	},
    	'error': function(err) {
    		console.error('Ошибка:', err);
    	}
    });

    Тут нет обучения, сохранения истории переписки и чтения ответа по мере поступления, но работать будет, см. ниже:

    65394817e3537813937511.png
    Если же хочешь пример с обучением, с сохранением переписки и постепенным чтением ответа по мере поступления с использованием ReadableStrream... это все тебе надо пилить самому, ну или заказывай у кого-нибудь платно.

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

    P. S. Примеры запросов и песочница доступны в официальной документации:
    https://platform.openai.com/docs/api-reference/int...
    Все полезные материалы там!
    Ответ написан
    Комментировать
  • Как автоматически дублировать посты из telegram на сайт joomla?

    @zkrvndm
    Софт для автоматизации
    Шаг первый. Научитесь программно создавать материалы в Joomal 3 / 4. Короткий гайд:

    https://sitogon.ru/blog/250-kak-programmno-dobavit...

    Шаг второй. Научитесь программно кодом парсить записи в веб-версии телеграм. Для этого можно использовать реальный браузер и самописаное браузерное расширение для инъекции своего JavaScript-кода на сайт телегама. Короткий гайд по инъекции своего кода на сторонние сайты при помощи расширения:

    https://vc.ru/dev/159897-kak-sdelat-rasshirenie-dl...

    Шаг третий. Объедините первый и второй шаг и создайте итоговое финальное решение которое парсит посты из веб-версии телеграм и публикует их на вашем сайте Joomla. Да, я понимаю, что все это звучит как инструкция из разряда Как нарисовать Сову, но проще тут объяснить никак.

    Если не получается разобраться, вы всегда можете заказать готовый продукт у меня или у любого другого исполнителя из фрилансим: https://freelance.habr.com (лучшая IT доска объявления в РФ, чисто на мой взгляд)
    Ответ написан
    Комментировать
  • Как найти точный url сайта на javascript?

    @zkrvndm
    Софт для автоматизации
    Да, конечно. Если у вас фильтры работают с перезагрузкой страницы, то с высокой вероятностью используется тег <form></form> для переадресации. Отправку форму при помощи данного тега вполне можно перехватить на JavaScript, отменить, загрузить данные с целевой страницы вручную AJAX-ом, спарсить полученные данные при помощи DOMParser и сразу вывести на странице, не трогая при этом фильтры.
    Ответ написан
    4 комментария
  • Push уведомления в PWA приложении с запросом в БД?

    @zkrvndm
    Софт для автоматизации
    Никак. Да, формально во всех браузерах встроен механизм подписок на уведомления от сайтов, но это дерьмо работает крайне нестабильно и через раз, часто уведомления просто не доходят или доходят не вовремя.

    Единственный способ организовать более менее стабильные уведомления пользователям вашего PWA приложения это использовать различные внешние API для отправки SMS, в отличии от встроенных push это намного надежнее.

    https://www.google.ru/search?q=отправка+sms+API
    Ответ написан
    Комментировать
  • Как получить input из iframe?

    @zkrvndm
    Софт для автоматизации
    Ответ никак - не соответствует истине. Получить данные с input находящего во фрейме можно, но для этого необходимо, чтобы целевая страница загружалась с вашего домена. Этого можно достичь используя обратный реверс прокси - это как свой собственный личный анонимайзер, через который вы можете просмотреть любой сторонний сайт с модификацией контента. Единственно НО, это все сложно, дорого и неоправданно в большинстве случаев, проще спарсить все необходимые данные напрямую используя всякие селениумы и т. д.
    Ответ написан
  • Как можно ограничить скорость запроса в js?

    @zkrvndm
    Софт для автоматизации
    В прошлом году Google Chrome и все Chromium браузеры получили апдейт, теперь при выполнении POST-запросов можно управлять исходящим потоком, в том числе передавать данные с нужной вам скоростью.

    https://developer.chrome.com/articles/fetch-stream...

    Chat GPT этого не знает, так как его базы данных ограничены сентябрем 2021.
    Ответ написан
    2 комментария
  • Как одним кликом вкл. или выкл. прокси в браузере Хром?

    @zkrvndm
    Софт для автоматизации
    Такое расширение пишется за 5 минут, просто попросите Chat GPT создать такое расширение и с большой вероятностью оно его успешно напишет.
    Ответ написан
  • Как отправить сообщение в whatsapp web через скрипт?

    @zkrvndm
    Софт для автоматизации
    Чтение сообщений и отправка сообщений должны работать на одной странице. Для этого создается очередь заданий: на чтение, на отправку. Далее очередь пополняется и последовательно централизованно обрабатывается.
    Ответ написан
    Комментировать
  • Как отключить авто отправку drag file формы?

    @zkrvndm
    Софт для автоматизации
    Тебе НЕ надо отключать автозагрузку файлов, просто делай на странице 2 формы. Одна форма грузит файлы в централизованное хранилище и полученную ссылку на файл подставляет уже к форме с сообщением. Должна быть возможность нажатием крестика удалить файл и из сообщения и из хранилища. Это правильная логика для формы.

    Ты не должен файлы отправлять вместе с сообщением, сообщение должно содержать только ссылки на файлы. Вспомни как реализованы формы обратной связи на популярных сайтах, когда ты цепляешь медиа на правильно сконструированную форму, медиа заранее грузится на сервер, еще до отправки письма и это правильных подход.
    Ответ написан
    4 комментария
  • Как файлов в formData получить base64?

    @zkrvndm
    Софт для автоматизации
    Ну, во первых у тебя ошибка в функции getBase64, а именно там надо возвращать просмис и разрешать его после того, как Blob прочитан, соотвественно это требует времени на работу функции. Вторая твоя проблема, ты пытаешься в синхронном цикле выполнить асинхронную операцию, ожидая что ответ получишь тут же и ты сможешь его записать в переменную, но в случае с промисами это нифига не так.

    Для того, чтобы конвертировать File в Base64 синхронно, нужен другой подход. Существует хак, позволяющий с использованием XMLHttpRequest и TextEncoder выполнить конвертацию файла в base64 синхронно, вот пример:
    function getBase64(file) {
    
      var url = URL.createObjectURL(file);
    
      var request = new XMLHttpRequest();
      request.open('GET', url, false);
      request.send(null);
    
      var u8a = new TextEncoder().encode(request.responseText);
    
      var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    
      var bytes = u8a, i, len = bytes.length, base64 = '';
    
      for (i = 0; i < len; i += 3) {
        base64 += chars[bytes[i] >> 2];
        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
        base64 += chars[bytes[i + 2] & 63];
      }
    
      if (len % 3 === 2) {
        base64 = base64.substring(0, base64.length - 1) + '=';
      }
    
      else if (len % 3 === 1) {
        base64 = base64.substring(0, base64.length - 2) + '==';
      }
    
      return base64;
    
    }

    Но должен предупредить, что этот хак будет работать только с текстовыми документами. Различные медиаданные он тупо поломает. Если надо в Base64 перегнать медиа, то надо использовать FileReader и промисы.
    Ответ написан
    Комментировать
  • Как на js перехватить ответ XMLHttpRequest запроса на странице?

    @zkrvndm
    Софт для автоматизации
    Технология которая может тебе помочь, называется манкипатчингом. Вкратце, это замена функции оригинала, своей собственной функцией оберткой. Ну а более подробнее же... воспользуйся поиском:
    https://yandex.ru/search/?text=XMLHttpRequest+пере...

    P. S. Вспомнил, что я уже отвечал на такой вопрос: Как получить ответы на запросы сторонних скриптов в js?
    Ответ написан
    2 комментария
  • Как поднять локальный socks5-прокси используя Outline VPN Client?

    @zkrvndm Автор вопроса
    Софт для автоматизации
    Так и не нашел подобной возможности, пришлось на своем сервере отдельно поднимать socks5-прокси и потом прописывать его в AdGuard на смартфоне. Действовал вот по этой инструкции:
    https://blog.xenot.ru/ustanovka-i-nastrojka-dante-...
    Только там в этой инструкции ошибка, в конфигах указываем internal: 0.0.0.0 port = 1080 вместо internal: eth0 port = 1080 при том external: eth0 не трогаем. Заменить eth0 на свой сетевой интефейс. Если этого не сделать, то демон не будет стартовать при запуске сервера из-за ошибок. И еще, логирование тоже убираем, иначе будет ругаться и аналогично демон не будет сам стартовать при запуске системы.

    Может кому-нибудь пригодится.
    Ответ написан
    Комментировать
  • Как найти товар на сайте по полю поиск с помощью phpQuery?

    @zkrvndm
    Софт для автоматизации
    Когда ты забиваешь что-то в поле поиска, то под копотом браузера отправляется POST-запрос на сервер интернет-магазина, тебе надо изучить структуру этого POST-запроса во вкладке Network в консоли браузера, а потом пытаться повторить при помощи CURL на PHP, никакие phpQuery тут не нужны (как правило).
    Ответ написан
    4 комментария
  • Как написать асинхронную функцию?

    @zkrvndm
    Софт для автоматизации
    Все отличие асинхронной функции от обычной в том, что асинхронная всегда возвращает промис.

    Используй промисы!

    function getElem(url, selector) {
    
      return new Promise(function(success, error) {
    
        var xhr = new XMLHttpRequest()
        xhr.open('GET', 'http://waypoints/page/' + url, true);
        xhr.responseType = 'document';
        
        xhr.onreadystatechange = function () {
    
          if (xhr.readyState === 4) {
    
            if (xhr.status === 200) {
    
              console.log('Скачан документ:', xhr.response);
    
              success(xhr.response.querySelector(selector));
    
            }
    
            else {
    
              error('Ошибка при выполнении запроса');
    
            }
    
          }
    
        }
    
        xhr.send();
    
      });
    
    }
    Ответ написан
  • Как ограничить количество товара в корзине в Tilda?

    @zkrvndm
    Софт для автоматизации
    При добавлении товара происходит POST-запрос на API тильды. Вы можете перехватывать данные запросы при помощи метода макнипатчинга и блокировать, если в корзине товаров больше, чем вам нужно.
    Ответ написан
    Комментировать
  • Как создать подобную функцию в JavaScript?

    @zkrvndm
    Софт для автоматизации
    Свои собственные методы можно создавать через прототипы.

    https://habr.com/ru/articles/518360/
    Ответ написан
    Комментировать
  • Как спарсить аудио с whatsapp web?

    @zkrvndm
    Софт для автоматизации
    Blob не надо качать) Он уже в памяти. Просто считай его при помощи fetch, единственный нюанс, fetch надо запускать в контексте страницы, а не пытаться через бэкенд его качнуть, как вероятно ты и делаешь.

    Прокси тоже НЕ нужен.
    Ответ написан
  • Как обрабатывать файл полученный пост запросом правильно?

    @zkrvndm
    Софт для автоматизации
    Вероятно вы вообще не изучали тему. Когда на PHP обработчик поступает запрос из браузера в кодировке multipart/form-data, то все полученные файлы автоматически записываются во временную директорию, а ссылки эти файлы добавляются в суперглобальный массив $_FILES.

    Чтобы сохранить файл, надо его из временной директории перенести куда-нибудь в другое место, для этого существует специальная функция move_uploaded_file. Если НЕ использовать данную функцию, то после завершения работы PHP обработчика все полученный файлы из временной директории автоматически будут удалены.

    Иными словами, вам абсолютно ни что не мешает сразу при получении файла прочесть его содержимое из временной директории при помощи file_get_contents и потом делать с ним что хотите. Можете сохранить, а можете ничего не делать, тогда файл из временной директории автоматом сотрется потом.

    P. S. Я хочу сказать, что при получении файла файл сохраняется на сервере автоматом, пусть и во временную директорию. Это ключевой момент, который вы похоже не поняли. Удаляется он потом тоже автоматом.
    Ответ написан
    Комментировать