android如何在imagebutton写字_Android——bilibili缓存视频合并脚本[3.1]

a4cac39b39952a5beba9585bf323b264.png

自从3.0的大更新后,脚本好似更加的智能了,使用者没有那么多的需要修改脚本的步骤了,但是3.0版的文章被知乎删除了

不过没关系,今天迎来了3.1版

3e3c8d22319cc84e3aae649c683acc79.png

本期更新

  • 新增自主检查是否缺失依赖
  • 新增各bilibiliApp的版本的支持

本期特点

  • 每次运行脚本都会自主检测是否缺失依赖,如果缺失依赖会自动为你安装相关依赖,不再需要自己手动安装,当然前提是你使用的是Termux(包括魔改版)。
  • 支持各哔哩哔哩App版本的输出,再也不用自己手动修改脚本里的App位置,目前仅支持手机里安装一个哔哩哔哩App版本。

以后脚本的更新,都是直接把发脚本来,不在介绍如何使用了,因为已经有一篇比较全的使用教程了。见

menGo:bilibili指导篇(总结归类)——从无到有,境无止尽!​zhuanlan.zhihu.com
b9e9cb21ead334672c21d9e925661b5a.png
#!bin/bash
########################################
#                免责声明
#    本脚本仅用于个人学习、研究使用等
#   禁止一切用于商业或盈利性为目的用途
# 通过使用本脚本带来的所有风险与作者无关
#   应遵守著作权法及其他相关法律的规定
#         下载后请在24小时内删除
#    使用者使用本脚本默认同意上述约定
########################################
#      特别感谢 @浅错觉 给予的帮助
########################################
#        已集成自动安装依赖功能
#  apt install vim gawk grep jq ffmpeg
########################################
#             Version : 3.1
########################################
#允许访问内部储存
termux-setup-storage
#安装相关依赖
echo -e "033[1;31m检查是否缺失依赖...033[0m"
if [ ! -f $PREFIX/bin/vim ] || [ ! -f $PREFIX/bin/awk ]     || [ ! -f $PREFIX/bin/sed ] || [ ! -f $PREFIX/bin/grep ]     || [ ! -f $PREFIX/bin/jq ] || [ ! -f $PREFIX/bin/ffmpeg     ]; then
  echo -e "033[1;31m正在安装相关依赖...033[0m"
  apt install vim gawk sed grep jq ffmpeg -y
  echo -e "033[1;31m所需依赖安装完毕033[0m"
else
  echo -e "033[1;31m没有依赖缺失...033[0m"
fi
#定义bilibili输出目录
output_dir="/storage/emulated/0/Video/"
if [ ! -d "$output_dir" ]; then
  echo -e "033[1;32m创建输出目录:033[0m033[1;31m$output_dir033[0m"
  mkdir $output_dir
else
  echo -e "033[1;32m输出目录:033[0m033[1;31m$output_dir033[0m"
fi
#遍历各bilibili版本缓存目录
for bili in tv.danmaku.bili com.bilibili.app.in com.bilibili.app.bule
do
  #判断各bilibili是否有缓存
  if [ -d "/storage/emulated/0/Android/data/$bili/download/" ]; then
	#定义bilibili缓存目录
	bili_dir="/storage/emulated/0/Android/data/$bili/download/"
	#获取bilibili缓存目录
	cache_dir=$(ls $bili_dir)
	echo -e "t033[1;35m检测到 $bili 中有缓存033[0m"
  else
	echo -e "t033[1;34m检测到 $bili 中没有缓存033[0m"
  fi
