45 lines
1.4 KiB
Bash
Executable File
45 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# B站下载工具 - By OpenClaw
|
|
|
|
# 下载视频(默认480P)
|
|
bilibili() {
|
|
if [ -z "$1" ]; then
|
|
echo "用法: bilibili <B站链接或BV号>"
|
|
return
|
|
fi
|
|
yt-dlp -f "bv[height<=480]+ba" --downloader aria2c "$1"
|
|
}
|
|
|
|
# 下载弹幕
|
|
danmaku() {
|
|
if [ -z "$1" ]; then
|
|
echo "用法: danmaku <B站链接或BV号>"
|
|
return
|
|
fi
|
|
bv=$(echo "$1" | grep -oE 'BV[a-zA-Z0-9]+' | head -1)
|
|
if [ -n "$bv" ]; then
|
|
curl -s "https://api.bilibili.com/x/v1/dm/list.so?oid=$(python3 -c "print('$bv'[:10].encode().hex())")" -o "${bv}.xml" 2>/dev/null
|
|
echo "已保存到: ${bv}.xml"
|
|
fi
|
|
}
|
|
|
|
# 查看视频信息
|
|
info() {
|
|
if [ -z "$1" ]; then
|
|
echo "用法: bilibili-info <B站链接>"
|
|
return
|
|
fi
|
|
yt-dlp --dump-json "$1" | python3 -c "import sys,json; d=json.load(sys.stdin); print('标题:', d.get('title')); print('UP主:', d.get('uploader')); print('时长:', d.get('duration')); [print(f'{f[\"format_note\"]}: {f[\"ext\"]}') for f in d.get('formats',[])[:10]]"
|
|
}
|
|
|
|
# 默认帮助
|
|
if [ -z "$1" ]; then
|
|
echo "📺 B站下载工具"
|
|
echo "================"
|
|
echo " bilibili <链接> # 下载视频(480P)"
|
|
echo " danmaku <链接> # 下载弹幕"
|
|
echo " bilibili-info <链接> # 查看视频信息"
|
|
echo ""
|
|
echo "示例: bilibili https://www.bilibili.com/video/BV1xx411c7mD"
|
|
fi
|