首页 > 编程语言 > 详细

Python 简易下载m3u8 视频

时间:2020-11-02 16:39:56      阅读:33      评论:0      收藏:0      [点我收藏+]
import requests,re
import sys,time
import os
import numpy as np
import glob

work_dir = os.getcwd()
#print(work_dir)

# 用来保存ts文件
file_dir = os.path.join(work_dir,file_tmp)

if not os.path.exists(file_dir):
    os.mkdir(file_dir)


def savefile(file_url):
    # 配置headers防止被墙,一般问题不大
    headers = {
        user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36
    }

    r = requests.get(file_url, headers=headers)
    # 合成带有hls的m3u8地址
    if r.text.split(\n)[-1] == ‘‘:
        hls_mark = r.text.split(\n)[-2]  # 以防\n结尾
    else:
        hls_mark = r.text.split(\n)[-1]
    url_m3u8_hls = file_url.replace(index.m3u8, hls_mark)
    file_m3u8 = url_m3u8_hls.split(/)[-1]
    duqu(url_m3u8_hls,file_m3u8)
    print(url_m3u8_hls)

    ‘‘‘
    if r.status_code == 200:
        with open(file_name, ‘wb‘) as f:
            f.write(r.content)
    ‘‘‘
def duqu(index,file_m3u8):
    # 配置headers防止被墙,一般问题不大
    headers = {
        user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36
    }

    r = requests.get(index, headers=headers)
    with open(file_tmp/+file_m3u8, wb) as f:
        f.write(r.content)
        f.close()
    xieru(file_m3u8,index)
def xieru(file_m3u8,index):
    with open(file_tmp/+file_m3u8,r) as f:
        r = f.read()
        f.close()
    # 合成带有hls的m3u8地址
    # iter_lines得到的是bytesstring
    text_bytes = r.split(\n)
    # 转化成正常string
    #text_string = [i.decode(‘utf-8‘) for i in text_bytes]
    # 筛选以.ts结尾的行
    # 有些情况下可能是以其他格式的文件,比如png,下载后修改后缀即可
    # ts_name = [i for i in text_string if i.endswith(‘.ts‘)]
    ts_name = [i for i in text_bytes if  i.startswith(#EXTINF)]
    ts_neirong = [i for i in text_bytes if not i.startswith(#)]
    ts_neirong.pop()
    #xiazai(ts_neirong,index)
    #print(ts_neirong)

    if # in ts_name:
        # 部分ts文件名中带有路径信息,只保留文件名即可
        #ts_name = [i.split(‘/‘)[-1] for i in ts_name]
        # 筛选带有时间的行
        url_xiazai = ts_name.replace(#EXTINF:, ‘‘)

        print(ts_time[:3])
def xiazai(ts_neirong,index):
    # 配置headers防止被墙,一般问题不大
    headers = {
        user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36
    }
    for i in range(len(ts_neirong)):
        hls_mark = index.split(/)[-1]
        url_xiazai = index.replace(hls_mark, ts_neirong[i])
        print(url_xiazai)
        r = requests.get(url_xiazai, headers=headers)
        with open(‘file_tmp/‘+ts_neirong[i], ‘wb‘) as f:
            f.write(r.content)
            f.close()
url= http://iqiyi.cdn9-okzy.com/20200907/15137_ed25d8c5/index.m3u8 #输入m3u8

savefile(url)

 

Python 简易下载m3u8 视频

原文:https://www.cnblogs.com/aotumandaren/p/13914560.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!