python下载大文件mp4_python 实现视频流下载保存MP4的方法

本文介绍了一个用于下载并合并M3U8格式视频的Python脚本。该脚本能够从指定URL抓取TS分段文件,对其进行排序,并最终合并成完整的视频文件。此外,还提供了一些实用功能,如检查存储路径、创建目录等。
摘要由CSDN通过智能技术生成

# -*- coding:utf-8 -*-

import sys

import os

from glob import glob

import requests

reload(sys)

sys.setdefaultencoding("utf-8")

file_path=os.getcwd()

#获取需要转换的路径

def get_user_path(argv_dir):

if os.path.isdir(argv_dir):

return argv_dir

elif os.path.isabs(argv_dir):

return argv_dir

else:

return False

#对转换的TS文件进行排序

def get_sorted_ts(user_path):

ts_list = glob(os.path.join(user_path,'*.ts'))

boxer = []for ts in ts_list:

if os.path.exists(ts):

# print(os.path.splitext(os.path.basename(ts)))

file,_ = os.path.splitext(os.path.basename(ts))

print file

boxer.append(file)

# boxer.append(int(file))

boxer.sort()

print(boxer)

return boxer

#文件合并

def convert_m3u8(file_path,boxer,o_file_name):

print u"开始拼接视频"

new_path=file_path+"/"+u"视频"

try:

os.chdir(new_path)

except Exception, e:

os.mkdir(new_path)

tmp = []for ts in boxer:

print ts

tmp.append(str(ts)+'.ts')

cmd_str = '+'.join(tmp)

exec_str = "copy /b "+cmd_str+' '+o_file_name

print("copy /b "+cmd_str+' '+o_file_name)

os.chdir(user_path)

os.system(exec_str)

print "go home path"

import shutil

shutil.move(o_file_name,new_path+"/"+o_file_name)

os.chdir(file_path)

reload(sys)

sys.setdefaultencoding('utf-8')

# 功能:爬取m3u8格式的视频

# 检查存储路径是否正常

def check_path(_path):

# 判断存储路径是否存在

if os.path.isdir(_path) or os.path.isabs(_path):

# 判断存储路径是否为空

if not os.listdir(_path):

return _path

else:

print u'>>>[-] 目标文件不为空,将清空目标文件,是否更换路径?'

flag = raw_input('>>>[*] Yes:1 No:2 n>>>[+] [2]')

try:

if flag == '1':

_path = raw_input(unicode('>>>[+] 请输入目标文件路径。n>>>[+] ').encode('gbk'))

check_path(_path)

else:

# 清空存储路径

os.system('rd /S /Q ' + _path)

os.system('mkdir ' + _path)

return _path

except Exception as e:

print e

exit(0)

else:

os.makedirs(_path)

return _path

# 获取ts视频的爬取位置

def get_url(_url, _path):

all_url = _url.split('/')

url_pre = '/'.join(all_url[:-1]) + '/'

url_next = all_url[-1]

os.chdir(_path)

# 获取m3u8文件

m3u8_txt = requests.get(_url, headers = {'Connection':'close'})

with open(url_next, 'wb') as m3u8_content:

m3u8_content.write(m3u8_txt.content)

# 提取ts视频的url

movies_url = []_urls = open(url_next, 'rb')

for line in _urls.readlines():

if '.ts' in line:

movies_url.append(url_pre + line[:-1])

else:

continue

_urls.close()

return movies_url

# 爬取ts视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值