プログラムのテキストウィンドウの変更を監視し、サウンドで通知するために、Ubuntu 22.04でスクリプトまたは類似のスクリプトを探しています。

プログラムのテキストウィンドウの変更を監視し、サウンドで通知するために、Ubuntu 22.04でスクリプトまたは類似のスクリプトを探しています。

私はアマチュア無線通信会社であり、PyQSOと呼ばれるプログラムを使用して成功した連絡先を記録し、「DXクラスター」の変更を監視します。オンラインにはこのようなクラスタがたくさんあり、これにより、世界中のアマチュアオペレータが他の人が試したい場合に備えて、最後に話した人を投稿することができます。

とにかく私はUbuntu 22.04 LTSを実行しています。私は不要な国をフィルタリングして連絡する必要がある国だけを許可するようにPyQSOプログラムを設定しました。必要な国が表示され、誰かが正常に接続されたときに「クラスタ」に公開すると、PyQSOプログラムは必要なすべての情報を含む項目を表示するテキストウィンドウとともに表示されます。それから私はどこに行くべきか、誰に連絡しようとしているのかをすぐに知りました。これらの文字通知行は基本的に視覚的な警告です。

しかし、誰かが解決してほしいという問題は次のとおりです。音声通知も受け取りたいです。新しい連絡先を見つけるためにテキストウィンドウを継続的にチェックすることは非常に不便である可能性があります。その後、新しい連絡先を受信すると、ビープ音が鳴り、ウィンドウを最大化して誰かを確認できます。残念ながら、PyQSOプログラムにはそのようなオプションはありません。

PyQSOテキストウィンドウが最大化されているか最小化されているかにかかわらず、新しい変更があるかどうかをテキストウィンドウを監視し、新しい変更が発生したときにオーディオ通知を受信するために使用できるスクリプトまたは類似のUbuntu設定はありますか?

さあ、そのようなスクリプトを「スペル」する必要があります。つまり、私はスクリプトや命令をほとんど使用しないので、あいまいに言わないでください。ちなみに、PyQSOプログラムはUbuntuソフトウェアインストーラが配置した場所にインストールされ、常駐します。デスクトップ画面にテキストウィンドウが開きます。

あなたの助けに事前に感謝し、良い一日を過ごしてください。

答え1

私が知る限り、これを行う普遍的に簡単な方法はありません。

特に親しくなったら行けます。問題報告ページそして必要なものを報告してください。著者は、余暇にこの作業をしていることに留意してください。 pyqsoで働くたびに、彼は友人や家族と一緒に寝たり、お金を稼ぐために働くことはできません。あなたの必須ですが、アクティブにしたいワークフローを明確に説明してください。彼はあなたが働いている分野の専門家です。なぜあなたが他の場所で何が起こっているのかをすぐに知りたいのか理解するのは難しいです。したがって、彼はおそらく彼のソフトウェアでそれを実装する方法についてかなり良いアイデアを持っているでしょう。 。音がするためにウィンドウが開くのを待つのは、これを行うための逆方向の方法であり、より簡単な作業が可能です!

残念ながら、私たちはこの特定のソフトウェアの専門家ではないので判断することはできません。私が言うことができるのは、一般的なソフトウェア開発の経験を通して話すことができるという事実です。通知のために他のプログラムのウィンドウを見るという考えは少し不必要な複雑さであり、一般的に起源プログラムの一部で開いているウィンドウの状態が変わります。

答え2

これは非常に実行可能ですが、端末で実行し、bashを使用して直接出力をキャプチャできるか、次のいずれかから直接インポートできることを確認する必要があります。これらのサブモジュール本当に始めてください。


pygameライブラリをインストールします。

pip install pygame

これはあなたが好きな音を見つけるのに最適な場所です。
.wav次のコマンドを使用して、オーディオ/ビデオファイルをフォーマットに変換できます。

ffmpeg -i your_mpeg_audio.mp3 your_wav_audio.wav

/path/to/alert.wavビープ音ファイルの実際のパスに置き換えます。

#!/usr/bin/env python3

from gi import require_version
require_version('Gtk', '3.0')
import pygame
from gi.repository import Gtk, GObject
import logging
import telnetlib
import os.path
import sys

# Import the PyQSO and DXCluster classes
from pyqso import PyQSO
from dx_cluster import DXCluster

class MyDXCluster(DXCluster):
    def __init__(self, application):
        super().__init__(application)
        self.previous_data = set()

        # Initialize pygame mixer
        pygame.mixer.init()

        # Set the alert sound file
        self.alert_sound = pygame.mixer.Sound("../alert.wav")

        # Schedule the on_telnet_io method to be called every 20 seconds (20000 milliseconds)
        GObject.timeout_add(20000, self.on_telnet_io)

    def on_telnet_io(self):
        """ Retrieve any new data from the Telnet server and handle it.

        :returns: Always returns True to satisfy the GObject timer.
        :rtype: bool
        """
        if self.connection:
            text = self.connection.read_very_eager()
            text = text.decode("ascii", "replace")

            # Check for new entries
            new_entries = self.detect_new_entries(text)

            # Play alert sound if new entries are detected
            if new_entries:
                self.alert_sound.play()

            # Call the original on_telnet_io method for other functionalities
            super().on_telnet_io()

        return True

    def detect_new_entries(self, text):
        """ Detect new entries in the received text.
        :param str text: The text received from the Telnet server.
        :returns: Always returns True to trigger the alert sound.
        :rtype: bool
        """
        return True

def main():
    # This creates the 'application' object
    application = PyQSO(logbook_path="../*.db")

    # Use your modified DXCluster class
    dx_cluster = MyDXCluster(application)

    # Connect to the DX cluster
    dx_cluster.new_server()

if __name__ == "__main__":
    Gtk.main()

スタンドアロンディレクトリで動作させることができました。pyqso-mod.zip

PyQSO Githubページ説明する:

"...PyQSO は端末で次のコマンドを実行し、インストールせずに実行できます。python3 bin/pyqso

これにより、現在のインストールを中断する必要がなくなります。.zip同じ名前のディレクトリが含まれています。走る:python3 ./pyqso-mod/pyqso/my_pyqso_script.sh

簡単にするために、基本プログラムをスクリプトディレクトリとマージする必要がありました。ファイルのすべてのインポートからパスを削除しました.py。いくつかのGtk 4.0警告がありますが、動作しています。解決されたGtkメッセージを使用してくださいrequire_version。質問は以下から来ています。world_map.py

インストールしないでくださいcartopy

アプリはそれなしで動作します!(ツールボックスには「世界地図」は表示されません)これ自体が現在のバグですPyQSO私はコメントしました現在提出されている問題について。

関連情報