done
#定义bilibili缓存目录
#bili_dir="/storage/emulated/0/Android/data/tv.danmaku.bili/download/"
#获取bilibili缓存目录
#cache_dir=$(ls $bili_dir)
#输出bilibili缓存目录
look_dir()
{
  i=0
  title_dir="t033[1;35m$((i++)):033[0m033[1;35m全部输出033[0m"
  for cache in $cache_dir; do
    video_dir=$(ls $bili_dir$cache)
    video1=`echo $video_dir | awk '{print $1}'`
    title=`jq -r '.title' $bili_dir$cache/$video1/entry.json`
    title=${title//[[:space:]]/_}
    title_dir+="nt033[1;35m$((i++)):033[0m033[1;37m$title033[0m"
  done
  title_dir+="nt033[1;35m*:033[0m033[1;31m按回车键退出033[0m"
  echo -e $title_dir
}
#输入一个数字
read_n()
{
  read -p "`echo -e "033[1;32m请选择一个视频:033[0m"`" id
  case $id in
    0)
      echo -e "033[1;31m还没有开发哦 033[0m"
	  ;;
    [[:digit:]])
      cache=`echo $cache_dir | awk -v i=$id '{print $i}'`
	  video_dir=$(ls $bili_dir$cache)
	  video1=`echo $video_dir | awk '{print $1}'`
	  title=`jq -r '.title' $bili_dir$cache/$video1/entry.json`
	  title=${title//[[:space:]]/_}
	  title=${title_}
	  #if [ ! -d "$bili_dir$cache/" ];then
	  #创建视频分类目录
	  if [ ! -d "$output_dir$title/" ]; then
		echo -e "033[1;32m创建目录:033[0m033[1;31m$title033[0m"
		mkdir $output_dir$title
	  else
		echo -e "033[1;32m目录:033[0m033[1;31m$title033[0m033[1;32m已存在033[0m"
	  fi
	  #blv番剧输出
	  story()
	  {
		for video in $video_dir; do
		  #获取索引
		  index=`jq -r '.ep.index' $bili_dir$cache/$video/entry.json`
		  #获取标题
		  index_title=`jq -r '.ep.index_title' $bili_dir$cache/$video/entry.json`
		  index_title=${index_title//[[:space:]]/_}
		  index_title=${index_title_}
		  #判断$index不等于任意大小写字母
		  if [[ ! $index =~ [[:alpha:]] ]]; then
			#判断$index是否小于10
			if [ $index -lt 10 ]; then
			  #判断是否输出过
			  if [ ! -f $output_dir$title/第0$index话『$index_title』.mp4 ]; then
				echo -e "t033[1;32m输出第033[0m033[1;31m$index033[0m033[1;32m个视频033[0m"
				#判断后缀是.m4s还是.blv
				if [ -f $bili_dir$cache/$video/*/video.m4s ]; then
				  ffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/第0$index话『$index_title』.mp4
				else
				  ffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/第0$index话『$index_title』.mp4
				fi
				echo -e "t033[1;32m视频033[0m033[1;31m第0$index话『$index_title』.mp4033[0m033[1;32m合成完成033[0m"
			  else
				echo -e "t033[1;31m第0$index话『$index_title』.mp4033[0m033[1;32m已存在033[0m"
			  fi
			else
			  #判断是否输出过
			  if [ ! -f $output_dir$title/第$index话『$index_title』.mp4 ]; then
				echo -e "t033[1;32m输出第033[0m033[1;31m$index033[0m033[1;32m个视频033[0m"
				#判断后缀是.m4s还是.blv
				if [ -f $bili_dir$cache/$video/*/video.m4s ]; then
				  ffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/第$index话『$index_title』.mp4
				else
				  ffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/第$index话『$index_title』.mp4
				fi
				echo -e "t033[1;32m视频033[0m033[1;31m第$index话『$index_title』.mp4033[0m033[1;32m合成完成033[0m"
			  else
				echo -e "t033[1;31m第$index话『$index_title』.mp4033[0m033[1;32m已存在033[0m"
			  fi
			fi
		  else
			#判断是否输出过
			if [ ! -f $output_dir$title/第$index话『$index_title』.mp4 ]; then
			  echo -e "t033[1;32m输出第033[0m033[1;31m$index033[0m033[1;32m个视频033[0m"
			  #判断后缀是.m4s还是.blv
			  if [ -f $bili_dir$cache/$video/*/video.m4s ]; then
				ffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/第$index话『$index_title』.mp4
			  else
				ffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/第$index话『$index_title』.mp4
			  fi
			  echo -e "t033[1;32m视频033[0m033[1;31m第$index话『$index_title』.mp4033[0m033[1;32m合成完成033[0m"
			else
			  echo -e "t033[1;31m第$index话『$index_title』.mp4033[0m033[1;32m已存在033[0m"
			fi
		  fi
		done
	  }
	  #blv肥皂剧输出
	  soap()
	  {
		for video in $video_dir; do
		  page=`jq -r '.page_data.page' $bili_dir$cache/$video/entry.json`
		  part=`jq -r '.page_data.part' $bili_dir$cache/$video/entry.json`
		  part=${part//[[:space:]]/_}
		  part=${part_}
		  #判断$page不等于任意大小写字母
		  if [[ ! $page =~ [[:alpha:]] ]]; then
			#判断$page是否小于10
			if [ $page -lt 10 ]; then
			  #判断是否输出过
			  if [ ! -f $output_dir$title/$part.mp4 ]; then
				echo -e "t033[1;32m输出第033[0m033[1;31m$page033[0m033[1;32m个视频033[0m"
				#判断后缀是.m4s还是.blv
				if [ -f $bili_dir$cache/$video/*/video.m4s ]; then
				  ffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/$part.mp4
				else
				  ffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/$part.mp4
				fi
				echo -e "t033[1;32m视频033[0m033[1;31m$part.mp4033[0m033[1;32m合成完成033[0m"
			  else
				echo -e "t033[1;31m$part.mp4033[0m033[1;32m已存在033[0m"
			  fi
			else
			  #判断是否输出过
			  if [ ! -f $output_dir$title/$part.mp4 ]; then
				echo -e "t033[1;32m输出第033[0m033[1;31m$page033[0m033[1;32m个视频033[0m"
				#判断后缀是.m4s还是.blv
				if [ -f $bili_dir$cache/$video/*/video.m4s ]; then
				  ffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/$part.mp4
				else
				  ffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/$part.mp4
				fi
				echo -e "t033[1;32m视频033[0m033[1;31m$part.mp4033[0m033[1;32m合成完成033[0m"
			  else
				echo -e "t033[1;31m$part.mp4033[0m033[1;32m已存在033[0m"
			  fi
			fi
		  else
			#判断是否输出过
			if [ ! -f $output_dir$title/$part.mp4 ]; then
			  echo -e "t033[1;32m输出第033[0m033[1;31m$page033[0m033[1;32m个视频033[0m"
			  #判断后缀是.m4s还是.blv
			  if [ -f $bili_dir$cache/$video/*/video.m4s ]; then
				ffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/$part.mp4
			  else
				ffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/$part.mp4
			  fi
			  echo -e "t033[1;32m视频033[0m033[1;31m$part.mp4033[0m033[1;32m合成完成033[0m"
			else
			  echo -e "t033[1;31m$part.mp4033[0m033[1;32m已存在033[0m"
			fi
		  fi
		done
	  }
	  #判断视频类型
	  if [[ $cache == s* ]]; then
		echo -e "t033[1;37m视频类型:番剧033[0m"
		story
	  else
		echo -e "t033[1;37m视频类型:肥皂剧033[0m"
		soap
	  fi
	  ;;
    *)
      echo -e "033[1;31mExit033[0m"
      exit
  esac
}
#运行脚本
for((;;))
do
  look_dir
  read_n
done
#文件名过滤
dir_filtration()
{
  name=${name//[[:space:]]/_}
  return $name
}

本文为原创文章——未经作者授权禁止转载


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值