import multiprocessing
import os
import requests
import re
from multiprocessing import Pool# 打开能播放你喜欢资源的网址,按F12,找到浏览器里XHR选项里m3u8文件,右键复制网址,记得选response 里面很多ts网址的。path = r'E:newfilm1\' # 这个是你要保存的文件位置,可自定义,记得\这个不要丢了,写这里是方便下面代码中不写。
requests.DEFAULT_RETRIES = 5 # 增加重试连接次数
s = requests.session()
s.keep_alive = False # 这一段是度娘所得,免得报错def get_tslist(m3u8):response = (m3u8).textts_list = re.findall('.*?.ts', response) # 此处正则可能会修改,看具体情况。return ts_listdef check_file(ts_list):filelist = os.listdir(path)shengyu_list = ts_list[:]# TS文件前面的前缀,此处偷懒了,看了直接加的,反正都一样wangzhi = '/'for file in filelist:if file in ts_list:ve(file)return shengyu_listdef down_ts(ts):# TS文件前面的前缀,此处偷懒了,看了直接加的,反正都一样qianzhui = '/'res = (qianzhui + ts).contenttry:with open(path + ts, 'wb')as f:f.write(res)except Exception as e:print('出现错误:%s', e.args)def rename_ts(ts_list):dict = {}k = 1for ts in ts_list:ts = ts.split('/')[-1]dict[ts] = '{:04d}'.format(k) + '.ts'k += 1for file in os.listdir(path):if file in dict.keys():os.rename(path + file, path + (file))def hebing(name):COMD1 = f'copy /b {path}*.ts {path}{name}.mp4'COMD2 = f'del {path}*.ts'os.system(COMD1)os.system(COMD2)if __name__ == '__main__':m3u8 = '.m3u8'ts_list = get_tslist(m3u8)filelist = check_file(ts_list) # 防止由于网络或者资源的原因,没下载成功可以再次运行继续下载。pool = Pool(8)pool.map(down_ts, filelist) # 多线程下载pool.close()pool.join()rename_ts(ts_list) # 批量命名按顺序排列,防止合成的时候影片不连续。hebing('让子弹飞测试版') # 合成mp4文件,删除其他的ts文件。
本文发布于:2024-01-31 13:56:24,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170668058529013.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |