Python 简易下载m3u8 整理版

import requests
import os


class xiazai():
    def __init__(self,url):
        self.url = url
        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)
        self.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'
        }
        self.savefile(self.url)

    def savefile(self, file_url):

        r = requests.get(file_url, headers=self.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]
        self.duqu(url_m3u8_hls)
        #print(url_m3u8_hls)

    def duqu(self,url_m3u8_hls):
        r = requests.get(url_m3u8_hls, headers=self.headers).text
        text_bytes = r.split('\n')
        # 筛选以.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()
        self.xiazai(ts_neirong,url_m3u8_hls)
        # print(ts_neirong)

    def xiazai(self,ts_neirong, url_m3u8_hls):

        for i in range(len(ts_neirong)):
            hls_mark = url_m3u8_hls.split('/')[-1]
            url_xiazai = url_m3u8_hls.replace(hls_mark, ts_neirong[i])
            print(url_xiazai)
            r = requests.get(url_xiazai, headers=self.headers)
            with open('file_tmp/'+ts_neirong[i], 'wb') as f:
f.write(r.content) f.close() if __name__=='__main__': xiazai('http://iqiyi.cdn9-okzy.com/20200907/15137_ed25d8c5/index.m3u8')

 

posted @ 2020-11-02 15:35  凹凸曼大人  阅读(643)  评论(0)    收藏  举报