当前位置:首页 > Python教程 > python技巧

Python 简易下载m3u8 视频

            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)

ifnot 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 ifnot 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)

 

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


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