1. 程式人生 > 實用技巧 >Python 簡易下載m3u8 視訊

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

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)