From 743bd667532d22044126db503b388250f5347578 Mon Sep 17 00:00:00 2001 From: swanie98635 Date: Wed, 4 Feb 2026 06:50:27 -0800 Subject: [PATCH] fix: ensure mobile location check is committed --- asl3_wx_announce/audio.py | 20 +++++++++++++++--- .../provider/similar git hub projects.txt | 5 +++++ package.tar | Bin 0 -> 52224 bytes 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 asl3_wx_announce/provider/similar git hub projects.txt create mode 100644 package.tar diff --git a/asl3_wx_announce/audio.py b/asl3_wx_announce/audio.py index 8f8e06b..8aa4dcd 100644 --- a/asl3_wx_announce/audio.py +++ b/asl3_wx_announce/audio.py @@ -31,12 +31,26 @@ class AudioHandler: raise e def play_on_nodes(self, filepath: str, nodes: List[str]): - # Asterisk uses file path WITHOUT extension usually for play commands. - # KD5FMU script uses absolute path successfully (e.g. /tmp/current-time) + # Asterisk usually wants paths relative to the sounds directory if they are inside it. + # e.g. "rpt localplay asl3_wx_announce/report" + path_no_ext = os.path.splitext(filepath)[0] + # Standard sounds root + sounds_root = "/var/lib/asterisk/sounds/" + + if path_no_ext.startswith(sounds_root): + # Strip root: /var/lib/asterisk/sounds/dir/file -> dir/file + play_path = path_no_ext[len(sounds_root):] + # Ensure no leading slash + if play_path.startswith("/"): + play_path = play_path[1:] + else: + # Outside standard dir, use absolute + play_path = path_no_ext + for node in nodes: - asterisk_cmd = f'asterisk -rx "rpt localplay {node} {path_no_ext}"' + asterisk_cmd = f'asterisk -rx "rpt localplay {node} {play_path}"' self.logger.info(f"Playing on {node}: {asterisk_cmd}") try: subprocess.run(asterisk_cmd, shell=True, check=True) diff --git a/asl3_wx_announce/provider/similar git hub projects.txt b/asl3_wx_announce/provider/similar git hub projects.txt new file mode 100644 index 0000000..da5e50b --- /dev/null +++ b/asl3_wx_announce/provider/similar git hub projects.txt @@ -0,0 +1,5 @@ +https://github.com/KD5FMU/Play-Audio-Locally +https://github.com/KD5FMU/Time-Weather-Announce +https://github.com/KD5FMU/Play-Audio-ASL3-Node +https://github.com/KD5FMU/Convert-Audio-File-to-ulaw +https://github.com/KD5FMU/Saytime-Weather-FIX-for-HamVoip diff --git a/package.tar b/package.tar new file mode 100644 index 0000000000000000000000000000000000000000..4446a4ccc1e9243286794f55e0918ff3156a794d GIT binary patch literal 52224 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 SDo+%6qQDaco+$8%6!`y<%}&(- literal 0 HcmV?d00001