web-dev-qa-db-ja.com

時間追跡または活動監視アプリケーションの設計方法は?

私は Manic Time -のようなものを構築しようとしています。これは、ユーザーが現在作業している内容を追跡するアプリケーションです。 Windowsでは問題なく動作しましたが、Linuxはサポートしていません。

それは狂った機能を持っていますが、コアは基本的に現在の「アクティブ」ウィンドウが何であるか、プロセス、ウィンドウタイトルなどを追跡するだけです。

私はしばらくの間この問題について考えてきましたが、ここに私が思いついたPythonic疑似コードがありますが、これが進むべき道かどうかはわかりません。

# The script will probably run as a daemon
while True:

    # Get process, window title, etc.
    wnd_details = get_active_window_details()

    # Save the current timestamp and the details to a database (SQLite)
    insert_in_db(current_timestamp, wnd_details)

    # Wait for a second
    sleep(1000)

1秒あたりの書き込みクエリを実行するとパフォーマンスに影響がありますか?

最適化は、以前のウィンドウの詳細を記憶し、ウィンドウが変更されたとき(ユーザーが別のアプリケーションに切り替えたとき)にのみデータベースに書き込むことですが、コードが不必要に複雑になります。

もう1つ調べる必要があるのは、フックやコールバックの一種であるため、ウィンドウの変更が発生するたびに(新しいウィンドウが作成されたり、アクティブウィンドウが変更されたりするなど)、Pythonコードが呼び出されます) Windowsはこれに似たものを持っていますが、Linuxについては何も知りません。

7
dufferZafar

[〜#〜] [〜#〜]希望どおりの動作をしているように見えるオープンソースアプリケーションを見つけました。 https://github.com/gurgeh/selfspy/

2
dufferZafar