にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ

2022年03月14日

SikuliX Twitterの情報をRSSで取り込むNitterをRPAで自動更新 その4

Screenshot 2022-03-14 at 20-30-40 Kapper@Linuxガジェヲタ&異世界小説家&電子工作大好き (@kapper1224).png

こんにちは。
またお仕事ブログですが、Twitterの情報を定期的に取得するとき
RSSがあると便利ですが、RSS発信ツールとしてNitterがあります。
しかしこれ最近RSS更新情報を発信しなくなりました。
その為、手動でRSSを読みに行く必要があります。
しかしそんなものいちいちやっていられません。

Nitter画面右上のRSSボタンをクリックすると最新のRSSが取得出来ます。
そうクリックした時に更新されます。
そのため、例えばRSSリーダーとかに貼り直して更新する必要がありました。
とても面倒くさい。

スクリーンショット_2022-03-14_20-38-14.png

しかし落ち着いて考えると、RPAを使って手動更新を自動でやらせれば良いですね。
SeleniumかSikuliXか。
よしSikuliXを使おうw
ボタンポチポチ更新作業をSikuliXのプログラムを作ってRSS情報を取得します。
プログラムはシェルスクリプトを作ってコマンドラインから実行させます。

 #!/bin/bash

 java -jar sikulixide-2.0.5.jar -r /(指定のフォルダ)/rss.sikuli

こんな感じの一行プログラムを作成しSikuliXを自動で実行させます。
それをcrontabにしこんで実行させます。
これで完璧である。
ラズパイとかサーバに組み込んでおいておくと良いかもしれません。
Javaなんでどんな環境でも動くはず?
こんな感じでLinux速報あんてなを更新してます。
とりあえず手動でw

●FirefoxをSikuliXで操作する時の注意
ボタンは長押し操作(押しっぱなし)にしないと反応しない
ブラウザのタブを操作する時は、キーバインド操作「Alt+Space+」とか「Ctrl+W」にする
Waitを長めに設定して回線が重い時にフォローできるようにする
Firefoxを立ち上げる時はショートカットを作ると良いが、
起動時間がランダムになると面倒なので一度起動しておく
不要なタブはあらかじめ閉じておく
メモリを食いつぶすと固まるので、空きメモリに注意


●まとめ
NitterとRSSとRPAを使えば色々な情報をRSSに飛ばせます。
Twitter情報もなんのその。
やりすぎない程度に程々に情報を拾えます。
お仕事で便利だなぁ、なんちゃって。

posted by kapper at 20:41 | Comment(0) | Python

2022年03月07日

SikuliX マウスクリック長押し  RPA その3

こんにちは。
今日はSikuliXでマウスクリック長押し。
Linuxでも使い始めてfirefoxで不便なので。
Windows向け設定でしょうかね。

●SikuliXのマウス長押し
LinuxとFirefoxでマウスクリックが早すぎて反応出来ていません。
長押し設定が必要です。
こちらを参考に。感謝。

ハムゲー自動化スクリプトの検討2
http://ktoy.cocolog-nifty.com/blog/2019/02/2-2c29.html

こちらを参考に下記を追加します。
マウスクリックの位置まで移動して、長押しクリック。
中間のsleepで時間を調整

click("〇〇.png",10)
mouseDown(Button.LEFT)
sleep(0.05)
mouseUp(Button.LEFT)
sleep(0.01)
type(Key.ENTER)


●まとめ
簡単ですが、非常に重要です。
ゲームとかタイミングが難しいアプリにも必須。
その他typeにも使えそうです。
要注意を
posted by kapper at 07:21 | Comment(0) | Python

2021年12月08日

SikuliX 先月頭、先月末など月を指定して変数を作る方法 datatime関数 RPA その2



今回はSikuliXのPythonで先月の頭、先月末などの日付を
変数で取得して先月1ヶ月分のデータを確保しようという方法。
Pythonではdateutilを使えと書いてありますがJythonには無いです。
意外と解説がなくて苦労しました。


●SikuliXで日付を変数で取得
こちらのページを参考にさせて頂きました。
ありがとうございます。

Pythonで先月を取得する
https://qiita.com/motchi0214/items/2451c1352bbcc0487492

標準でdatetimeをimportすれば時間の設定が出来るのですが、
どうやら月をまたいだ表現の解説がなさそうなので
ちょっと自作してみる事に

●Pythonプログラム
まず上のリンクサイト様を参考に下記をずっと読んで考える。

import datetime

# 今日を取得
today = datetime.datetime.today()
print today.strftime("%Y-%m-%d")

# 当月1日の値を出す
thismonth = datetime.datetime(today.year, today.month, 1)
print thismonth.strftime("%Y-%m-%d")

# 前月末日の値を出す
lastmonth = thismonth + datetime.timedelta(days=-1)
print lastmonth

# フォーマットを指定して、年月だけ拾う
print lastmonth.strftime("%Y%m")


これを改変して取り出したい日時を設定。
今回は先月の日なので難しそう・・・?
おや?
当たり前の事に気づきました。
そうですカッコ内の+や−の計算式を入れて調整できます。
これで好きな日時を調整出来ますね。
改造してみることに。

# 前月1日目の値を出す
lastmonth2 = datetime.datetime(today.year, today.month -1, 1)
print lastmonth2

