批量下载B站港澳台CC外挂字幕shell脚本

发布于 / 实用软件 / 3 条评论

受限于网络流媒体画质普遍不高,最近几年观看番剧主要是通过下载BD原盘资源,但是又由于近年来某个原因,几乎所有的盗版字幕组都不再单独提供字幕文件下载,而我的日语水平还远远没有达到啃生肉的程度,那么从哪里下载当季最新番剧的字幕呢?

我将目光投向了叔叔的港澳台番剧,近年来很多无法获得国内版本号的番剧都选择了采用港澳台独播的方式上架B站,他们的字幕开始采用外挂CC字幕的方式展现,因此可以通过一些方式抓取到字幕文件来给自己的BD资源用上。

但是我逛了一遍Github和Google,下载字幕的工具还真有不少,但是我还真没看到可以批量下载一整部番剧字幕的轮子,因此花了半小时时间用shell写了一个,别问为什么用python,因为水平不行写(百度)得太慢

目前测试了几个番剧。比如 86-不存在的戰區-(僅限港澳台地區) 贾希大人不气馁!(仅限港澳台地区) 都是可以正常下载的

#https://cangshui.net/4935.html 沧水博客
#yum install -y p7zip*
#apt install -y p7zip*
rm -rf index*
rm -rf season*
echo "下载的字幕文件将会存放在season目录中,若文件皆为空白,则说明该番剧没有字幕文件!"
echo "输入番剧地址:(结尾为带md字眼的链接,如https://www.bilibili.com/bangumi/media/md28234736/"
read -p "请输入:" videourl
wget -N --no-check-certificate -O index.zip "$videourl" 
7z x index.zip
season_id=$( grep -o "season_id.........season_status" index )
season_id=`echo  "$season_id" | tr -cd "[0-9]" `
echo "season_id是:"$season_id
wget -N --no-check-certificate -O season.json "https://api.bilibili.com/pgc/web/season/section?season_id=$season_id"
sed -i 's/{\"aid/\n{\"aid/g' season.json
sed -i '1d' season.json
sed -i 's/{\"aid\"\:/◎◎◎/g' season.json
sed -i 's/\,\"badge\"\:/\n☆☆☆/g' season.json
sed -i 's/\"cid\"\:/\n△△△/g' season.json
sed -i 's/\,\"cover\"/\n☆☆☆/g' season.json
sed -i '/☆☆☆/d' season.json
sed -i 's/◎◎◎/https\:\/\/api.bilibili.com\/x\/player\/v2\?aid\=/g' season.json
sed -i 's/△△△/\&cid\=/g' season.json
sed -i ':a;N;s/\n//;ta' season.json
sed -i 's/https/\nhttps/g' season.json
sed -i '1d' season.json
ii="0"
cclink=""
rm -rf season
mkdir season
for line in $(cat season.json) 
do
  ii=`expr $ii + 1`
  echo 第$ii集$line
  ep=$( printf "%02d\n" $ii )
  wget -N --no-check-certificate -O ./season/"$ep" "$line"
  sed -i 's/\"subtitle_url\"\:\"/\nhttps\:/g' ./season/"$ep"
  sed -i 's/\"\,\"type/\n/g' ./season/"$ep"
  sed -i '/id_str/d' ./season/"$ep"
  sed -i '/bvid/d' ./season/"$ep"
  cclink=$( cat ./season/"$ep" | head -n 1 )
  wget -N --no-check-certificate -O ./season/"$ep".bcc "$cclink"
  rm -rf ./season/"$ep"
done
sizeA=$(du -h --max-depth=1 ./season | awk '{print $1}' | tr -d "a-zA-Z" |sed "s/\..*//g")
sizeB=$(find ./season  -type f | wc -l)
sizeB=`expr $sizeB \* 2`
if [[ $sizeA -le $sizeB ]]
  then
    echo "该剧集可能没有字幕文件"
  else
    echo ""
fi

运行脚本前请安装7z工具, centos就直接 yum install -y p7zip* debian就 apt install -y p7zip*

运行之后会在脚本运行目录下生成一个season文件夹,其中有带数字排序的.bcc文件,这就是下载下来的字幕文件了,有简体繁体两种字幕的剧集会保留只简体,只有繁体的那就只有繁体

但是此时还是不能直接拖到视频工具里直接播放的,因为BCC并不是通用字幕文件,我们还需要转码

我在google搜了一阵子之后找到了一个简单的小工具 字幕文件BCC格式转SRT格式 直接把工具丢在字幕文件夹里就可以批量全部转换为srt格式

enjoy it!

后续数个月可能会制作多个流媒体网站的字幕脚本,敬请期待 github:https://github.com/CangShui/subtitle-download

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
转载原创文章请注明,转载自: 沧水的博客 » 批量下载B站港澳台CC外挂字幕shell脚本
  1. sss

    沧水大大,请问可以出一期博客建站攻略吗,想要自建一个跟你风格一样的个人blog

    1. 沧水
      @sss 这样的攻略网上太多了......我写了也根本在搜索引擎上排不上号...我最多接单建站
  2. 白芷清

    其实还有很多类似kisssub.org这样的动漫BT网站