Files
xwlb/scripts/install_systemd.sh
simon 60f8c263f2 《新闻联播》每日抓取入库:全链路 + 可移植化 + 定时任务
从 CCTV 主页抓取《新闻联播》,下载 → 转 MP3/WAV → 静音切分 → ASR 识别
→ LLM 校对 → 切分为单条新闻 → 入库 MySQL。

主要内容:
- 全链路:getVideo5 抓取下载、audioRead 转写、deepseek 校对与切分、newsProcess 入库
- 可移植化:配置分层,.env 只放密钥、config.yml 放模型/接入点/路由/参数
- 可换供应商:endpoints(kind/base_url/api_key_env/extra_body)+ routes 按环节选路
- 数据保真:数值事实守卫,校对改动数字/年份/届次则整片回退 ASR 原文;
  识别不完整不发布该日精编,避免半天内容被当成完整一天
- 定时任务:systemd 每天 21:00,失败 21:30 / 22:00 重试;
  只缺切分时只重跑切分(省掉全部 ASR),用 state/.asr_complete_* 标记判定阶段
- 隧道自愈:13306 不通时自动执行 autossh.sh(所有入口共用,systemd 托管时只等待)
- 中间产物每日清理;97 项离线自检(配置/清理/事实守卫/解析/隧道)
2026-09-25 11:17:46 +08:00

51 lines
1.9 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 安装/更新 systemd 定时任务(需要 sudo;幂等,可反复执行)
#
# bash scripts/install_systemd.sh
#
# 做四件事:
# 1) 把 systemd/*.{service,timer} 装到 /etc/systemd/system/
# 2) 启用并启动 xwlb-daily.timer(每天 21:00 触发)
# 3) 启用 xwlb-tunnel.service(autossh 隧道,随开机自启)
# 4) 打印下一次触发时间
set -euo pipefail
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SUDO=""
if [ "$(id -u)" -ne 0 ]; then SUDO="sudo"; fi
echo "== 1/4 安装单元文件 =="
for unit in xwlb-daily.service xwlb-daily.timer xwlb-tunnel.service; do
$SUDO install -m 0644 "$DIR/systemd/$unit" "/etc/systemd/system/$unit"
echo " $unit"
done
echo "== 2/4 daemon-reload =="
$SUDO systemctl daemon-reload
echo "== 3/4 启用定时器 =="
$SUDO systemctl enable --now xwlb-daily.timer >/dev/null
echo " xwlb-daily.timer 已启用"
echo "== 4/4 隧道服务 =="
if ss -ltn 2>/dev/null | grep -q '127.0.0.1:13306'; then
if systemctl is-active --quiet xwlb-tunnel.service; then
$SUDO systemctl restart xwlb-tunnel.service
echo " xwlb-tunnel.service 已重启"
else
echo " ⚠️ 13306 已被**非 systemd 托管**的 autossh 占用,暂不启用隧道服务。"
echo " 想改由 systemd 托管(可开机自启、断了自动重连)请执行:"
echo " pkill -f 'autossh.*13306' && sudo systemctl enable --now xwlb-tunnel.service"
fi
else
$SUDO systemctl enable --now xwlb-tunnel.service >/dev/null
echo " xwlb-tunnel.service 已启用"
fi
echo
echo "== 下一次触发时间 =="
systemctl list-timers xwlb-daily.timer --no-pager || true
echo
echo "查看日志: journalctl -u xwlb-daily -f (也可看 $DIR/main.log)"
echo "立即试跑: sudo systemctl start xwlb-daily.service"
echo "临时停用: sudo systemctl disable --now xwlb-daily.timer"