프로그램 텍스트 창 변경 사항을 모니터링하고 소리로 알려주기 위해 Ubuntu 22.04에서 스크립트 또는 이와 유사한 스크립트를 찾고 있습니다.

프로그램 텍스트 창 변경 사항을 모니터링하고 소리로 알려주기 위해 Ubuntu 22.04에서 스크립트 또는 이와 유사한 스크립트를 찾고 있습니다.

저는 아마추어 무선 통신사이며 PyQSO라는 프로그램을 사용하여 성공적인 접촉을 기록하고 "DX 클러스터"의 변경 사항을 모니터링합니다. 온라인에는 이러한 클러스터가 많이 있으며, 이를 통해 전 세계의 아마추어 운영자가 다른 사람이 시도하고 싶어할 경우를 대비하여 마지막으로 대화한 사람을 게시할 수 있습니다.

어쨌든 저는 Ubuntu 22.04 LTS를 실행하고 있습니다. 나는 원치 않는 국가를 필터링하고 연락해야 하는 국가만 허용하도록 PyQSO 프로그램을 설정했습니다. 필요한 국가가 표시되고 누군가 성공적으로 연결되었을 때 "클러스터"에 게시하면 PyQSO 프로그램이 필요한 모든 정보가 포함된 항목을 표시하는 텍스트 창과 함께 나타납니다. 그러면 나는 어디로 가야 할지, 누구에게 연락하려고 하는지 즉시 알았습니다. 이러한 문자 알림 라인은 기본적으로 시각적 경고입니다.

하지만 누군가가 해결해 주기를 바라는 문제는 다음과 같습니다. 오디오 알림도 받고 싶습니다. 새로운 연락처를 찾기 위해 지속적으로 텍스트 창을 확인하는 것은 매우 불편할 수 있으며, 창을 최소화하고 PC에서 다른 작업을 계속할 수 있으면 좋을 것입니다. 그런 다음 새 연락처가 수신되면 경고음이 울리고 창을 최대화하여 누구인지 확인할 수 있습니다. 불행하게도 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.내가 댓글을 달았어현재 제출된 문제에 대해.

관련 정보