Категории раздела |
|
Автомобильные гаджеты, ремонт...
[144]
|
Безопасность IT
[404]
|
Блоки питания, Power Banks, зарядки...
[512]
|
Видеорегистраторы
[188]
|
Гаджеты для спорта и здоровья...
[191]
|
Гаджеты, аксессуары...
[627]
|
Измерительная техника, инструменты
[446]
|
Накопители данных
[233]
|
Нетбуки, Ноутбуки, Ультрабуки
[691]
|
Мультиварки, блендеры и не только...
[164]
|
Планшеты
[764]
|
Радар-детекторы
[26]
|
Роботы-пылесосы
[40]
|
Своими руками
[366]
|
Сети, сетевые технологии, оборудование...
[273]
|
Смартфоны
[4963]
|
Фотокамеры, объективы, искусство фотографии..
[541]
|
Умный дом
[53]
|
Электронные книги
[102]
|
CB, LPD, PMR- связь...
[170]
|
DECT, IP-телефоны
[18]
|
Drones, boats, cars...
[109]
|
electric cars
[35]
|
GPS-навигаторы, трекеры...
[51]
|
Linux и не только
[3983]
|
mini computers и не только...
[412]
|
News IT, Это интересно, ликбез...
[1121]
|
Smart TV, UltraHD, приставки, проекторы...
[416]
|
Smart Watch
[269]
|
Sound: наушники, плееры, усилители...
[619]
|
Windows 10...
[301]
|
Windows 11
[37]
|
| |
|
|
| | |
| Главная » 2014 » Март » 5 » Автоматизируем щелчки мышкой в Linux: xdotool
21:16 Автоматизируем щелчки мышкой в Linux: xdotool |
Автоматизируем щелчки мышкой в Linux: xdotool
Эта очень короткая заметка на примере активации ключей в Steam
описывает процесс автоматизации операций, выполняемых при помощи мыши и
клавиатуры.
Допустим, вы купили несколько наборов игр Humble Bundle. Теперь у вас
есть, например, 5 ключей для активации в Steam. А может быть 15 или даже
25. Вы очень не хотите активировать их вручную, потому что это слишком
муторно: в клиенте Steam нужно каждый раз наводить курсор на меню
«Games», щёлкать, потом наводить курсор на пункт меню «Activate a
Product on Steam…», опять щёлкать, потом нажимать Enter, потом ещё раз
Enter, и только затем наконец-то вводить ключ (а потом нужно подождать,
ещё раз нажать Enter, затем Escape). А потом повторять то же самое для
каждого последующего ключа. Как писал Леонид Каганов, стоило ли вообще
ради такого «прогресса» спускаться с пальмы и брать в руки каменный
топор?
В общем, вы решили этот процесс автоматизировать — тем более, что
задача-то, на самом деле, очень простая. Для её решения нам потребуются
консольные утилиты xdotool и xclip — убедитесь, что они установлены у вас в системе.
Для начала вы собираете ключи с веб-страницы, чтобы затем записать их в
текстовый файл, по одному на строку. Естественно, не вручную. Например,
со страницы Humble Budle их можно собрать, выполнив через JS-консоль
что-нибудь в таком духе:
$("div.keyfield:visible").each(function() {console.log($(this).text())});
Получается текстовый файл с примерно таким содержимым:
9MZ43-42XXZ-0B9X3
I4YYK-CRGVN-VHXCR
NQJ6E-GJWNG-GZWVX
YCKI8-I0B9T-85CM4
KBFHW-5LE39-WHFMW
WFLWX-PPRBT-ZCGAN
ER26C-XFT5C-2NDGG
J876-XPFC-H0SF-KGMO
37YZQ-93TCM-V9MBY
2GFNA-XHBME-3MB70
При сохранении текстового файла убедитесь, что в конце есть перенос
строки (некоторые текстовые редакторы не добавляют его автоматически).
Иначе при выполнении скрипта последний ключ не будет активирован.
Далее вам нужно открыть Steam и определить координаты тех точек, куда
нужно будет автоматически перемещать курсор. Таких точек две: во-первых,
точка для первого щелчка (меню «Games»), во-вторых, точка для второго
щелчка (пункт меню «Activate a Product on Steam…»). Тут по настроению —
можете получить координаты с помощью команды getmouselocation, а можете
их подобрать.
В первом случае можно либо запустить xdotool через watch (для
автоматического перевыполнения команды через определённый интервал
времени), либо добавить sleep.
То есть либо запускаете watch xdotool getmouselocation и наводите курсор на нужное место экрана, посматривая при этом в консоль и запоминая значения нужных точек, либо запускаете xdotool sleep 5 getmouselocation
и получаете координаты той точки, где курсор оказывается через 5 секунд
после запуска команды (соответственно, смотреть в консоль или
запоминать координаты не нужно — достаточно будет просто успеть
поместить курсор в нужное место, и уже потом переключиться к консоли).
Во втором случае вы пишете, допустим, xdotool mousemove 52 38 ,
выполняете, смотрите, где оказался курсор, а потом меняете числа, пока
не найдёте подходящие. Этот вариант более весёлый, поэтому, думаю,
многие предпочтут сделать именно так.
Теперь, когда у нас есть нужные координаты, давайте действовать
итеративно: прежде всего попробуем автоматически пройти до момента ввода
ключа.
Для этого будем использовать команды mousemove, click, sleep и key. Список команд, кстати, можно посмотреть в документации по xdotool.
Давайте попробуем:
xdotool mousemove 210 105 click 1 mousemove 210 160 sleep 0.1 click 1 sleep 0.1 key Return sleep 0.1 key Return
Если в точке, куда в первую очередь перемещается курсор, не Steam, а
какое-то другое окно (например, если Steam скрыт за окном терминала), то
нужно добавить команды windowactivate/windowfocus, чтобы сначала
отобразилось окно Steam, и уже затем выполнялись следующие команды.
Например:
steam_window=48234551 ; xdotool windowactivate $steam_window
windowfocus $steam_window sleep 0.5 mousemove 210 105 click 1 mousemove
210 160 sleep 0.1 click 1 sleep 0.1 key Return sleep 0.1 key Return
Чтобы получить идентификатор активного окна, вы можете использовать
команду getactivewindow (если окно Steam будет активно через секунду
после выполнения команды xdotool sleep 1 getactivewindow,
то в консоли отобразится его идентификатор). Кроме того, для команды
getmouselocation (см. выше) также указывается идентификатор окна, над
которым находится курсор.
Теперь давайте попробуем написать небольшой скрипт, который читает файл с ключами и поочерёдно их активирует.
Скрипт можно назвать, например, activate_steam_keys.sh.
#!/bin/bash
commands=(
"sleep 1"
"mousemove 210 105"
"click 1"
"mousemove 210 160"
"sleep 0.1"
"click 1"
"sleep 0.1"
"key Return"
"sleep 0.1"
"key Return"
"sleep 0.1"
"key ctrl+v"
"sleep 0.5"
"key Return"
"sleep 10"
"key Return"
"sleep 0.5"
"key Escape"
)
while read key
do
echo -n $key | xclip -selection c
xdotool ${commands[*]}
done < $1
Разрешаем для файла выполнение и запускаем скрипт. При этом передаём скрипту аргумент — имя файла с ключами.
chmod +x activate_steam_keys.sh
./activate_steam_keys.sh steam_keys.txt
А дальше просто смотрим на экран и наслаждаемся процессом. Всё-таки хорошая идея была взять тот каменный топор.
Весёлого программирования!
http://habrahabr.ru/post/214779/
|
Категория: Linux и не только |
Просмотров: 978 |
Добавил: laptop
| Рейтинг: 1.0/1 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
| |
| | |
|
Волк слабее льва и тигра, но в цирке волк не выступает!
Волк - единственный из зверей, который может пойти в бой на более сильного противника.
Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...
Внимание! |
|
Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
| |
|
|