pi400网络连接分析脚本

ssh连接pi400调试时,有时会断线,但可能pi400与wifi还是连接的,请帮写个分析脚本,看看它与wifi连接稳定性,与业务相关的youtube/cloudflare/github的连接稳定性。

传到 Pi 后直接用:

# 传到 Pi
scp netwatch.sh [email protected]:~/

# 加执行权限
chmod +x ~/netwatch.sh

# 单次完整报告(排查当前状态)
bash ~/netwatch.sh

# 持续监控(每60秒检测一次,同时写日志)
bash ~/netwatch.sh --watch --log

脚本检测四个层面:

WiFi 层:信号强度(dBm)并给出优/良/差评级、频率、连接速率、RX丢弃包数。信号低于 -80dBm 基本可以确定是断线根源。

网关层:ping 本地路由器,RTT 和丢包率。网关丢包说明 WiFi 本身不稳,跟外网无关。

业务节点:分别 ping YouTube、Cloudflare R2、Cloudflare Pages、GitHub、Gemini API,每个节点显示丢包率和 RTT,颜色区分正常/警告/故障。

SSH 断线原因:检查 sshd 的 ClientAliveInterval 配置,为 0 时直接给出修复命令;同时抓取过去 24 小时的 SSH 断线日志;顺带检测 CPU 温度,Pi 过热会触发降频影响 WiFi 驱动稳定性。

SSH 断线最常见的两个原因:一是 sshd 没开 keepalive,长时间无操作后连接被路由器 NAT 超时踢掉;二是 WiFi 信号弱导致间歇性断联。脚本的输出能直接定位是哪种。

[Read More]

YouTube视频转播客系统(思路版)

节目列表:“叶牧讲道”

https://www.youtube.com/playlist?list=PLJrxdSPqlkthQegOJr0tTNNMJTRy1mufQ

为了将这套“YouTube视频转播客”系统打造为真正生产级、全球化、且具备 AI 能力的平台,我们需要对您现有的脚本架构进行深度优化。

这份优化方案将解决三个核心痛点:中国访问稳定性、AI 自动化处理、以及系统长期运行的低维护性。


🛠️ 方案总架构:全球化“福音中转站”

  • 执行层 (VPS): 仅负责 yt-dlp 下载和初步转码,不存储文件。

  • 存储层 (Cloudflare R2): 作为全球音频分发站(10GB 免费,中国直连友好)。

  • AI 增强层 (OpenAI/Whisper): 自动提取讲道金句和摘要。

  • 展示层 (GitHub Pages + Cloudflare CDN): 托管 RSS 订阅源,永不掉线。


1. 核心脚本优化:fetch.sh (生产级增强)

优化点:增加错误重试、元数据抓取、以及针对 R2 的极速同步。

Bash

#!/bin/bash
# 自动退出并记录日志
set -e
LOG_FILE="podcast_sync.log"

# 配置区
CONFIG_FILE="config.json"
TEMP_DIR="./temp_audio"
mkdir -p $TEMP_DIR

echo "[$(date)] 开始同步任务..." | tee -a $LOG_FILE

# 读取配置循环处理
jq -c '.channels[]' $CONFIG_FILE | while read ch; do
    NAME=$(echo $ch | jq -r .name)
    URL=$(echo $ch | jq -r .youtube)
    BUCKET=$(echo $ch | jq -r .bucket)

    echo "正在处理频道: $NAME"

    # 1. 增强版 yt-dlp:抓取音频、封面、简介json
    # --download-archive 确保不重复下载
    yt-dlp -x --audio-format mp3 --audio-quality 0 \
        --write-thumbnail --convert-thumbnails jpg \
        --write-info-json \
        --download-archive "archive_${BUCKET}.txt" \
        -o "${TEMP_DIR}/${BUCKET}-%(upload_date)s-%(title)s.%(ext)s" \
        --limit-rate 10M "$URL"

    # 2. 自动上传到 Cloudflare R2 (配置好的 rclone 驱动名设为 r2)
    # 使用 rclone copy 而非 move,确保上传成功后再清理
    rclone copy $TEMP_DIR/ r2:$BUCKET/ --include "${BUCKET}-*" --progress

    # 3. 清理本地缓存
    rm -rf $TEMP_DIR/${BUCKET}-*
