1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-foolqq

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

На основе обработки изображений инструмент FoolQQ

В настоящее время все роботы для чтения и записи в QQ основаны на анализе сообщений, отправляемых smartqq. Однако smartqq от Tencent уже не работает, и на сцену выходит FoolQQ!

Сценарии использования FoolQQ применяется в компаниях China Telecom, China Unicom и других организациях, включая автоматическое управление рабочими задачами, ответы на часто задаваемые вопросы в группах, отправку предупреждений по расписанию, заполнение ежедневных отчётов и другие функции. Ещё в 2017 году мы реализовали технологию, подобную GPT! Вот несколько примеров:

Принцип работы

  • Отслеживание экрана с заданным интервалом и определение ключевых точек изображения.
  • Определение местоположения окна группового чата.
  • Обмен сообщениями JVM и экрана через буфер обмена.
  • Управление мышью и клавиатурой с помощью класса Robot.

Подготовка

  1. Запустите QQcls.exe — это программа для очистки экрана одним нажатием клавиши F10. Это упрощает процесс очистки.
  2. Откройте группу или чат, который вы хотите отслеживать, и сделайте снимок экрана. Снимок должен включать только изображение аватара, без лишних деталей. Сохраните изображение в формате PNG. Избегайте сжатия изображения (увеличьте его размер, чтобы углы были чёткими и не размытыми). Назовите изображение на английском языке (например, gj.png), это имя важно для FoolQQ и служит идентификатором текущей группы. Повторите этот шаг для каждой группы.
  3. После выполнения шага 2 FoolQQ может найти окно чата QQ. Теперь нужно определить местоположение ввода и вывода. Верхняя часть панели инструментов представляет собой вывод, а нижняя часть — ввод. Поскольку окно чата можно настроить по размеру, а панель инструментов можно перемещать вверх и вниз, расположение окна может отличаться для разных пользователей. Поэтому нам нужна ключевая картинка, описывающая расположение ввода и вывода, и эта картинка должна называться point.png.
  4. Для point.png выберите область с текстом «A» в красном прямоугольнике. Убедитесь, что в снимке нет пикселей фона, так как цвет фона окна чата зависит от размера окна и аватара группы, чтобы обеспечить общий распознаваемый элемент, мы используем часть изображения в красном прямоугольнике на рисунке.
  5. Наконец, не используйте функцию объединения окон в QQ. Если у вас есть несколько групп, разместите их рядом на рабочем столе. Таким образом, FoolQQ сможет отслеживать несколько групповых панелей и гарантировать, что нажатие Enter отправит сообщение, а не Enter + Ctrl. Все пути к изображениям должны быть помещены в корневой каталог проекта.

Использование

public static void main(String[] args) throws AWTException, IOException, NativeHookException {

//Создание экземпляра BaseQQWindowContext и передача ранее подготовленного файла point.png

BaseQQWindowContext context=new BaseQQWindowContext(new File("point.png")) {
	@Override
	public void onMessage(String name, QQMsg msg) {
	
        //name — это имя файла (без расширения), например, для изображения gj.png здесь name будет «gj», что позволяет определить, какое сообщение относится к какой группе
	
	System.out.println(msg);   //msg включает содержание, отправителя QQ, псевдоним, время
	}
};
}
  

Глобальная блокировка — BaseQQWindowContext Вы могли заметить, что мы управляем мышью и клавиатурой, которые являются специальными общими ресурсами. Если вам нужно использовать класс robot в другом потоке, это может привести к конфликту с внутренними методами FoolQQ. Объект контекста, созданный на предыдущем шаге, может служить блокировкой для предотвращения конфликтов.

//Если вам нужно использовать класс робота, ваш код должен выглядеть следующим образом

synchronized(context){
robot...

}

interval и checkInterval Контекст предоставляет метод setInterval для установки интервала между сериями операций, таких как ожидание нажатия клавиши после двойного щелчка. Это позволяет избежать перегрузки системы при слишком быстрой работе. Значение по умолчанию составляет 200 мс. checkInterval — это полный цикл, который должен быть больше времени, затрачиваемого на чтение и обработку сообщений из всех отслеживаемых групп. Значение по умолчанию — 5 секунд.

writeQQMsg Метод writeQQMsg в контексте позволяет отправлять сообщения в указанную группу и является потокобезопасным. Этот метод используется для периодического выполнения задач, таких как отправка напоминаний в группу через определённые промежутки времени. Эта функция была бы очень дорогой для предыдущих версий smartqq, требующих периодических перезапусков. Метод writeQQMsg принимает два параметра String: первый — это имя изображения, второй — содержимое сообщения.

context.writeQQMsg("gj","Всем привет!"); //Отправить текст
context.writeQQMsg("gj",new File("d:/img/logo.jpg"));  //Отправить изображение

Выход Класс robot управляет вашей мышью и клавиатурой. Чтобы выйти из программы, используйте клавишу ESC. Эту функцию можно реализовать на Java с использованием jnativehook.

Сценарии применения Возможности FoolQQ включают автоматизацию рабочих процессов, ответы на частые вопросы в группах, рассылку уведомлений по расписанию и составление ежедневных отчётов. Хотя NLP не рассматривается в этой статье, он также может быть использован в этих сценариях.

Недостатки дизайна FoolQQ ориентирован на настольные чаты. На одном компьютере можно открыть ограниченное количество групповых чатов одновременно, в зависимости от разрешения экрана. Кроме того, если у вас несколько бизнес-аккаунтов QQ для разных сфер деятельности, вам потребуется несколько виртуальных рабочих столов.

Частые проблемы Большинство проблем возникает из-за недостаточной чёткости снимков, что затрудняет распознавание. Вы можете использовать метод validImage класса ImgChkHelper, чтобы проверить, является ли изображение действительным (возвращает true, если оно действительно).

ImgChkHelper.validImage(путь к снимку экрана, путь к частичному изображению);

Не рекомендуется использовать функцию скриншота в QQ. Вместо этого рекомендуется использовать Photoshop или другое программное обеспечение для редактирования изображений. Если вы не являетесь профессионалом, рекомендуется использовать Lightroom и сохранять изображение со 100% качеством.

Заключение Меня больше интересует методология, лежащая в основе этого инструмента, чем сам инструмент. Использование обработки изображений может помочь нам во многих задачах. Код FoolQQ очень лаконичен, и я настоятельно рекомендую прочитать его хотя бы один раз. Я также открыт для обсуждения и могу быть доступен по электронной почте 1491087363@qq.com.

Комментарии ( 0 )

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

Введение

На основе обработки изображений инструмент FoolQQ. В настоящее время роботы для чтения и записи QQ основаны на анализе сообщений с помощью SmartQQ, однако SmartQQ больше не поддерживается компанией Tencent, его HTTP-сервер часто недоступен, и часто необходимо... Развернуть Свернуть
BSD-2-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-foolqq.git
git@api.gitlife.ru:oschina-mirror/mirrors-foolqq.git
oschina-mirror
mirrors-foolqq
mirrors-foolqq
master