热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

自从3.0的大更新后,脚本好似更加的智能了,使用者没有那么多的需要修改脚本的步骤了,但是3.0版的文章被知乎删除了不过没关系,
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 ]; thenecho -e "033[1;31m正在安装相关依赖...033[0m"apt install vim gawk sed grep jq ffmpeg -yecho -e "033[1;31m所需依赖安装完毕033[0m"
elseecho -e "033[1;31m没有依赖缺失...033[0m"
fi
#定义bilibili输出目录
output_dir="/storage/emulated/0/Video/"
if [ ! -d "$output_dir" ]; thenecho -e "033[1;32m创建输出目录:033[0m033[1;31m$output_dir033[0m"mkdir $output_dir
elseecho -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"elseecho -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=0title_dir="t033[1;35m$((i++)):033[0m033[1;35m全部输出033[0m"for cache in $cache_dir; dovideo_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"donetitle_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"`" idcase $id in0)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/" ]; thenecho -e "033[1;32m创建目录:033[0m033[1;31m$title033[0m"mkdir $output_dir$titleelseecho -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是否小于10if [ $index -lt 10 ]; then#判断是否输出过if [ ! -f $output_dir$title/第0$index话『$index_title』.mp4 ]; thenecho -e "t033[1;32m输出第033[0m033[1;31m$index033[0m033[1;32m个视频033[0m"#判断后缀是.m4s还是.blvif [ -f $bili_dir$cache/$video/*/video.m4s ]; thenffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/第0$index话『$index_title』.mp4elseffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/第0$index话『$index_title』.mp4fiecho -e "t033[1;32m视频033[0m033[1;31m第0$index话『$index_title』.mp4033[0m033[1;32m合成完成033[0m"elseecho -e "t033[1;31m第0$index话『$index_title』.mp4033[0m033[1;32m已存在033[0m"fielse#判断是否输出过if [ ! -f $output_dir$title/第$index话『$index_title』.mp4 ]; thenecho -e "t033[1;32m输出第033[0m033[1;31m$index033[0m033[1;32m个视频033[0m"#判断后缀是.m4s还是.blvif [ -f $bili_dir$cache/$video/*/video.m4s ]; thenffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/第$index话『$index_title』.mp4elseffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/第$index话『$index_title』.mp4fiecho -e "t033[1;32m视频033[0m033[1;31m第$index话『$index_title』.mp4033[0m033[1;32m合成完成033[0m"elseecho -e "t033[1;31m第$index话『$index_title』.mp4033[0m033[1;32m已存在033[0m"fifielse#判断是否输出过if [ ! -f $output_dir$title/第$index话『$index_title』.mp4 ]; thenecho -e "t033[1;32m输出第033[0m033[1;31m$index033[0m033[1;32m个视频033[0m"#判断后缀是.m4s还是.blvif [ -f $bili_dir$cache/$video/*/video.m4s ]; thenffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/第$index话『$index_title』.mp4elseffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/第$index话『$index_title』.mp4fiecho -e "t033[1;32m视频033[0m033[1;31m第$index话『$index_title』.mp4033[0m033[1;32m合成完成033[0m"elseecho -e "t033[1;31m第$index话『$index_title』.mp4033[0m033[1;32m已存在033[0m"fifidone}#blv肥皂剧输出soap(){for video in $video_dir; dopage=`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是否小于10if [ $page -lt 10 ]; then#判断是否输出过if [ ! -f $output_dir$title/$part.mp4 ]; thenecho -e "t033[1;32m输出第033[0m033[1;31m$page033[0m033[1;32m个视频033[0m"#判断后缀是.m4s还是.blvif [ -f $bili_dir$cache/$video/*/video.m4s ]; thenffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/$part.mp4elseffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/$part.mp4fiecho -e "t033[1;32m视频033[0m033[1;31m$part.mp4033[0m033[1;32m合成完成033[0m"elseecho -e "t033[1;31m$part.mp4033[0m033[1;32m已存在033[0m"fielse#判断是否输出过if [ ! -f $output_dir$title/$part.mp4 ]; thenecho -e "t033[1;32m输出第033[0m033[1;31m$page033[0m033[1;32m个视频033[0m"#判断后缀是.m4s还是.blvif [ -f $bili_dir$cache/$video/*/video.m4s ]; thenffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/$part.mp4elseffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/$part.mp4fiecho -e "t033[1;32m视频033[0m033[1;31m$part.mp4033[0m033[1;32m合成完成033[0m"elseecho -e "t033[1;31m$part.mp4033[0m033[1;32m已存在033[0m"fifielse#判断是否输出过if [ ! -f $output_dir$title/$part.mp4 ]; thenecho -e "t033[1;32m输出第033[0m033[1;31m$page033[0m033[1;32m个视频033[0m"#判断后缀是.m4s还是.blvif [ -f $bili_dir$cache/$video/*/video.m4s ]; thenffmpeg -i $bili_dir$cache/$video/*/video.m4s -i $bili_dir$cache/$video/*/audio.m4s -c copy $output_dir$title/$part.mp4elseffmpeg -i $bili_dir$cache/$video/*/0.blv -c copy $output_dir$title/$part.mp4fiecho -e "t033[1;32m视频033[0m033[1;31m$part.mp4033[0m033[1;32m合成完成033[0m"elseecho -e "t033[1;31m$part.mp4033[0m033[1;32m已存在033[0m"fifidone}#判断视频类型if [[ $cache == s* ]]; thenecho -e "t033[1;37m视频类型:番剧033[0m"storyelseecho -e "t033[1;37m视频类型:肥皂剧033[0m"soapfi;;*)echo -e "033[1;31mExit033[0m"exitesac
}
#运行脚本
for((;;))
dolook_dirread_n
done
#文件名过滤
dir_filtration()
{name=${name//[[:space:]]/_}return $name
}


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





推荐阅读
  • 对于希望在未越狱的iOS设备上修改Hosts文件的苹果用户来说,了解文件的具体位置和操作步骤至关重要。本文将详细介绍如何通过安装最新版本的iTunes来实现这一目标,并提供实用的操作指南,帮助用户轻松完成Hosts文件的编辑。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
author-avatar
书苑幽香
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有