done

echo "[$(date)] 同步完成。" | tee -a $LOG_FILE

2. 内容增强优化:generate_rss.py (AI & SEO 级)

优化点:增加 Apple Podcast 官方分类AI 摘要占位符、以及中西双语元数据

[Read More]

python虚拟环境设置

设置虚拟环境(Virtual Environment)是 Python 开发的“基操”,你记忆中带 env 的那个内置工具叫 venv

在项目目录下搞个隔离环境,能有效避免不同项目之间的库版本冲突(比如这个项目要 pandas 1.0,那个要 pandas 2.0)。

以下是快速设置的 3 步走方案:


1. 创建虚拟环境

打开终端(Terminal / CMD),进入你的项目文件夹,运行:

Bash

# 'venv' 是工具名,第二个 'venv' 是你给环境起的文件夹名(通常都叫 venv 或 .venv)
python -m venv venv

运行完后,你会发现文件夹里多了一个叫 venv 的目录。


2. 激活虚拟环境 (最重要的步骤)

创建完后,你必须“进入”这个环境,命令根据操作系统有所不同:

操作系统激活命令 (在项目根目录运行)
Windows (CMD)venv\Scripts\activate
Windows (PowerShell).\venv\Scripts\Activate.ps1
macOS / Linuxsource venv/bin/activate

激活成功的标志: 你的命令行提示符前面会出现 (venv) 的字样。


3. 安装库并开始运行

激活后,你进行的任何 pip install 都只会装在这个小房间里,不会污染系统全局环境。

Bash

# 比如安装我们刚才脚本需要的 pandas
pip install pandas

# 运行你的脚本
python wise_calc.py -f my_data.csv

🛠️ 常用进阶操作

  • 退出环境: 直接输入 deactivate 即可回到全局环境。

    [Read More]

Mac mini搭建本地大模型(chatgpt)

如果用mac mini来部署本地跑模型,需要做些准备

这个问题问得很到位 👍
我按**“现实可行 + 不踩坑”**的思路,给你一份 Mac mini 本地跑模型的准备清单。不玩概念,只讲能不能跑、跑得怎么样。

先给一句结论:
Mac mini 非常适合“安静、稳定、本地 AI 助手”,但前提是 型号和内存选对


一、先选对 Mac mini(这是最关键的一步)

✅ 强烈推荐

Apple Silicon(M 系列)

芯片是否推荐说明
M2 / M2 Pro⭐⭐⭐⭐性价比高,够用
M1 / M1 Pro⭐⭐⭐⭐二手也很香
M3 / M3 Pro⭐⭐⭐⭐⭐最佳(预算允许)

❌ 不推荐

  • Intel Mac mini

    • 跑 LLM 很慢

    • 功耗高

    • 没有 Metal GPU 优势

👉 一句话

M 系列 + 大内存 = 本地模型体验好坏的分水岭


二、内存怎么选(比 CPU 更重要)

这是很多人会选错的地方。

[Read More]

安装outline排障

这个错误提示非常明确:Docker 无法连接到 Docker Hub 镜像仓库i/o timeout)。

简单来说,你的服务器在尝试下载 watchtower(用于自动更新 Outline 的组件)时,网络请求超时了。这通常是因为服务器所在的环境存在网络限制(GFW 拦截)或 DNS 解析问题。

你可以尝试以下几种解决方案:

1. 设置 Docker 国内镜像加速器

如果你使用的是中国大陆境内的服务器,直接访问 Docker Hub 经常会超时。你可以配置国内的镜像源来绕过这个问题。

编辑 Docker 配置文件(如果文件不存在则创建一个):

Bash

sudo nano /etc/docker/daemon.json

将以下内容粘贴进去(这里以几个常用的镜像源为例):

JSON

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://huecker.io",
    "https://dockerhub.timeweb.cloud",
    "https://noohub.net"
  ]
}

保存退出后,重启 Docker 服务:

Bash

sudo systemctl daemon-reload
sudo systemctl restart docker

重启后,重新运行 Outline 的安装脚本。


2. 手动拉取镜像(测试连接)

在再次运行安装脚本前,你可以手动测试 Docker 能否拉取镜像:

Bash

docker pull containrrr/watchtower:latest

