From 5dfd29eafd0e039f696f874df229ebf9b1828659 Mon Sep 17 00:00:00 2001 From: hymansun <10735997+hymansun@users.noreply.github.com> Date: Wed, 10 Jun 2026 14:12:02 +0800 Subject: [PATCH] fix(xiaoyuzhou): replace grep -oP with perl for macOS BSD grep compat (#290) BSD grep failure reproduced locally; perl extraction verified against a live episode page (title + 429-wait parsing). Fixes #289. --- agent_reach/scripts/transcribe_xiaoyuzhou.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/agent_reach/scripts/transcribe_xiaoyuzhou.sh b/agent_reach/scripts/transcribe_xiaoyuzhou.sh index 4a1cc80..15b2ab9 100755 --- a/agent_reach/scripts/transcribe_xiaoyuzhou.sh +++ b/agent_reach/scripts/transcribe_xiaoyuzhou.sh @@ -35,8 +35,8 @@ echo "====================" # Step 1: 提取音频 URL 和标题 echo "🔍 正在解析页面..." PAGE=$(curl -s "$URL") -AUDIO_URL=$(echo "$PAGE" | grep -oP 'https://media\.xyzcdn\.net/[^"]*\.(m4a|mp3)' | head -1) -TITLE=$(echo "$PAGE" | grep -oP '"title":"[^"]*"' | head -1 | sed 's/"title":"//;s/"//') +AUDIO_URL=$(echo "$PAGE" | perl -ne 'while (/(https:\/\/media\.xyzcdn\.net\/[^"]*\.(?:m4a|mp3))/g) { print "$1\n" }' | head -1) +TITLE=$(echo "$PAGE" | perl -ne 'if (/"title":"([^"]*)"/) { print "$1\n"; last }' | head -1) if [ -z "$AUDIO_URL" ]; then echo "❌ 无法从页面提取音频链接" @@ -111,7 +111,7 @@ for i in $(seq 0 $((NUM_CHUNKS - 1))); do # 如果是速率限制,等待后重试 if [ "$HTTP_CODE" = "429" ]; then # 从错误信息中提取等待时间,默认 120 秒 - WAIT_SEC=$(echo "$BODY" | grep -oP 'in \K[0-9]+m' | sed 's/m//' | head -1) + WAIT_SEC=$(echo "$BODY" | perl -ne 'if (/in (\d+)m/) { print "$1\n"; exit }') WAIT_SEC=${WAIT_SEC:-2} WAIT_SEC=$((WAIT_SEC * 60 + 30)) echo " ⏳ 速率限制,等待 ${WAIT_SEC} 秒后重试..."