From f41f945fe022e24a3cda6c640db639f0a55e8c6b Mon Sep 17 00:00:00 2001 From: OpenClaw Agent Date: Sat, 7 Feb 2026 09:07:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0B=E7=AB=99=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E5=92=8C=E6=B5=8F=E8=A7=88=E5=99=A8=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bilibili-short-to-long.sh: B站短链接转长链接工具 - 支持短链接、BV号、AV号多种格式 - 自动清理URL中的tracking参数 - 友好的输出格式 - install-browser-for-openclaw.sh: OpenClaw浏览器环境一键安装脚本 - 支持Ubuntu/Debian/CentOS - 自动安装Chromium浏览器 - 配置OpenClaw Gateway --- scripts/bilibili-short-to-long.sh | 91 +++++++++ scripts/install-browser-for-openclaw.sh | 252 ++++++++++++++++++++++++ 2 files changed, 343 insertions(+) create mode 100755 scripts/bilibili-short-to-long.sh create mode 100755 scripts/install-browser-for-openclaw.sh diff --git a/scripts/bilibili-short-to-long.sh b/scripts/bilibili-short-to-long.sh new file mode 100755 index 0000000..176c875 --- /dev/null +++ b/scripts/bilibili-short-to-long.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +# ============================================================================ +# B站短链接转长链接脚本 +# ============================================================================ +# 用途:将B站短链接(b23.tv)转换为完整视频链接 +# 支持:短链接、BV号、AV号 +# ============================================================================ + +set -e + +# 颜色输出 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +# 获取长链接(核心逻辑) +get_long_url() { + local input=$1 + + # 如果是BV号格式(BV开头),直接返回完整URL + if [[ $input =~ ^BV[a-zA-Z0-9]+$ ]]; then + echo "https://www.bilibili.com/video/$input" + return 0 + fi + + # 构造短链接URL + if [[ $input =~ ^https?:// ]]; then + local short_url="$input" + elif [[ $input =~ ^b23\.tv/ ]]; then + local short_url="https://$input" + else + local short_url="https://b23.tv/$input" + fi + + # 获取重定向地址 + local redirect=$(curl -sLI "$short_url" 2>/dev/null | grep -i '^location:' | head -1 | sed 's/location: //I' | tr -d '\r' || echo "") + + if [ -z "$redirect" ]; then + echo "错误:无法获取重定向地址" >&2 + return 1 + fi + + # 清理URL(移除tracking参数) + echo "$redirect" | sed 's/\?.*//' | sed 's/&/\&/g' +} + +# 提取BV号 +extract_bv() { + local url=$1 + echo "$url" | grep -oP 'BV[a-zA-Z0-9]+' | head -1 +} + +# 主函数 +main() { + if [ $# -eq 0 ]; then + echo "用法: $0 <短链接或BV号>" + echo "" + echo "示例:" + echo " $0 https://b23.tv/lid6E0m" + echo " $0 b23.tv/lid6E0m" + echo " $0 BV11t64BJEDZ" + echo " $0 lid6E0m" + exit 1 + fi + + local input=$1 + local long_url=$(get_long_url "$input") + + if [ $? -ne 0 ]; then + exit 1 + fi + + local bv=$(extract_bv "$long_url") + + # 输出结果 + echo "==================================" + echo -e "${GREEN}B站链接转换结果${NC}" + echo "==================================" + echo "输入: $input" + echo "长链接: $long_url" + echo "BV号: ${bv:-未找到}" + echo "==================================" + + # 单独输出长链接(便于脚本调用) + echo "" + echo "$long_url" +} + +main "$@" diff --git a/scripts/install-browser-for-openclaw.sh b/scripts/install-browser-for-openclaw.sh new file mode 100755 index 0000000..d2c47e9 --- /dev/null +++ b/scripts/install-browser-for-openclaw.sh @@ -0,0 +1,252 @@ +#!/bin/bash + +# ============================================================================ +# OpenClaw浏览器环境一键安装脚本 +# ============================================================================ +# 用途:在Ubuntu/Debian服务器上安装Chromium浏览器,供OpenClaw Gateway使用 +# 适用场景:无桌面环境的服务器,需要浏览器进行自动化操作 +# ============================================================================ + +set -e # 遇到错误立即退出 + +# 颜色输出 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# 日志函数 +log_info() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +log_warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# 检查是否为root用户 +check_root() { + if [ "$EUID" -ne 0 ]; then + log_error "请使用sudo运行此脚本: sudo $0" + exit 1 + fi +} + +# 检测系统 +detect_os() { + if [ -f /etc/os-release ]; then + . /etc/os-release + OS=$ID + OS_VERSION=$VERSION_ID + else + log_error "无法检测操作系统类型" + exit 1 + fi + + log_info "检测到系统: $OS $OS_VERSION" +} + +# 检查snap是否可用 +check_snap() { + if command -v snap &> /dev/null; then + log_info "snap已安装" + return 0 + else + log_warn "snap未安装" + return 1 + fi +} + +# 安装snap +install_snap() { + log_info "正在安装snap..." + + case $OS in + ubuntu|debian) + apt update + apt install -y snapd + ;; + centos|rhel|fedora) + yum install -y snapd + ln -s /var/lib/snapd/snap /snap + ;; + *) + log_error "不支持的操作系统: $OS" + exit 1 + ;; + esac + + # 等待snapd启动 + log_info "等待snapd启动..." + sleep 5 + + # 检查snap是否安装成功 + if command -v snap &> /dev/null; then + log_info "snap安装成功" + else + log_error "snap安装失败" + exit 1 + fi +} + +# 安装Chromium(通过snap) +install_chromium_snap() { + log_info "正在通过snap安装Chromium..." + + # 安装Chromium + snap install chromium --classic + + # 等待安装完成 + log_info "等待Chromium安装完成..." + sleep 10 + + # 验证安装 + if snap list | grep -q chromium; then + log_info "Chromium安装成功" + + # 显示Chromium路径 + CHROMIUM_PATH=$(which chromium 2>/dev/null || echo "/snap/bin/chromium") + log_info "Chromium路径: $CHROMIUM_PATH" + + return 0 + else + log_error "Chromium安装失败" + return 1 + fi +} + +# 安装Chromium(通过apt,备选方案) +install_chromium_apt() { + log_info "尝试通过apt安装Chromium..." + + case $OS in + ubuntu|debian) + apt update + apt install -y chromium-browser + ;; + *) + log_error "不支持的操作系统: $OS" + return 1 + ;; + esac + + # 验证安装 + if command -v chromium-browser &> /dev/null || command -v chromium &> /dev/null; then + log_info "Chromium安装成功" + return 0 + else + log_error "Chromium安装失败" + return 1 + fi +} + +# 配置OpenClaw Gateway使用Chromium +configure_openclaw() { + log_info "配置OpenClaw Gateway..." + + # 检查OpenClaw配置文件 + OPENCLAW_CONFIG="$HOME/.openclaw/openclaw.json" + + if [ ! -f "$OPENCLAW_CONFIG" ]; then + log_warn "未找到OpenClaw配置文件: $OPENCLAW_CONFIG" + log_info "跳过Gateway配置" + return 0 + fi + + # 获取Chromium路径 + CHROMIUM_PATH=$(which chromium 2>/dev/null || echo "/snap/bin/chromium") + + # 提示用户可能需要更新配置 + log_info "Chromium已安装,路径: $CHROMIUM_PATH" + log_info "如果OpenClaw Gateway无法自动检测,请手动配置:" + echo " executablePath: \"$CHROMIUM_PATH\"" + echo " headless: true" + echo " noSandbox: true" +} + +# 测试Chromium是否可用 +test_chromium() { + log_info "测试Chromium是否可用..." + + CHROMIUM_CMD=$(which chromium 2>/dev/null || which chromium-browser 2>/dev/null || echo "/snap/bin/chromium") + + if $CHROMIUM_CMD --version &> /dev/null; then + VERSION=$($CHROMIUM_CMD --version) + log_info "Chromium版本: $VERSION" + return 0 + else + log_warn "Chromium可能需要图形库,无法显示版本(在无头环境中是正常的)" + return 0 + fi +} + +# 重启OpenClaw Gateway +restart_gateway() { + log_info "重启OpenClaw Gateway..." + + if command -v openclaw &> /dev/null; then + openclaw gateway restart + log_info "OpenClaw Gateway已重启" + else + log_warn "未找到openclaw命令,请手动重启Gateway" + fi +} + +# 主函数 +main() { + log_info "========================================" + log_info "OpenClaw浏览器环境安装脚本" + log_info "========================================" + + check_root + detect_os + + # 安装snap(如果需要) + if ! check_snap; then + install_snap + fi + + # 尝试安装Chromium + if install_chromium_snap; then + log_info "Chromium安装成功(snap方式)" + else + log_warn "snap安装失败,尝试apt方式..." + if install_chromium_apt; then + log_info "Chromium安装成功(apt方式)" + else + log_error "所有安装方式都失败了" + exit 1 + fi + fi + + # 测试Chromium + test_chromium + + # 配置OpenClaw + configure_openclaw + + # 询问是否重启Gateway + read -p "是否立即重启OpenClaw Gateway?(y/n) " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + restart_gateway + fi + + log_info "========================================" + log_info "安装完成!" + log_info "========================================" + log_info "Chromium已安装并可以供OpenClaw使用" + log_info "" + log_info "验证方法:" + log_info " 1. 运行: openclaw status" + log_info " 2. 检查浏览器状态" + log_info " 3. 使用browser工具测试" + log_info "========================================" +} + +# 运行主函数 +main "$@"