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视频的更多相关文章

  1. python3自动下载优酷视频小程序

    我们一般都在优酷里看一些好玩的视频,有时候看到精彩的就想下载到本地保存起来留作纪念,在win下可以用维棠等软件下载,但苦了用linux的孩子们.尽管chrome和firefox的一些插件可以下载,但有 ...

  2. Python 爬虫实例(13) 下载 m3u8 格式视频

    Python  requests  下载  m3u8 格式    视频 最近爬取一个视频网站,遇到  m3u8 格式的视频需要下载. 抓包分析,视频文件是多个  ts 文件,什么是 ts文件,请去百度 ...

  3. 老司机图文教程教你如何免费下载腾讯视频的视频mp4(直接下载到,不用qlv格式转mp4格式,亲测)

    关于如何下载到腾讯视频的mp4这个问题,大家想必经过多翻搜索,都未必找到满意的答案吧. 下载微信公众号文章中引用的腾讯视频的方法也是一样适用本方法. 因为用腾讯视电脑客户端和手机APP下载到的都是QL ...

  4. 怎样下载YouTube 4K视频

    随着科技的进步,人们生活水平的提高,视频的清晰度也越来越高,以前那个观看模糊视频的时代已经一去不复返了.从最开始的720P和1080P高清视频,再到2K,进而到如今的4K(即3840×2160)极清视 ...

  5. 使用终端批量下载 B 站视频

    需要使用一个叫做 you-get 的命令行程序 可以通过 Homebrew 安装(macOS), 安装命令为 brew install you-get, 其他平台的安装可参考 Github 主页: s ...

  6. you-get下载B站视频

    you-get下载B站视频 库存 you-get介绍 https://github.com/soimort/you-get you-get是一个命令行工具,可以下载知名网站的视频 支持的网站有  ht ...

  7. 使用js脚本批量下载慕课网视频

    慕课网(http://www.imooc.com/)上有很多不错的视频,当然我不是来给慕课网打广告的,我本人学习过很多慕课网上的免费的视频. 在线看如果网速慢时,可能会有卡顿,没网时无法观看.所有说下 ...

  8. Linux合并文件、去除重复行的命令

    Linux合并文件命令: awk '{printf("%s\n",$0)}' YQ-*101?.txt >  123.txt   linux去除重复行命令:cat YQ-10 ...

  9. Linux下校验下载文件的完整性(MD5,SHA1,PGP)

    查看: Linux下校验下载文件的完整性(MD5,SHA1,PGP) http://blog.useasp.net/archive/2014/03/29/use-md5-sha1-or-pgp-to- ...

  10. 下载的youtube视频

    youtube 视频下载方法[详解]   1.打开网址: http://kej.tw/flvretriever/. 2.输入要下载的youtube视频的网址. 3.点击右侧RETRIEVE NOW ! ...

随机推荐

  1. AC 自动机上 DP

    \(\text{Analysis}\) 做了几道题后发现挺套路的 涉及统计或构造文本串与众多模式串匹配产生贡献或存在限制时的 \(DP\) 一般设 \(f[i][j]\) 表示考虑到文本串第 \(i\ ...

  2. JZOJ 1082. 【GDOI2005】选址

    \(\text{Problem}\) 很久以前,在世界的某处有一个形状为凸多边形的小岛,岛上的居民们决定建一个祭坛,居民们任务祭坛的位置离岛的顶点处越远越好. 你的任务是求凸多边形内一点,使其与各顶点 ...

  3. Linux下文件实时自动同步备份

    转载简书: https://www.jianshu.com/p/fc2f3ec661c0

  4. 达标式减量策略又一例证(STRASS研究)

    标签: 类风湿关节炎; T2T策略; TNF抑制剂; 药物减停; STRASS研究 达标式减量策略又一例证(STRASS研究): RA维持期个体化减停TNF拮抗剂是可能的 电邮发布日期: 2016年1 ...

  5. 批量下载Landsat遥感影像的方法

      本文介绍在USGS网站批量下载Landsat系列遥感影像的方法.   首先,打开EarthExplorer的官网,首先完成注册与登录.   接下来,点击左侧"Search Criteri ...

  6. SpringMVC基础源码分析(一)

    实现Controller的三种方式分析 每种实现的方式对应的HanderAdapter都不同. 实现Controller接口 该接口对应的HanderAdapter为SimpleControllerH ...

  7. 微信小程序(开发某些方式)

    1.开发工具:微信小程序开发工具(需要appid登录)2.调试:可使用微信开发者工具预览(用真机测试)3.真机调试:微信开发者工具真机调试(可打印以及查看网络等)4.扫一扫功能:   1.小程序里面可 ...

  8. bash编辑功能,在命令行里编辑快捷键

    快捷键 描述 ctrl + A 跳到命令行的开头 ctrl + E 跳到命令行的尾巴上 ctrl + U  将光标处以命令行开头的内容清除 ctrl + K 将光标处到命令行尾巴处的内容清除 ctrl ...

  9. Mysql数据库基础第七章:流程控制结构

    Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...

  10. NFS服务器搭建与autofs自动挂载

    一.NFS文件详解 1. /data/            表示需要共享的目录. 2. IP                表示允许哪个客户端访问. 3. IP                后括号 ...