# 前々月末日の値を出す

lastmonth3 = lastmonth2 + datetime.timedelta(days=-1)

print lastmonth3

こんな感じでlastmonth2を一行追加して
前月1日目〜前月末日を指定出来ました。
これでSikuliXで開始日と最終日を自由に設定できます。
簡単でした。

後はSikuliXで

paste( 画像 ,lastmonth2)
paste(lastmonth2.strftime("@Y@m@d"))

みたいに貼り付け作業pasteが関数を用いる事で簡単に操作出来ます。


●まとめ
簡単な事ですが、datetime関数だけで好きな日時を指定出来ました。
先月でも先々月でも昨年でも簡単です。
SikuliXで定義する変数を使い、文字列として入力すれば
自由に時間軸を操作して活用出来ます。
是非SikuliXで自由に時間軸の設定を操作してみてください。
posted by kapper at 06:59 | Comment(0) | Python

2021年11月12日

SikuliXで他のブログラムをサブルーチンとして呼び出して使う方法 RPA その1


今回はSikuliXで他のブログラムをサブルーチンとして呼び出す方法。
それらしい事は色々なサイトに書いてありますが、どうも理解出来ないw
やってみると意外と便利で使いまわしが簡単になるので良いです。
SikuliXは細かい使い方がいまいち日本語情報が少なくてやりにくいですけど

●SikuliXのサブルーチン
プログラムは長いとウザいですが、RPAの場合はどうしても長くなりがち。
なのでサブルーチン的な使い方をしたいのですが、
意外と検索エンジンにヒットしてこない。本にも書いてない。

しかもこのプログラムを延々と伸ばすのも、
小さい単位にして組み合わせた方が便利。
ここなどを参考に書いてみましょう。感謝。

https://inkoblog.com/how-to-reuse-sikulixscript/

●サブルーチン化
メインとなるコードとサブルーチンとするコードを書きます。割愛
(サブルーチン名)には作ったファイル、フォルダ名をそのまま。
文頭の3行と呼び出すサブルーチンのPathをsys.path.append()を
前もってフルパスで指定しておかないと認識しませんので注意

・メインルーチン側

# -*- coding: utf-8 -*-
import sys
from sikuli import *

sys.path.append(r:"C:\Users\(ユーザー名)\(サブルーチン名).sikuli")

import (サブルーチン名)


ざっくりですが、ここまで。
最後のimport (サブルーチン名)の行でサブルーチンのプログラムを実行しますw
Pythonってそういう文法だったっけ?

・サブルーチン側

# -*- coding: utf-8 -*-
import sys
from sikuli import *

{プログラム本体}


という形にして最初の3行は必要です。
間違っているとエラーが出るはずです。
むしろエラーが出まくるので原因がわからなかったり。

●まとめ
これでプログラムをぶった切って、つないでリサイクル出来ます。
なんかPythonのややこしい所とSikuliXのややこしい所が合体して
よくわかりませんよね。プログラムの書き方がw

でサブルーチンを実行する部分がimport サブルーチン名
ってなんじゃそりゃー。
Pathも書かないとどこにサブルーチンがあるか分からないエラーが出る。
サブルーチンが1つ、2つ、3つと増えればPath行もそれだけ必要です。
なぜならプログラムが*.pyだけじゃなくてフォルダー単位なのがSikuliXの特徴だからです。
余計わかりにくい・・・
まあ作ってみて慣れましょうか。
動きゃOKです・・・
posted by kapper at 21:23 | Comment(0) | Python

2021年11月02日

Pythonトラブル対策集 Windows環境のCondaを職場でアップデートしたらProxyが繋がらなくなった対策 その1



今回は職場の先輩から「CondaでProxyが繋がらなくなった」という対策。
知っている人は知っているかもしれないが、ヤバイ。


●CondaのProxy設定
Proxy設定方法は.condarcファイルをc:\Users\(ユーザー名)\に置いて
Proxy設定を書き込むだけですが、
Condaをアップデートしたら繋がらなくなりました。
これはアカンという事でエラーメッセージをググるとgithubに報告がありました。

conda 4.7.12 ProxyError - proxy server settings that work with conda 4.3 fail with conda 4.7.12
#9497
https://github.com/conda/conda/issues/9497

かなり前の話ですが一応今年です。

従来は

ssl_verify: True
proxy_servers:
http: http://id:password@xxx.xxx.xxx.xxx:8080
https: https://id:password@xxx.xxx.xxx.xxx:8080

みたいな感じで書いて保存するんですが、これだとエラーが出ます。
正しくは、

ssl_verify: True
proxy_servers:
http: http://id:password@xxx.xxx.xxx.xxx:8080
https: http://id:password@xxx.xxx.xxx.xxx:8080

という感じでhttps: の後をhttp://〜に修正します。
ここの.condarcしか読まないので、再起動とかは不要です。
ちゃんとProxyに接続してCondaがネットに繋がりました。

●まとめ
簡単ですが、ヤバイです。
特に職場でCondaを使っている人は注意しましょう。
結構有名な話ですが、日本語文献にはまだあまり出てきませんので
エラーメッセージを1年以内条件でググらないとなかなか出てこないと思います。
もしProxyに繋がらなくなったら是非試してみて下さい。
posted by kapper at 20:00 | Comment(0) | Python
にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