如果这一步依然报错 Timeout,说明镜像源失效或网络依然不通。


3. 检查 DNS 设置

有时是因为服务器无法正确解析 registry-1.docker.io 的 IP 地址。你可以尝试修改 DNS 配置文件:

[Read More]

老笔记本实现语音识别功能

订阅的老时课程一直是在小程序里听音频,有时候会想看看文字稿,以前也想在自己笔记本上部署个语音识别产品,当时搜了下,可能也就讯飞、百度什么的有些可以免费使用的产品,开源的解决方案好像没有。

今天突然又想到这个念头,就在chatgpt和gemini上问了下,找到他们共同推荐的开源方案:OpenAI’s Whisper,结果竟然很轻松地就在我的老笔记本(LenovoTninkPad X1 Carbon)上跑起来了。

图片描述

感叹一句,科技发展的速度真是快呀!


提问(chatgpt/gemini): “语音识别,中文,逐字稿,有能在mac10.15.7上运行的开源方案吗?16G内存 ”

chatgpt:

可以的,而且在 macOS 10.15.7(Catalina)+ 16GB 内存 这个条件下是完全可行的
我直接给你 “能跑 + 不折腾 + 实际可用” 的开源方案结论。


✅ 结论先行(给你选)

macOS 10.15.7 上,最稳妥、成功率最高的是:

🥇 OpenAI Whisper(CPU 版)
🥈 Whisper.cpp(强烈推荐,最省资源)

不推荐:WhisperX / NeMo(对系统和依赖要求过高)


🥇 方案一:OpenAI Whisper(Python 版,经典方案)

✅ 兼容 Catalina

✅ 16GB 内存完全够

✅ 中文效果好

⚠️ 速度一般(CPU)


一、环境要求(你都满足)

  • macOS 10.15.7

  • Python 3.8 / 3.9(不要 3.11)

  • 无需 GPU

  • 16GB RAM ✅


二、安装步骤(一步一步,不踩雷)

1️⃣ 安装 Python(如果没有)

👉 推荐 3.9

[Read More]

firefox extensions的比较取舍:ublock origin/adblock plus/adblock/adguard/ghostery

这是一个很好的问题 —不同广告拦截/内容屏蔽扩展在功能、性能、隐私哲学,以及易用性上差异很大。下面是对 uBlock Origin、Adblock Plus、AdBlock、AdGuard、Ghostery 这几个在 Firefox 上常用扩展的比较 +取舍建议。


各扩展优缺点比较

1. uBlock Origin

优点:

  • 开源(GPL),社区信任高。 (维基百科)

  • 非常高效、资源开销低。许多人认为它是“轻量级但功能强大”的过滤器。 (维基百科)

  • 支持多种过滤列表 (EasyList, EasyPrivacy 等),也支持自定义规则、动态 (动态过滤) 等高级功能。 (维基百科)

  • 隐私保护强:不仅屏蔽广告,还可以屏蔽跟踪脚本、恶意域等。

缺点 /注意事项:

  • 对于不愿意配置过滤规则或深入调优的普通用户可能“过强”,界面比较技术向。

  • 对于某些复杂广告/跟踪机制,如果只用默认规则,可能覆盖不完全(但通常已经非常足够)。


2. Adblock Plus (ABP)

优点:

  • 历史悠久、用户基础大。

  • 界面相对简单,用户友好。

  • 支持“可接受广告”(Acceptable Ads)计划,让某些“不侵入”的广告默认不过滤(用户可以选择关闭)。 (Ghostery)

  • 可以选择加载多个过滤列表,包括隐私类 (EasyPrivacy) 列表。

缺点 /风险:

MacOS容器运行Linux举例

1️⃣ 安装 Docker(如果还没安装)

在 macOS 10.15 上下载 Docker Desktop for Mac:https://docs.docker.com/desktop/mac/install/

安装后验证:

docker --version

2️⃣ 拉一个 Ubuntu 镜像

docker pull ubuntu:22.04

3️⃣ 创建 Docker 容器并进入

docker run -it --name test-build ubuntu:22.04 /bin/bash

4️⃣ 更新系统

在容器里运行:

apt-get update
apt-get upgrade

✅ 这样,你在 macOS 10.15 上也能使用Linux了。


