• 締切済み

Sikuli 詳しい方へ

Sikuliを使いWebサイトの2つの変化する数値を監視して通知をだしたい。 例えば、 Aの数値(0~9まで変化) Bの数値(1~10まで変化) 常にA<B この条件で変化するAとBの数値を監視して、数値の差が4以上の時は画面上にメッセ時を表示させる(音を出すなど)で知るプログラムを組みたいのですが、上手くいきません。 チャットGPTに教えてもらったプログラムではエラーが出てしまいました。 私はSikuliを知らないので、このようなことがSikuliでできるのかもよくわかっていません。 よろしくお願い致します。

みんなの回答

回答No.1

SikuliはGUI(AutoIt、WinAPI GUI等)を用いて操作できるライブラリーで、Pythonスクリプトを用いて操作できます。ご紹介いただいた条件での監視・通知はSikuliでも可能です。例えば以下のようなプログラムで実現できます。 まずはSikuliのインストール方法についてご説明します。SikuliX IDEを使っているのであれば、Pythonはインストールされているか確認してください。SikuliはPythonのライブラリーなので、Pythonがインストールされていない場合は先にPythonをインストールし、Sikuli IDEをインストールします。 プログラムについてですが、まずは操作対象となるWebサイトの画面キャプチャーを取得します。そして、AとBの画面上の位置を特定し、それぞれの値を取得します。次に、前回のAとBの値を変数に保存することで、現在のAとBの値と比較します。条件に当てはまる場合は、メッセージを表示するといった処理を行います。 import os import time import traceback from sikuli import * # 画像マッチングのしきい値を設定 Default:0.7 Settings.MinSimilarity = 0.7 # 画像ファイルのパス path_a = "path/to/image_a.png" path_b = "path/to/image_b.png" # 前回の各値 pre_a = -1 pre_b = -1 # 繰り返す回数  (変数分の回数を一瞬間隔を空けてリピート) repeat_num = 50 # 値の閾値 value_threshold = 4 while True: try: # 画像マッチングによってA,Bの画像を特定 pos_a = wait(path_a, 5) pos_b = wait(path_b, 5) # A,Bの文字列を文字列として抽出 img_a = capture(pos_a.x, pos_a.y, 32, 32).text() img_b = capture(pos_b.x, pos_b.y, 32, 32).text() # A,Bの文字列を整数に変換 value_a = int(img_a) value_b = int(img_b) # 前回の値と比較し、条件に当てはまる場合はメッセージを表示 if abs(value_a - pre_a) >= value_threshold and abs(value_b - pre_b) >= value_threshold and value_a < value_b: popAsk('Value diffrence detected.') # 前回の値を保存する pre_a = value_a pre_b = value_b # Repeat wait(1) except: traceback.print_exc() break 上記のプログラムは、Sikuliスクリプトとして記述されたものです。Sikuli IDEを起動し、上記のプログラムをコピー&ペーストし、画像ファイルのパスを適切に変更して実行することで、問題なく動画するはずです。 ご参考までに、上記のプログラムで使用する画像は、Webサイトからキャプチャーを取得し、エリアを選択した上で保存することができます。Sikuliを使うことで、GUI操作を自動化することができ、手動では行いづらい複雑な操作や監視作業を行うことが可能です。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/

関連するQ&A

専門家に質問してみよう