热门标签 | 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
}


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





推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
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社区 版权所有