linux合并bilibili下载的blv视频
B站下载的学习视频,用python+sh合并处理,自己mark一下
手机bilibili下载了视频,想要搞到电脑上看,结果发现下载下来的都是文件夹里的一堆片段,仔细一看还是 .blv,脑那样啊! 在虚拟机里边用win的客户端试着下载了一个视频,发现是 .flv,看着好像,结果就是。
blv修改成flv就可以了,它就是flv格式的。遇到的主要为问题就是文件名最好不要有空格,linux下空格文件名处理容易出问题。还有os.chdir()是否一定需要绝对路径没有研究,刚开始写的是相对路径,结果有问题
为了排除问题修改为绝对路径,但是相对路径好像也可以,当然绝对路径可定不会出问题。
#!/usr/bin/env python
# coding=utf-8 import os
import sys
import json
import os.path def get_video_name(d):
''' b站下载的视频都分割成小片段放在文件夹里,第一层文件夹中有entry.json文件,记录了视频名称 '''
if os.path.exists('entry.json'):
with open('entry.json', 'r') as f:
data = json.load(f)
return data['page_data']['part'] def merge_flv(d, video_name, output_path):
try:
os.chdir(list(os.walk(d))[1][0])
os.system("bash ~/Desktop/temp/merge.sh %s %s" % (video_name.replace(' ', '_'), output_path))
os.chdir(os.pardir)
except Exception as e:
print("%s Bash脚本执行失败!\n" % (base_path + '/' + d), e) def get_all_videos(base_path, output_path):
dirs = os.listdir(base_path)
for d in dirs:
try:
os.chdir(base_path + '/' + d)
video_name = get_video_name(d)
merge_flv(base_path + '/' + d, video_name, output_path)
except Exception as e:
print("%s不是文件夹或者无权限进入!\n" % (base_path + '/' + d), e) if __name__ == "__main__":
''' 如果没有在脚本中指定路径,可以在脚本参加中指定,参数1:根目录,参数2:输入路径 '''
base_path = ""
output_path = ""
if not base_path: base_path = sys.argv[1]
if not output_path: output_path = sys.argv[2]
get_all_videos(base_path, output_path)
合并处理用的是linux下的ffmpeg工具,参考的(照抄这里的:http://www.songyawei.cn/content/4015)
#!/bin/bash # 设定脚本需要传入两个参数,第一个是合并的视频名,第二个是合并的视频存放路径
# 修改后缀blv为flv
rename .blv .flv *.blv &&\ # bash获取当前目录下的所有flv文件
for f in *.flv; do echo "file $f" >> mylist.txt; done # 合并flv文件
ffmpeg -f concat -i mylist.txt -c copy "$1.flv" &&\ # 经合并生成的文件移动到指定的文件夹
mv "$1.flv" $2
linux合并bilibili下载的blv视频的更多相关文章
- python3自动下载优酷视频小程序
我们一般都在优酷里看一些好玩的视频,有时候看到精彩的就想下载到本地保存起来留作纪念,在win下可以用维棠等软件下载,但苦了用linux的孩子们.尽管chrome和firefox的一些插件可以下载,但有 ...
- Python 爬虫实例(13) 下载 m3u8 格式视频
Python requests 下载 m3u8 格式 视频 最近爬取一个视频网站,遇到 m3u8 格式的视频需要下载. 抓包分析,视频文件是多个 ts 文件,什么是 ts文件,请去百度 ...
- 老司机图文教程教你如何免费下载腾讯视频的视频mp4(直接下载到,不用qlv格式转mp4格式,亲测)
关于如何下载到腾讯视频的mp4这个问题,大家想必经过多翻搜索,都未必找到满意的答案吧. 下载微信公众号文章中引用的腾讯视频的方法也是一样适用本方法. 因为用腾讯视电脑客户端和手机APP下载到的都是QL ...
- 怎样下载YouTube 4K视频
随着科技的进步,人们生活水平的提高,视频的清晰度也越来越高,以前那个观看模糊视频的时代已经一去不复返了.从最开始的720P和1080P高清视频,再到2K,进而到如今的4K(即3840×2160)极清视 ...
- 使用终端批量下载 B 站视频
需要使用一个叫做 you-get 的命令行程序 可以通过 Homebrew 安装(macOS), 安装命令为 brew install you-get, 其他平台的安装可参考 Github 主页: s ...
- you-get下载B站视频
you-get下载B站视频 库存 you-get介绍 https://github.com/soimort/you-get you-get是一个命令行工具,可以下载知名网站的视频 支持的网站有 ht ...
- 使用js脚本批量下载慕课网视频
慕课网(http://www.imooc.com/)上有很多不错的视频,当然我不是来给慕课网打广告的,我本人学习过很多慕课网上的免费的视频. 在线看如果网速慢时,可能会有卡顿,没网时无法观看.所有说下 ...
- Linux合并文件、去除重复行的命令
Linux合并文件命令: awk '{printf("%s\n",$0)}' YQ-*101?.txt > 123.txt linux去除重复行命令:cat YQ-10 ...
- Linux下校验下载文件的完整性(MD5,SHA1,PGP)
查看: Linux下校验下载文件的完整性(MD5,SHA1,PGP) http://blog.useasp.net/archive/2014/03/29/use-md5-sha1-or-pgp-to- ...
- 下载的youtube视频
youtube 视频下载方法[详解] 1.打开网址: http://kej.tw/flvretriever/. 2.输入要下载的youtube视频的网址. 3.点击右侧RETRIEVE NOW ! ...
随机推荐
- 分布式共识算法随笔 —— 从 Quorum 到 Paxos
分布式共识算法随笔 -- 从 Quorum 到 Paxos 本文主要参考各类英文文献,部分专业术语翻译较为生硬,望谅解. 概览: 为什么需要共识算法? 昨夜西风凋碧树,独上高楼,望尽天涯路 复制(Re ...
- js原型链污染详解
前言 之前打某湖论剑,两道js的题,给我整懵逼了,发现以前都没对js做过多少研究,趁着被毒打了,先研究一波js原型链,未雨绸缪. 基础 protype 首先我们研究js原型链,得搞明白原型是什么,这里 ...
- async异步编程屏蔽凡人
为提高效率与增加逼格,墙裂建议引入async异步编程,这不比基于threading的线程.基于multiprocessing的进程香?这些大家伙太重量级了,代码又啰里啰唆的一点也不pythonic,只 ...
- CentOS7加入AD域(winbind)
作者:独笔孤行 官网: http://anyamaze.com 公众号:云实战 前言 AD域(Active Directory)是Windows服务器的活动目录,在目录中可以收录公司的电脑账 ...
- ubuntu 一键安装lnmp环境
转载csdn: ubuntu 一键安装lnmp环境_手艺人小在的博客-CSDN博客 注意:采用编译安装方法,花费时间较长,这个只有稳定版的,没有高版本的. 转载vpsgo: Linux上一键安装LNM ...
- CSS 定位position
.link span { position: absolute; top: 0; left: 50%; transform: translateX(-50%); }
- java数据结构与算法(day2)--简单排序
模式:设计api实现api 简单排序 举例(商品排序) 1.1Comparable接口介绍(排序算法更有通用性:对象排序) 创建对象,并且生成豆子.创建Comparable接口 1 package c ...
- JOI 公園 (JOI Park)
原题链接:AT2434 JOI 公園 (JOI Park) 写完之后看到题解区的三分吓了一跳 分析与解答 由于最终答案与边权有关,所以不妨考虑判断一条边是否会对答案有贡献. 记 \(dis\) 表示以 ...
- vue-element-admin框架连接yapi配置vue.config.js
devServer: { host:'localhost', port:port, proxy:{ [process.env.VUE_APP_BASE_API + '/admin']: { //配置p ...
- plugin的原理
plugin插件的原理 扩展webpack, 加入自定义的构建行为 webpack内部的钩子 hooks tap: 可以注册同步钩子和异步钩子 tapAsync: 回调方式注册异步钩子 tapProm ...