xray+reality配置指南

先说结论:采用了最小化配置,无伪装,无证书申请。

经过几个星期的折腾(人笨只能用时间堆,哈哈,还好时间大把),搭建好带伪装页面的,但实际操作中,你直接访问伪装页面的域名都会报错,这个就比较坑了,本来是说其他流量会被跳转到个看起来正常的伪装页面,增强隐蔽性,结果你老人家直接报出一堆证书相关的错。这也不能怪人家大厂,谁叫这流量路径就是不正常的呢,当然要好心提醒你一下。所以这个大特征在这一亮,我就乖乖投降了。(有心力多学习一点的,可以按我的学习历程也把坑都踩一下)

具体操作流程如下:

  • 申请一个云主机,Linux系统, 我选的Debian,用惯了。
  • 装上安全软件,ufw和fail2ban。
sudo apt-get install ufw fail2ban
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw allow 443/tcp
sudo ufw enable
  • 安装xray,考虑安全,最好创建一个用户运行下面命令:

Basic Usage

源码地址

Install & Upgrade Xray-core and geodata with User=nobody, but will NOT overwrite User in existing service files

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

重点/易错:如前面提到,“不要手动复制随机二进制” ——使用官方安装脚本可保证自动更新。

  • 生成 Reality 密钥与用户 UUID:
xray uuid
xray x25519
  • 记录下输出的 UUID, Private key, Public key.
    重点/易错:务必保存 Private key(在服务端配置)和 Public key(客户端使用)。遗失或弄错会导致连接失败。
  • 生成ShortID:
openssl rand -hex 8
  • 配置 Xray 入站(单用户模式)示例/usr/local/etc/xray/config.json
    {
      "log": {
        "access": "/var/log/xray/access.log",
        "error": "/var/log/xray/error.log",
        "loglevel": "warning"
      },
      "dns": {
	    "servers": [
	      "https+local://1.1.1.1/dns-query", // First 1.1.1.1 DoH
	      "localhost"
	    ]
	  }, 
	  "inbounds": [
        {
          "listen": "0.0.0.0",
          "port": 443,
          "protocol": "vless",
          "settings": {
            "clients": [
              {
                "id": "YOUR-UUID",
                "flow": "xtls-rprx-vision",
                "level": 0
              }
            ],
            "decryption": "none"
          },
          "streamSettings": {
            "network": "tcp",
            "security": "reality",
            "realitySettings": {
              "show": false,
              "dest": "www.example.com:443",
              "xver": 0,
              "serverNames": ["www.example.com"],
              "privateKey": "YOUR-PRIVATE-KEY",
              "shortIds": ["0123456789abcdef"],
              "fingerprint": "chrome",
              "spiderX": "/"
          },
          "sniffing": {
	        "enabled": true,
	        "destOverride": ["http", "tls"]
	      } 
	    }
      ],
      "outbounds": [
        {
          "protocol": "freedom",
          "tag": "direct"
        }
      ]
    }
  • 下载相应客户端

推荐第一名Happ - Proxy Utility | Happ

[Read More]

Hiddify配置要点(已弃坑)

提问:settings里面domains选哪个,direct/reality/fake site

gpt回答:

非常好,这两个问题实际上是相互关联的 💡
因为你要的是:

✅ Hiddify 使用 Reality 核心(xray+Reality)
✅ 同时让普通浏览器访问域名时显示 本地伪装网页

我来一次性帮你解决:

🧩 一、面板里的正确选项选择(Settings → Domains)

在 Hiddify 管理面板中(Admin Panel > Settings > Domains),你会看到三类域名类型:

类型含义用途选哪个
Direct明文传输,主要给自建反代、内网节点、探针等使用一般指纯 HTTP(S) 访问,不加密传输❌ 不选
Reality使用 Xray Reality 协议(即真正的代理流量)给客户端连接代理使用(VLESS + Reality)✅ 选这个用于节点主域名
Fake Site / Decoy Site伪装站点(Decoy 页面)提供浏览器访问时显示的网页(假网站)✅ 若启用伪装页面,选此项作为备用域名

🔹 实际配置中:

- Reality 域名:用于客户端连接代理

- Fake Site 域名(Decoy Site):浏览器访问显示网页

[Read More]