# 获取第二层m3u8并返回所有ts文件的url列表 defget_videos(url): # 第二层m3u8 resp = requests.get(url=url, headers=headers) t = [s.strip() for s in resp.text.split("\n") if s] m3u8 = "https://v11.fentvoss.com/sdv11/202406/06/x6PX25F8h83/video/" + t[-1] # 从m3u8中解析url resp = requests.get(url=m3u8, headers=headers) video_urls = [s.strip() for s in resp.text.split("\n") if s andnot s.startswith("#")] return video_urls[:50] #测试,只下载前五十个视频
# 异步下载视频,保存为name asyncdefdownload_a_video(url, name): asyncwith semaphore: asyncwith aiofiles.open(name, mode="wb") as f: asyncwith aiohttp.ClientSession() as session: asyncwithawait session.get(url=url, headers=headers) as resp: await f.write(await resp.content.read())
# 通过视频url列表下载视频 asyncdefdownload_videos(url): tasks = [] #下载视频 for i inrange(len(url)): video_url = url[i] file_name = f"test/{i}.ts"