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

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

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

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

#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格式

标签: none

添加新评论