两个用于从B站下载视频的Shell脚本
我在下载四郎讲棋的、最多收藏的、时长低于10分钟的
用于人工收集URL的:
prev= while clipnotify; do t=`xclip -o` if ! [[ "$t" =~ ^http ]]; then continue; fi if [[ "$t" == $prev ]]; then continue; fi prev=$t echo $t >>url ffplay -nodisp -autoexit -loglevel quiet /usr/share/sounds/Oxygen-K3B-Insert-Medium.ogg done
用于下载的:
down () { trap 'kill 0' INT # 输入重定向的函数由子Shell执行,exit仅终止子Shell进程 IFS= read -r line # help read for fmt in flv360-AVC flv360-AV1 flv360-HEVC flv480-AVC flv480-AV1 flv480-HEVC; do if you-get -F dash-$fmt -n --no-caption $line; then sed -i '1d' url # 删除文件url的第1行 return 0 fi done echo $line >>log return 1 } ren () { if [[ "$1" != "$2" ]]; then mv "$1" "$2"; fi } merge () { x=; y=; z= for f in *\[??\].mp4; do t=${f// /}; ren "$f" $t; f=$t # ${v//p/s} 换所有 t=${f/【中国象棋】/}; ren $f $t; f=$t # ${v/p/s} 换一个 z="$z $f"; x="$x -i $f" y=`echo $f | sed 's/\[[0-9]\{2\}\]//'` done if [[ "$x" != "" ]] && ffmpeg $x -preset fast -c:v copy -c:a aac -b:a 20k -ar 16000 -ac 1 $y 2>/dev/null; then mv $y ~/xqv; rm $z else echo "Files not merged" >>log fi } cp ~/url /t cd /t echo >log if [[ "`which you-get`" == "" ]]; then . ~/venv/bin/activate; fi for i in {1..2}; do head -n 1 url | down && merge #sleep `awk 'BEGIN { srand(); printf "%.4f", rand(); }'` done cat log; rm log cp -i /t/url ~ #ffplay -nodisp -autoexit -loglevel quiet /usr/share/sounds/Oxygen-Im-Sms.ogg

浙公网安备 33010602011771号